程序语言是用来定义计算机指令执行流程的形式化语言。每种程序语言都包含一整套词汇和语法规范。这些规范通常包括
数据类型和
数据结构、指令类型和指令控制、调用机制和
库函数以及不成文的规定(如递进书写、变量命名等)。
计算机语言与自然语言很相似,自然语言虽然方言很多,但是主体结构几千年来变化很少。近十多年来程序语言发展的成绩主要体现在设计框架和设计工具的改进方面。例如,微软公司的
.NET Framework框架中有超过1万个类和10万个方法(子程序)。例如,目前的程序集成开发环境(
IDE)包含了无数强大的功能,如指令彩色显示,指令和函数提示,错误提示,自动递进,自动收缩,集成调试器和编译器等。与此相比,程序语言本身的改进并不明显。
在程序语言发展历史中,语言抽象级别不断提高,语言表现力越来越强大.这样就可以用更少的代码完成更多的工作。早期程序员使用汇编语言编程,接着使用面向过程的程序语言(如Pascal、C等),然后发展到面向对象的程序语言(如C++、Java、C#等)。随着因特网的发展,网络动态程序语言(如PHP、Python等)得到了广泛应用,这种趋势目前还在继续发展。
程序语言的主要发展趋势是:
声明式编程风格,如Prolog、SQL,、函数式编程等;动态程序语言,如
PHP、
Python等;以及多核CPU环境下的并行编程,如UPC、Go等。随着程序语言的发展,各种语言之间的边界变得越来越模糊。
程序由多条语句组成,一个语句就是一条指令(可以包含多个操作)。语句有规定的关键字(命令)和语法结构,程序语言利用串行的方法编写程序语句。语言中的控制指令(如顺序、选择、循环、调用等)可以改变程序的执行流程,用来控制计算机的处理过程。
程序语言虽然千差万别,但是程序语言基本成分不外以下4种:一是数据成分,它用来描述程序中数据的类型,如
数值、
字符等;二是运算成分,它用来描述程序中所包含的各种运算,如四则运算、逻辑运算等;三是控制成分,它用来控制程序语句的执行流程,如选择、循环、调用等;四是传输成分,用来表达程序中数据的传输,如实参与形参、返回值等。
程序语言有多种分类方法,大部分程序语言都是算法描述型语言,如
C/
C++、
Java等,还有一部分是数据描述型语言,如HTML等标记语言。按照编程技术难易程度可分为低级语言(机器语言、汇编语言)和高级语言;按照程序语言设计风格可分为命令式语言(过程化语言)、结构化语言、面向对象语言、函数式语言、脚本语言等;按照语言应用领域可分为通用程序语言(GPPL)和专用程序语言(DSL);按照程序执行方式,可分为解释型语言(如JavaScript、Python、Perl、R等),编译型语言(如C/C++等),编译+解释型语言(如Java、PHP等)。
机器语言是以
二进制代码表示的指令集合,是计算机唯一能直接识别和执行的语言。机器语言的优点是占用内存少、执行速度快,缺点是难编写、难阅读、难修改、难移植。
汇编语言是将机器语言的二进制代码指令用简单符号(助记符)表示的一种语言。因此汇编语言与机器语言本质上是相同的,都可以直接对计算机硬件设备进行操作。汇编语言编程需要对计算机硬件结构有所了解,这无疑大大增加了编程难度。但是汇编语言生成的可执行文件很小,而且执行速度很快。因此,工业控制领域经常采用汇编语言进行编程。汇编语言与计算机硬件设备(主要是CPU)相关,不同系列
CPU(如ARM与Intel的CPU)的机器指令不同,因此它们的汇编语言也不同。
高级语言将计算机内部的许多相关机器操作指令,合并成一条高级程序指令,并且屏蔽了具体操作细节(如内存分配、寄存器使用等),这样大大简化了程序指令,使编程者不需要专业知识就可以进行编程。高级程序语言便于人们阅读、修改和调试,而且移植性强,因此高级程序语言已成为目前普遍使用的编程语言。