1.1 计算机语言

  计算机语言是指用于人与计算机之间通信的语言。为了使电子计算机完成各项工作,就需要有一套用于编写计算机程序的数字、字符和语法规则,由这些字符和语法规则组成的计算机的各种指令(或各种语句),就是计算机能接受的语言。

1.1.1 机器语言

  机器语言是指一台计算机全部的指令集合。

  机器语言是由“0”和“1”组成的二进制数,是一串串由“0”和“1”组成的指令序列,可将这些指令序列交给计算机执行,这种语言就是机器语言。

  使用机器语言是非常痛苦的,程序员需要知道每个指令对应的“0”、“1”序列,靠记忆是一件不可能完成的工作。在程序运行过程中,如果出错需要修改,那更是难上加难。

  另外,每种类型计算机的指令系统各不相同,针对不同类型的计算机,完成相同功能的程序需要使用不同的指令系统编写程序。其实不少高级语言仍然没有解决类似的问题,但是Java的出现,在相当大的范围内解决了此问题,这就是Java的特性之一,即“一次编译,处处运行”。

  上面提到了机器语言的诸多问题,不过正是因为这些问题,也说明了机器语言的好处——针对特定类型计算机的机器语言运行效率最高。

  机器语言也是通常所说的第一代计算机语言。

1.1.2 汇编语言

  程序员使用机器语言编写程序是非常痛苦的,其中一个原因就是要记住每个指令对应的“0”、“1”序列,为了让程序员从大量的记忆工作中解脱出来,人们进行了一种有益的改进,用一些简洁的、有一定含义的英文字符串来替代特定指令的“0”、“1”序列。例如,用“MOV”代表数据传递、“DEC”代表数据减法运算。这种变革对程序员而言,犹如人们从在绳子上打结计数发展到使用数字符号计数,极大地提高了工作效率。这种程序设计语言就称为汇编语言,即第二代计算机语言。

  对于计算机而言,这些冰冷的机器是不懂“MOV”这类汇编语言的,计算机只认识“0”、“1”序列。这样,在计算机上就需要有一个专门的程序,负责把汇编语言翻译成二进制的机器语言,这种翻译程序就是汇编程序。

  汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过汇编语言指令采用了英文缩写的标识符,更容易识别和记忆。

  不论是机器语言还是汇编语言,其中每一个指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增等,要实现一个相对复杂的功能就需要非常多的步骤。例如,假设程序要完成一个“小张去传达室取回信件”的工作,作为程序员,只能使用“向前n米”、“向后n米”、“左转”、“右转”、“上n个台阶”、“下n个台阶”、“伸手”等指令,那么完成这样的工作,可能就需要几十个步骤了,工作量仍然很大。

1.1.3 高级语言

  从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,其接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上运行。

  经过努力,1954年,第一个完全脱离机器硬件的高级语言——FORTRAN诞生。目前,影响最大、使用最广泛的高级语言有Java、C、C++、C#。另外还有一些特殊类型的语言,包括智能化语言(LISP、Prolog、CLIPS、动态语言(Python、PHP、Ruby…)等。

  1.C语言

  提到高级语言,必须要重点介绍一下C语言。

  C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。1972年由美国贝尔实验室推出C语言。1978年以后,C语言先后被移植到大、中、小及微型机上。C语言非常强悍,使用C语言既可以编写不依赖计算机硬件的应用程序,也可以编写操作系统(在操作系统及需要对硬件进行操作的场合,用C语言明显优于其他高级语言)。C语言的应用范围广泛,单片机、嵌入式系统、二维动画、三维动画、游戏开发、数据业务处理等多方面都能看到它的身影。

  为了方便和马上要学习的Java语言进行比较,下面简要介绍C语言的一些重要特点。
  (1)C语言(习惯上称为中级语言)把高级语言的基本结构和语句与低级语言的实用性结合起来,它可以像汇编语言一样对位、字节和地址进行操作。
  (2)C语言使用指针直接进行靠近硬件的操作,对于程序员而言显得更加灵活,但同时也给程序带来了安全隐患。在构建Java语言时,就参考了C语言的诸多优势,但为了安全性考虑,取消了指针操作。

  2.C++语言

  C++语言是具有面向对象特性的C语言。

  面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。当今,程序开发思想已经全面从面向过程(C语言)分析、设计和编程发展到面向对象的模式。

  通过面向对象的方式,将现实世界的事务抽象成类和对象,帮助程序员实现对现实世界的抽象与建模。通过面向对象的方法,采用更利于人理解的方式对复杂系统进行分析、设计与编程。

  3.C#语言

  C#是一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#与Java惊人地相似(单一继承、接口、编译成中间代码再运行),就如同Java和C在基本语法上类似一样。在语言层面,C#语言是微软公司 .NET Windows网络框架的主角。

  和汇编语言相比,高级语言将许多硬件相关的机器指令合并成完成具体任务的单条高级语言,与具体操作相关的细节(如寄存器、堆栈等)被透明化,不需要程序员了解。程序员只要会操作单条高级语句,不需要深入掌握操作系统级别的细节,也可以开发出程序。

  高级语言也是通常所说的第三代计算机语言。

1.1.4 SQL语言

  结构化查询语言(Structured Query Language)简称SQL,它是一种数据库查询和编程的语言,用于存取数据以及查询、更新和管理关系数据库系统,已经成为关系型数据库普遍使用的标准。

  结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定数据的存放方法,也不需要用户了解具体的数据存放方式,所以不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能。