快捷搜索:

四位技术大拿相聚西雅图,共同探讨编程语言的设计与未来发展

编程语言的优劣,一直众说纷纭。倘若编程语言的创造者们相聚一起共谈自己所设计的语言,是否又会掀起一番“腥风血雨”?

其实就在近日,Python 创始人 Guido van Rossum、Java 创始人 James Gosling、C# 创始人 Anders Hejlsberg、Perl 创始人 Larry Wall 四位技术大拿相聚西雅图,共同探讨编程语言的设计与未来发展。

四位技术大拿相聚西雅图,共同探讨编程语言的设计与未来发展

4月初,在Puget Sound Programming Python(简称PuPPy)举办的第一届年度慈善活动中,四位传奇的编程语言创始人聚集在一起就编程语言设计的过去和未来展开了热烈的讨论。此次活动旨在为面向所有人的计算机科学教育(Computer Science For All,美国前总统奥巴马当年年初提出的新计划,旨在美国教育体系中普及计算机科学)筹集资金。

与会的小组成员包括以下流行编程语言的创始人:

Guido van Rossum:Python的创始人;

四位技术大拿相聚西雅图,共同探讨编程语言的设计与未来发展

James Gosling:Java编程语言的创始人兼首席设计师;

四位技术大拿相聚西雅图,共同探讨编程语言的设计与未来发展

Anders Hejlsberg:Turbo Pascal的原作者,他也致力于C#和TypeScript的开发;

四位技术大拿相聚西雅图,共同探讨编程语言的设计与未来发展

Larry Wall:Perl的创始人。

四位技术大拿相聚西雅图,共同探讨编程语言的设计与未来发展

此次讨论会由Carol Willing主持,目前她是Jupyter项目的指导委员会成员和开发人员。她还是首届Python指导委员会成员,Python软件基金会研究员和前任主任。

编程语言设计的关键原则

小组成员提出的第一个问题是:“编程语言设计的原理是什么?”

Guido van Rossum认为:

编程语言的设计与J·K·罗琳撰写她的哈利波特系列丛书的方式非常相似。

他解释说,J·K·罗琳是一个天才,她在第一本哈利波特书中提到的一些细节与第六和第七本书中重要的情节相呼应。

在解释这与编程语言设计之间的关系时,他表示:“在编程语言设计中亦是如此,我们需要做到首尾呼应。”在设计编程语言时,首先我们会承诺某些细节,例如我们想要使用的关键字,我们想要遵循的编码风格等等。但是,无论我们做了何种决定,都必须坚持到底,将来我们需要像J·K·罗琳一样,找到使用这些细节的新方式。

他补充说道:“一方面,在设计编程语言的工作中,最开始你要做出一系列的选择,为你的故事发展埋下伏笔。另一方面,设计编程语言的艺术在于,你需要不断回顾你的故事,并展开奇思妙想,以你始料未及的方式推进故事发展。”

当谈论到James Gosling创建Java的过程,以及他所遵循的设计原则时,他只是淡淡地说:“Java的出现并不像个人热爱的项目那样。其实我们只是想试着建立一个原型。”当时,James Gosling和他的团队开展了一个涉及嵌入式系统领域的项目。为此,他们与许多为嵌入式系统构建软件的开发人员进行了交谈,并了解了他们的工作流程。

该项目大约有十几个人,Gosling负责从编程语言的角度来尽量简化项目。他补充说:“最初我们只想做比C更好的东西,但是后来就失去了控制,最终项目的其余部分只是提供了素材。”所幸“Java”从该项目中活了下来。基本上该编程语言就是为了解决身居数据中心之外的人的问题,这些人常常为网络、安全性和可靠性等问题困扰。

Larry Wall觉得自己更像“语言学家”,而不是计算机科学家。他想创造一种更接近自然语言的编程语言。他举了一个例子:“就好像我们不必让每个人都走进大学校园才能决定他们各自的去向,我们可以观察人们想去哪里,然后设置通向这些地方的捷径。”Perl创建背后的一项基本原则是通过API提供一切功能。这种编程语言的目标不仅是建立一种优秀的文本处理语言,而且也想成为一种胶水语言。

Wall进一步说,虽然在90年代Perl非常稳定,但也确实存在一些问题。因此,2000年的时候,Perl团队决定打破一切,并提出了一套全新的设计原则。而且,他们还根据这些原则,重新设计出了Perl 6。其中一些原则做出了正确的选择——保守地使用括号,否则算上Unicode的括号也不够用;无需蹩脚地重新发明面向对象等等。

他补充说,

“大量的重新设计就像是说,我们该用哪根柱子支撑一切?新的设计是面向对象的吗?是在词法作用域内重新设计,还是在更大的范围内?每片信息的正确的支柱是什么?如果我们根本没有支柱的话,该如何创建?”

您可能还会对下面的文章感兴趣: