#1 有关计算机语言
有关计算机语言
七月
在当今计算机领域里,主要流行着两类语言:一种称为Object-oriented,翻译成中文好像是:面向对象;另一种称为Procedure,翻译成中文应该是:顺序。
目前流行的程序语言里:JAVA和C++是为Object-oriented 设计的,其特点是:程序的物化和模式化。这是指一种程序设计范型,同时也是是一种程序开发的方法论。面向对象程序设计的雏形早在1960年的Simula语言中即可发现。什麽是物化哪?物化就是把计算机抽象的理念具体到现实的客体上,比如说:用JAVA和C++写一段程序来表达一个人, 这个人拥有每一个人所有的属性:名字,性别,年龄以及人的基本作为。模式化就是把一个大系统分割成许多小碎块,每一个碎块就是一个模式,具有自己的功能,不同的模式组合成系统。Object-oriented 语言有三大特点:第一是隔离隐蔽性,也就是说你可以知道这段程序的功能和用法,却不用知道它的编排细节;第二是重复使用性,模式化和隐蔽性使之成为可能,比如,有一个模式的功能是计算人的年龄,那末,任何系统需要这个功能的,都可以直接把这块模式拿来用,而不用再去写一段新的程序;第三是随机执行性,也就是在执行程序的时候,赋予其意义。举个例子:一个人的模式,是抽象的,拥有性别和年龄,我们可以在执行这个模式的时候,把人具体到男人,女人和不同的年龄,而这是靠输入的参数临时决定的。
Procedure语言是老式的计算机思维方式。像Fortran, BASIC, COBOL 就属于这类语言。它是线性的,按顺序而来,机械地,亦步亦趋地模仿系统的功能。程序往往是冗长的,一体的,无法分割和重复使用的。第一代的Fortran诞生于1954年,COBOL则在上个世纪60年代成为大型商业和工业的主要机器语言,它和IBM的文件储存系统接口,一直存活到今天。许多大型的保险公司,金融公司,至今还有很多系统要靠此运行。
70年代初,在美国的Palo Alto Research Center, 几个程序员发明了一种计算机语言叫做“SmallTalk”,几经演变, 它被很多领域广泛接受,也被认为是第一代的Object-oriented语言。它的中心概念是“Object”,也就是具体化的物体和对象:人,树,公司。。。为了达到可重复使用和模块化的目的,使用了一个继承性的概念,也就是说:在某种情况下,一个类会有“子类”。子类比原本的类(称为父类)要更加具体化,例如,“人”这个类可能会有它的子类“男人”和“女人”, 而男人和女人可以共同使用它们作为“人”的模块,再加上自己特有的属性。SmallTalk语言在Object-oriented方面堪称经典——以至于30年后的今天,JAVA和C++依然建立在此基础上。
当然,和世上一切事物一样,计算机语言也是不停地发展着,人们要求有一种更加简便,更具功能的语言。这几年,有一种称为“Aspect-oriented ”的语言渐渐地露出了水面。 它在Object-oriented的基础上,将其的随机执行性的概念更加扩展和完美,使程序语法更加简练和灵活。我们可以写一个叫做人的模块,在Object-oriented的语言里,我们还要再写男人和女人的模块,而在Aspect-oriented的语言里,男人和女人只要在随机执行时把自己的属性文件输入,而无需写新的模块。我确信,今后的几年里,Aspect-oriented 就会取代Object-oriented。
那一年,在我的硕士论文答辩会上,最后,一个一直不作声的教授说:“我只有两个问题,答对了,我让你过,不对,你就不配得这个学位”。我当时吓得脸都黄了。他的第一个问题是:程序语言里最有能力的元素是什麽?(In general, what is the most powerful element in programming languages?) 我想了想,说:“Loop”(循环), 他点点头,说这就是为什麽要有计算机,因为可以为人类做重复而精确的劳动。他的第二个问题是在计算机领域里,需不需要完美无缺的数学语言?我对这个问题胸有成竹,因为这位老先生搞得就是如何将数学语言应用到软件的开发过程中。
的确,还有一枝独秀的一种计算机语言,是完美无缺的数学语言,它就是当今IT行业里人人要用的数据库管理系统的SQL语言,中文称为结构化查询语言 。其实,这是一种建立在集合论上的程序语言。数据库管理系统和计算机几乎是同时并存的。一个数据库管理系统最关键的性能就是要有一种方便的语言去索取数据。早期的数据库不具备这种语言,如果要寻找所需的数据,需要运用复杂的算法写繁琐的程序。
1970年,一个在IBM工作,名叫Edgar Codd的英国博士发明了一种存放数据的办法,被称为relational模型。他把数据存放在一个表格里,每一组关联的数据有一个独特的代码。这种存放数据的方式其实就是数学上的坐标系,Y轴上的点就是那组数据的代码,而X轴上的点就是那组数据里的一个单项。从数学的角度看,一组数据就是一个项集(record set)。IBM因此发明了SQL语言,利用集合论的逻辑和算法去操作数据。它允许用户在高层数据结构上工作,而不需要用户了解其具体的存放方式。所有 SQL 语句接受项集作为输入,回送出的项集作为输出,从而解决了数据查询的问题。Codd博士也因他对数据库基础理论的巨大贡献,获得了1981年的Turing奖,Turing奖被认为是计算机领域里的诺贝尔奖。
今天的时代是计算机的时代,计算机已成为我们生活中不可缺少的基本需要。计算机语言也因此越来越接近人的思维,愈发富有智慧和人性。
|