Sunday, March 25, 2007

有关计算机语言---(III)

那一年,在我的硕士论文答辩会上,最后,一个一直不作声的教授说:“我只有两个问题,答对了,我让你过,不对,你就不配得这个学位”。我当时吓得脸都黄了。他的第一个问题是:程序语言里最有能力的元素是什麽?(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奖被认为是计算机领域里的诺贝尔奖。

今天的时代是计算机的时代,计算机已成为我们生活中不可缺少的基本需要。计算机语言也因此越来越接近人的思维,愈发富有智慧和人性。

3 comments:

Moments of Being said...

Curious: why SQL is a perfect(well-founded?) math language?

July said...

It based on set theory.

Moments of Being said...

oh,interesting...I never thought about it.