1.1.2 编程语言的发展
1. 编程和编程语言
早期,人们认为编程工作包含认识事物和描述事物两项内容,认为编程就是对要解决的问题产生一个正确的认识,再用一种语言将它正确地描述出来。这样就把软件开发与编程看成是一回事了。从软件工程的角度上看,软件开发和编程是不同的。软件开发包含两项主要活动:一是人们对于要解决的问题的认识,二是对这种认识的描述。“认识”是指对要解决的问题进行周密的分析和全面的理解,并找出解决的方法;“描述”是指选用一种语言来描述对要解决问题的认识。可见,编程是在认识基础上进行的描述,编程时所选用的语言称为编程语言。因此,我们认为编程只是软件开发中的一项内容,而不是全部内容。
开发人员对于要解决的问题的认识又称为对问题域的认识。问题域是指要解决的问题的集合,或者指要解决的问题所涉及的业务范围。人们对于问题域的认识往往是用自然语言来描述的,而计算机所能识别的却是某种编程语言。于是在自然语言和编程语言之间存在一个过渡,或称为“鸿沟”。这个“鸿沟”形成的原因很简单,就是因为机器不能识别人们描述客观事物所用的自然语言,而机器能够识别(直接或间接)的编程语言又不符合人们习惯的思维方式。于是就形成了二者之间的鸿沟。鸿沟的存在耗费软件开发人员的许多精力,同时也是许多错误的发源地。
2. 编程语言的发展史
编程语言的发展是从低级到高级的,具体过程如下。
(1)机器语言。这是一种最原始的编程语言,这种语言是计算机可以直接识别的语言。这种语言使用0和1两种代码,编写出的程序难以理解和记忆,因为它远离人们习惯的思维方式。
(2)汇编语言。这种语言使用助记符号来替代代码0和1,是一种低级语言。它比机器语言稍有提高,符合人们的某些形象思维方式。它是低层次的抽象。计算机不能直接识别汇编语言,需要编译后才可识别。这种语言虽然效率较高,但是由于难以记忆,使用较少。
(3)高级语言。这是一种采用命令或语句的语言,屏蔽了机器细节问题。它提高了语言的抽象层次,比汇编语言更加接近于人们的思维方式。这种语言人们容易理解和记忆,但它还与自然语言有较大差别。20世纪70年代,结构化程序设计语言的出现给编程带来了方便,使得自然语言与编程语言的鸿沟进一步缩短。
(4)面向对象语言。面向对象语言是比面向过程语言更高级的一种高级语言。面向对象语言的出现改变了编程者的思维方式,使设计程序的出发点由着眼于问题域中的过程转向着眼于问题域中的对象及其相互关系。这种转变更加符合人们对客观事物的认识,因此,面向对象语言更接近于自然语言。面向对象语言是人们对于客观事物更高层次的抽象。
从编程语言发展的历史来看,编程语言由低级向高级发展,使得自然语言与编程语言之间的鸿沟越来越窄,这就意味着软件开发人员耗费的精力越来越少,软件产品的质量越来越高。
面向对象语言的出现是人们期待填平“鸿沟”的必然结果,面向对象的程序设计方法是软件开发的新的里程碑。