1.什么是程序设计语言[1]
2.程序设计语言的发展[2]
程序设计语言是人们为了描述计算过程而设计的一种具有语法语义描述的记号。程序设计语言与现代计算机共同诞生、共同发展,至今已有60余年的历史,早已形成了规模庞大的家族。进入20世纪80年代以后,随着计算机的日益普及和性能的不断改进,程序设计语言也相应得到了迅猛发展。
最早的第一代程序设计语言是机器语言。机器语言是一种用二进制代码“0”和“1”表示的、能被计算机直接识别和执行的语言,它是一种低级语言。用机器语言编写的程序称为计算机机器语言程序,这种程序不便于记忆、阅读和书写。每一种机器都有自己的机器语言,即计算机指令系统,因此没有通用性。
第二代程序设计语言是汇编语言。汇编语言是一种用助记符表示的面向机器的程序设计语言,即符号化的机器语言,如用助记符ADD表示加法、STORE表示存数操作等。用汇编语言编制的程序称为汇编语言程序,机器不能直接识别和执行,必须由汇编程序翻译成机器语言程序(目标程序)才能运行。汇编语言适用于编写直接控制机器操作的底层程序,它与机器类型密切相关。因此,机器语言和汇编语言都是面向机器的语言,一般称为低级语言。
第三代程序设计语言是所谓的高级语言。高级语言是一种比较接近自然语言和数学表达式的计算机程序设计语言,是“面向用户的语言”。一般用高级语言编写的程序称为“源程序”,计算机不能直接识别和执行,必须把用高级语言编写的源程序翻译成机器指令才能执行,通常有编译和解释两种方式。编译是将源程序整个编译成目标程序,然后通过连接程序将目标程序连接成可执行程序。解释是将源程序逐句翻译,翻译一句执行一句,边翻译边执行,不产生目标程序,由计算机执行解释程序自动完成。
1956年由美国科学家John Backus领导的小组设计的FORTRAN语言是高级语言的开端,由于它的简洁和高效,成为此后几十年科学和工程计算程序开发的主流语言。但FORTRAN是面向计算机专业人员的语言,为了普及计算机语言,使计算机应用更为大众化,之后又出现了BASIc语言。
随着计算机技术的发展和应用的深入,在20世纪70年代,由结构化程序设计的思想孵化出了两种结构化程序设计语言:Pascal和C。其中Pascal语言强调可读性,使其至今仍为学习算法和数据结构等软件基础知识的首选教学语言;而C语言强调语言的简洁和高效,使之成为几十年中主流的软件开发语言。
随着面向对象程序设计思想的普及,20世纪80年代,由AT&T贝尔实验室在C语言的基础上设计并实现的c++语言成为众多面向对象语言中的代表。随后,c++和其他高级语言如BAsIC、Pascal等,结合可视化的界面编程技术、面向对象思想及数据库技术,产生了所谓的第四代语言——面向对象语言,如Ⅵsual Basic、Delphi、Visual c++、c++Builder等。
3.程序设计语言的分类[3]
从发展进程可分为面向机器的语言和高级语言。
(1)面向机器的语言(机器语言、汇编语言):依赖于结构,其指令系统随机器而异、生产效率低、容易出错、难以维护。
(2)高级语言:使用的概念和符号与人们通常使用的比较接近,一条语句往往对应若干条机器指令,其特性不依赖于特定的计算机。
从应用特点可做如下分类:
(1)基础语言:如Basic、FORTRAN、COBOL、ALGOL等,历史悠久、应用广泛。
(2)结构化语言:具有为某种特殊应用而设计的、独特的、很强的过程能力和数据结构能力的特点,如PL/l,Pascal,C,Ada等。
(3)专用语言:具有为某种特殊应用而设计的独特语法形式,应用范围较宽,如APL(数据和向量运算)、BLISS(开发编译程序和操作系统)、FORTH(开发微处理机软件)、LISP和Prolog(适合于人工智能领域)。
从语言的内在特点可做如下分类:
(1)系统实现语言:提供控制语句和变量类型检测等功能,同时允许程序员直接使用机器操作,如C。
(2)静态高级语言:提供某些控制语句和变量说明的机制,但程序员不能直接控制,由编译程序生成的机器操作,静态分配存储,如COBOL、FORTH。
(3)块结构高级语言:提供有限的动态存储分配,如ALGOL、Pascal。
(4)动态高级语言:动态地完成所有存储管理,即执行个别语句可能分配或释放存储,如某些专用语言。
(5)甚高级语言(4GL):以数据或知识为基础,以对集合的处理代替对单个记录或元素的处理,能支持对大型数据库进行高效处理的机制,如SQL。
4.程序设计语言的特性[3]
程序设计语言具有心理工程及技术等特性。
(1)心理特性:歧义性、简洁性、局部性、顺序性、传统性。
(2)工程特性:可移植性,开发工具的可利用性,软件的可重用性、可维护性。
(3)技术特性:支持结构化构造的语言有利于减少程序环路的复杂性,使程序易测试、易维护。
5.程序设计语言的选择[3]
程序设计语言特点不同,适用领域也不同,以下从不同角度介绍选择的方法。
1、项目的应用领域
(1)科学工程计算。需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有FORTRAN语言、C语言等。
(2)数据处理与数据库应用。SQL为IBM公司开发的数据库查询语言,4GL称为第4代语言。
(3)实时处理。实时处理软件一般对性能的要求很高,可选用的语言有汇编语言、Ada语言等。
(4)系统软件。如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、Pascal语言和Ada语言。
(5)人工智能。如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别等人工智能领域内的系统,应选择Prolog、Lisp语言。
2、软件开发的方法
有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现原型,因此宜采用4GL。如果是面向对象方法,宜采用面向对象的语言编程。
3、软件执行的环境
良好的编程环境不但能有效提高软件生产率,同时能减少错误,有效提高软件质量。
4、算法和数据结构的复杂性
科学计算、实时处理和人工智能领域中的问题算法较复杂,而数据处理、数据库应用、系统软件领域的问题,数据结构.比较复杂,因此选择语言时可考虑是否有完成复杂算法的能力,或者有构造复杂数据结构的能力。
5、软件开发人员的知识
编写语言的选择与软件开发人员的知识水平及心理因素有关,开发人员应仔细地分析软件项目的类型,敢于学习新知识,掌握新技术。