最近埃里克·雷蒙德推出了他的一本新书“Unix编程的艺术”,书中涉及了编程文化的精华和使用Unix的一些思维过程。在近期为其新书做促销的间隙,埃里克·雷蒙德接受了因特网新闻(internetnews.com)的采访,就许多科技话题提出了他的看法。
问:过去十年里,程序员在上学期间接受的初步训练都是Windows,目前是不是同样的状况?或者学生们都在接受Linux的培训?
这两种情况都存在。现在是个人计算机的世界,这是再明白不过的事实。在今天的孩子们看来,所谓的微型机和大型计算机都似乎没有存在过。
问:你认为还有什么更加重要的发展趋向?
64位计算机的出现产生的影响出乎我几年前的预料,而主要的原因是对地址空间的需求超出了我原来的估计。
问:可扩展标记语言(XML)目前在程序开发者中间都非常流行,人们对XML的作用会不会存在一些误解?
据我所知,有些人认为XML具有一种神奇的功能,它可以解决数据结构和数据组织问题,这是一个严重的误解。事实上XML不可能有这样的功能,因为它仅仅是一个基本的syntax,只能解决一些低级问题,比如如何连接记录,写出在高层次上设计的结构等。像文档类型、数据库方案,以及在不同的方案和文件类型之间传送数据等一系列问题都是XML自身所无法解决的。现实的世界多源的,一直是这样,将来也会是这样。
问:我们谈一下XML的安全性能好吗?
我认识XML数字认证组织的负责人。他很快将发布一个标准,我们也将会拥有一种标准的、保证XML数据安全性的体系。因此我想在不远的将来数据安全性将有很大的进展。
问:你对SOAP-即以XML为基础的简单对象访问协议有何看法?
事实上我认为SOAP的作用并没有宣传的那么好,就如同C++和C之间的关系一样。你也知道C++的功能要强大一些,但同样它使得程序更为复杂了,因此它的效益并不好。我想SOAP跟XML-RPC(远端程序呼叫)之间也是同样的关系。
通常有一种现象叫作第二系统综合症,也就是说你第一次设计的系统可以完成80%的工作任务,这个系统是相当简洁的,但是为了完成另外20%的工作你往往就会重新设计第二个系统,而这个系统本身将会是无比的复杂,以至于自身常常都会崩溃。
SOAP就是一个糟糕的第二套系统。我认为SOAP并不可靠,因为它自身过于复杂。人们只能有两种选择,要么决定XML RPC已经完全足够了,要么搞出一个第三套系统来。
问:谈谈你对Java的看法?
我对Java并没有更深的研究。大多程序员都使用Java,我却使用Python,这两种语言在功能上没有太大的区别,因此我也没有放弃Python而选择Java。
问:谈到scripting语言,不可避免还要涉及Python、Perl和PHP,你对此有何看法?
我认为这些新一代的scripting语言非常容易上手,是功能强大的工具。它们并不能解决所有的问题,但是他给你提供了一个寻找快速解决方案的途径。这是难能可贵的,因为与传统的编程语言之间的冲突是相当严重的,你也无法尝试所有的方案。
问:过去,Scripting语言一直排在分类语言的后面,因为Scripting语言占据了大量的计算资源,现在是不是还是这种情况?
开发工具的整个发展史也就是机器时间相对程序员的时间越来越变得廉价的历史,换句话说,程序员的时间变得越来越昂贵,因此使低端的资源存储和管理实现自动化是非常有意义的。程序员可以集中精力攻克一些高端的任务,这也可以说是scripting语言的功劳。
问:还有一个相关的问题:廉价计算资源的出现是否会对软件业造成负面的影响?
我认为廉价计算资源的出现并不会对软件工程造成负面的影响。如果说有影响的话,只是使简洁的软件设计更加必要,因为写出大量代码是相当容易的。
从3万英尺的高度看各种语言在功能上的差距,你会发现Python和Perl之间是相当接近的。你用其中一种语言实现的功能几乎都可以利用另一种语言实现。而仅有的一点的差别就用Python来编写一些模糊的代码相对比较困难。经过六个月的实践我发现Python语言较Perl更容易阅读。我也确信,对于今天我们所进行的大规模的项目来说,保持长期的稳定性可以说是任何一种语言最有说服力的功能。
问:特别是当所有的维护工作都能轻易完成时,对不对?
当然,但我并不是说这就是一个长期的发展趋向,我想人们将会发现为此将付出越来越多的隐藏的成本。
问:以上是不是基于一种文化上的差异,或者因为你希望程序员可以在线相互交流?
兼而有之吧。