编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。
从计算机发明至今,随着计算机硬件和软件技术的发展,计算机的编程语言经历了以机器语言、汇编语言、高级语言分别为主要编程语言的几个阶段。
机器语言
在计算机系统中,一条机器指令规定了计算机系统的一个特定动作。一个系列的计算机在硬件设计制造时就用了若干指令规定了该系列计算机能够进行的基本操作,这些指令一起构成了该系列计算机的指令系统。在计算机应用的初期,程序员使用机器的指令系统来编写计算机应用程序,这种程序称为机器语言程序。
使用机器语言编写的程序,由于每条指令都对应计算机一个特定的基本动作,所以程序占用内存少、执行效率高。缺点也很明显,如:编程工作量大,容易出错;依赖具体的计算机体系,因而程序的通用性、移植性都很差。
汇编语言
为了解决使用机器语言编写应用程序所带来的一系列问题,人们首先想到使用助记符号来代替不容易记忆的机器指令。这种使用助记符号来表示计算机指令的语言被称为符号语言,也被称为汇编语言。
在汇编语言中,每一条用符号来表示的汇编指令都与一条计算机机器指令对应。汇编语言的出现大大降低了记忆难度,不仅便于检查和修改程序错误,而且指令、数据的存放位置可以由计算机自动分配。
用汇编语言编写的程序称为源程序,计算机不能直接识别和处理源程序,必须通过某种方法将它翻译成为计算机能够理解并执行的机器语言,执行这个翻译工作的程序称为汇编程序。
使用汇编语言编写计算机程序,程序员仍然需要十分熟悉计算机系统的硬件结构,所以从程序设计本身上来看仍然是低效率的、烦琐的。但正是由于汇编语言与计算机硬件系统关系密切,在某些特定的场合下更为适合,如对时空效率要求很高的系统核心程序、实时控制程序等。因此迄今为止,汇编语言仍然是十分有效的程序设计工具。
高级语言
高级语言是一类接近于人类的自然语言和数学语言的程序设计语言的统称。高级语言按照一定的语法规则,由表达各种意义的运算对象和运算方法构成。
使用高级语言编写程序的优点是:编程相对简单、直观、易理解、不容易出错;高级语言是独立于计算机的,因而用高级语言编写的计算机程序通用性好,具有较好的移植性。
用高级语言编写的程序称为源程序,计算机系统不能直接理解和执行,必须通过一个语言处理系统将其转换为计算机系统能够认识、理解的目标程序才能被计算机系统执行。
高级语言根据用途不同有很多分类,主要可以分成编译型语言和解释型语言。当然,也有一些人为了一些特殊的目的制造了一些四不像的混合型语言。
编译型语言
编译型语言包括 C、C++、Fortran、Pascal、Delphi 等。这里说的编译是指在应用源程序执行之前,就将程序源代码“翻译”成汇编语言,然后进一步的根据硬件环境被变成符合运行需要的机器语言的目标文件。通过这种方式,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件才能执行,只有目标文件而没有源代码,几乎是没法修改的。大多数软件产品都是编译后发行给用户的,不仅便于直接运行,同时又使他人难于盗用其中的一些原始代码。
解释型语言
解释型语言包括 Tcl、Perl、Ruby、VBScript、JavaScript 等。解释型语言的实现中,翻译器并不产生机器语言的目标文件,而是产生易于执行的中间代码,这种中间代码与机器代码是不同的,中间代码的解释是由解释器软件支持的,不能直接使用硬件,解释器软件通常会导致执行效率较低。用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的。与编译程序不同的是,解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码后再执行。
解释程序的优点是当语句出现语法错误时,可以立即引起程序员注意,而程序员在程序开发期间就能进行校正。每条语言只有在执行才被翻译。这种解释型语言每执行一次就翻译一次,因而从某种程度上说效率比较低。一般地来说,如果你听别人说到动态语言,大多都是指解释型语言。
混合型语言
有一些人为了一些特殊的目的制造了一些四不像的混合型语言。比方说 Java。Java 程序也需要编译,但是没有直接编译成为机器语言,而是编译成为字节码,然后在Java 虚拟机上用解释方式执行字节码。这种运行方式带来了一些优势,但同时直接导致了复杂的环境、不算很高的效率和很多的争议。