计算机语言的种类非常多,总的来说可以分成 机器语言、汇编语言和高级语言 三大类。
机器语言 是指机器能直接识别的程序语言或指令代码(无须经过翻译,每个指令代码在计算机内部都有相应的电路来完成),或指不经过翻译即可被机器直接理解和接受的程序语言或指令代码。
通用的编程语言有两种形式:汇编语言和高级语言。
汇编语言 (Assembly Language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,又称符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。汇编语言的优点是显而易见的,用汇编语言能完成的操作不是一般高级语言能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言 是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程语言,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序,编写的程序称为源程序。
高级语言和汇编语言相比,不但将许多相关的机器指令合成为单条指令,而且去掉了与具体操作有关但与完成工作无关的细节,如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。高级语言是目前绝大多数编程者的选择。
1972年,美国贝尔实验室的丹尼斯·里奇(D. M. Ritchie)设计出了一种新的语言,命名为C语言。相对人类文明史及发展而言,C语言如刚出生的婴儿;而相对现代计算机发展史而言,C语言是一门古老的语言。为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,制定出了第一个完备的C语言标准,简称“C89”,也就是“ANSI C”。截至2020年,最新的C语言标准为2018年6月发布的“C18”。C语言属于计算机高级语言的一种,到目前为止,C语言依然是最受欢迎的计算机语言之一。
C语言是一门面向过程的、抽象化的通用程序设计语言。所谓面向过程就是分析出解决问题需要的步骤,然后用函数一步一步地实现这些步骤,这样在使用的时候一个一个依次调用就可以了。
C语言也是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试。C语言的处理和表现能力都非常强大,依靠其非常全面的运算符和多样的数据类型,程序开发人员可以轻易完成各种数据结构的构建,通过指针类型更可对内存进行直接寻址并对硬件进行直接操作。因此,C语言既能用于开发系统程序,又能用于开发应用软件。C语言具有如下主要特点。
C语言包含的控制语句仅有9种,保留字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,C语言的语句构成与硬件的关联较少,且C语言本身不提供与硬件相关的输入/输出、文件管理等功能,如需此类功能,则要配合编译系统所支持的各类库进行编程,故C语言拥有非常简洁的编译系统。所谓编译,就是将编程语言翻译成可执行的机器语言。
C语言是一种结构化的语言,提供的控制语句具有结构化的特征,如for语句、if...else语句和switch语句等。结构化的控制语句可用于实现函数的逻辑控制,方便面向过程的程序设计。
C语言包含的数据类型丰富,不仅包含传统的字符型、整型、浮点型、数组型等数据类型(但没有布尔型,即真假型),还包含其他编程语言所不具备的数据类型,其中以指针型数据使用最为灵活。因此,C语言可以通过编程对各种数据结构进行计算。
C语言包含34个运算符。赋值、括号等均作为运算符来操作,使C语言的程序表达式类型和运算符类型均非常丰富。
C语言不但具备高级语言的良好特性,又包含许多汇编等低级语言的优势,如C语言允许对硬件内存地址进行直接读写,以此实现汇编语言的主要功能,并可直接操作硬件,故其在系统软件编程领域有着广泛的应用。
C语言是面向过程的编程语言,用户只需要关注待解决问题本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需改动或仅需进行少量改动便可完成移植。这就意味着,在Windows系统的计算机上编写的C语言程序可在Linux系统的计算机上运行,从而减少了程序移植的工作量。
与其他高级语言相比,C语言可以生成高质量和高效率的目标代码,故通常用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。