编程语言之父谈语言设计,龟叔大赞 TypeScript

局长
 局长
发布于 2019年04月26日
收藏 51

争论哪门编程语言孰优孰劣,长期以来都是程序员乐此不疲的“娱乐活动”。之所以说是娱乐活动,因为这些争论到最后往往只是各自在发泄情绪,再则就是,脱离使用场景去讨论所谓哪门语言更好并没意义。

但如果让编程语言作者坐在一起讨论编程语言会产生怎样的反应,水平是否会比我们高到不知哪里去?

本月初由西雅图 Python 开发者举办的首届年度慈善活动(Puget Sound Programming Python, PuPPy)邀请到了 Java, Python, TypeScript 和 Perl 创始人共同讨论编程语言设计的过去和未来。

PuPPy 活动旨在为 Computer Science for All (CSforALL) 筹集资金,该组织致力于使计算机课程成为教育中不可或缺的一部分。

参与本次讨论的嘉宾为四位编程语言创始人,分别是:

  • Guido van Rossum,Python 作者

  • James Gosling,Java 作者和首席设计师

  • Anders Hejlsberg,Turbo Pascal 编译器的主要作者,Delphi、C# 和 TypeScript 开发者

  • Larry Wall,Perl 作者

活动中这四位编程语言之父的谈论主题包括设计编程语言的主要原则、编程语言的类型系统、编程语言的可维护性和编程语言设计的未来。

下面不妨看看这些开山鼻祖级别的大牛,对编程语言设计有怎样的看法。

设计编程语言的主要原则

在讨论这个话题时,Python 之父 Guido van Rossum 认为,设计编程语言与 JK罗琳写《哈利波特》有许多共通之处,罗琳为整部小说打造的架构是天才的操作,她在第一本书中描写的某些细节在第六和第七本中成了重要的情节。这和设计编程语言一样 —— 需要关注某些细节,比如关键字和编码风格。但无论决定什么都必须保证在未来找到使用这些细节的新方法,就像JK罗琳一样。

Java 作者 James Gosling 被问到 Java 遵守的设计原则时表示,Java 并不是由个人热情驱动的项目,最初只是计划构建一个原型(当时 Gosling 和他的团队正在进行一个涉及嵌入式系统领域的项目,Gosling 负责从编程语言的角度来简化工作),一开始只是希望要做得比 C 语言更好,然而后来失控了,项目的其它部分变成了某种背景,最终只留下 Java。它基本上是为了帮助开发者解决关于数据的问题,这些问题往往是因较差的网络、安全性和可靠性而导致。

Perl 作者 Larry Wall 称自己是“语言学家”而不是计算机科学家,他希望创造出类似自然语言的语言。对此,Larry Wall 举了一个例子进行解释,与其让人们进入大学校园去决定他们走向何处,倒不如通过观察他们想走的路,然后在这些地方铺设捷径。Perl 的基本设计原则是为所有事物都提供 API,目标是成为出色的文本处理语言,同时也是胶水语言。

Anders Hejlsberg 表示他参与开发编程语言的过程中都会遵守一个原则:「一个方法只做一件事」。Hejlsberg 认为过多的方法很可能会导致误入歧途,并在开发后期才会意识到问题。与 Guido 的观点类似,Hejlsberg 也认为在设计编程语言时,所做的任何决定都必须进行全局考虑,与之共存的理念理应贯穿整个开发过程。

编程语言的类型系统

Java 之父 Gosling 表示在打造 Java 的雏形时就已重点关注性能问题,而提高性能的一个关键因素就是类型系统,这对构建优化编译器和提前进行正确性检查等问题非常有用。

Hejlsberg 将类型系统视为“工具性”的功能,开发者喜欢 IDE 提供的代码补全、重构和代码导航这些功能,而这背后都离不开具有类型系统的编译器。Hejlsberg 也不认为编程语言添加了类型系统就能提升开发者的生产力,他觉得开发者使用动态语言,然后以非侵入性方式来添加类型特性反而能提高开发效率。

编程语言的可维护性

Guido 认为,如果希望编程语言具有可维护性,在灵活和规范的方法之间保持平衡非常重要。动态语言对于开发小型项目非常有用,但大型项目需要采用严格的类型检查,因此如果编程语言本身能够实现这种平衡就最好不过了。这就是为什么 Guido 计划在 Python 中添加类似 TypeScript 的技术。

除了类型系统,重构引擎对编程语言的可维护性也至关重要,通过它可以更容易地同时执行数百万行代码的大规模重构。Hejlsberg 表示 TypeScript 的起源正是日益庞大的 JavaScript 代码库,代码库越大,维护它们就变得越加困难,这些代码逐渐成了 “write-only code”。为了易于重构,需要对代码进行语义理解,而这些语义理解的工作恰好需要一个类型系统。

编程语言设计的未来

当被问及编程设计的未来时,James Gosling 分享了一个尚未充分探索的领域 —— 为 GPU 编写代码。他特别指出目前尚没有任何编程语言可以像 GPU 那样工作,而在该领域有很大的发展空间。

TypeScript 核心开发者 Anders Hejlsberg 表示,编程语言的发展速度不会像硬件或其他技术一样快,在演进方面,编程语言更像是数学和大脑。因为直到今天,我们还在用 50 年前发明的语言在编程,而函数式编程的原则几乎也都是在 50 年前提出的。另外,Hejlsberg 也认为不能将简单地把语言分为面向对象或函数式编程这样的单独类别,因为现代编程语言正逐渐成为多范式编程语言。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:编程语言之父谈语言设计,龟叔大赞 TypeScript
加载中

精彩评论

局长
局长
看坐姿和发量就知道谁是真正的大佬啦
wei2011
wei2011
Anders Hejlsberg才是真正的大老:Turbo Pascal编译器的主要作者,Delphi、C#和TypeScript之父,delphi和Turbo Pascal的编译器是汇编撸的。其他三位一生只搞一门语言吧
netkiller-
netkiller-
竟然不请 “易语言”作者,小瞧我大天朝。
开源中国射线科科长
开源中国射线科科长
Anders Hejlsberg :心目中曾经、现在、未来的神 学习C#纯碎就是因为他
keep_wan
keep_wan
安德斯海尔斯伯格我偶像。汇编大神。 他创造的语言语法最优美。阅读起来超爽

最新评论(46

红白机
红白机

引用来自“开源中国射线科科长”的评论

Anders Hejlsberg :心目中曾经、现在、未来的神 学习C#纯碎就是因为他

引用来自“二进制艺术”的评论

C# 很多特性确实比较好

引用来自“红白机”的评论

就不知道为何当年delphi这么好的语言就挂了

引用来自“wei2011”的评论

其实也没挂,还在出新版本,仍然是windows开发的利器,只不过现在windows开发市场小了
也就不能说是挂吧,只是之前的公司太不会经营了。搞得人家才跑微软去弄个C#。我现在也偶尔用用。
wei2011
wei2011

引用来自“开源中国射线科科长”的评论

Anders Hejlsberg :心目中曾经、现在、未来的神 学习C#纯碎就是因为他

引用来自“二进制艺术”的评论

C# 很多特性确实比较好

引用来自“红白机”的评论

就不知道为何当年delphi这么好的语言就挂了
其实也没挂,还在出新版本,仍然是windows开发的利器,只不过现在windows开发市场小了
红白机
红白机

引用来自“开源中国射线科科长”的评论

Anders Hejlsberg :心目中曾经、现在、未来的神 学习C#纯碎就是因为他

引用来自“二进制艺术”的评论

C# 很多特性确实比较好
就不知道为何当年delphi这么好的语言就挂了
MGL_TECH
MGL_TECH
试想如果他们是喷子 他们有没有掐死对方的想法 ?
wjmsir
wjmsir

引用来自“局长”的评论

看坐姿和发量就知道谁是真正的大佬啦

引用来自“wjmsir”的评论

图中所有人都是面朝Gosling,可见Gosling才是大佬

引用来自“张金富”的评论

就是找工作没人要那个吗 哈哈
对,他是找工作没人要,但这不能阻止他是大佬,哈哈
张金富
张金富

引用来自“局长”的评论

看坐姿和发量就知道谁是真正的大佬啦

引用来自“wjmsir”的评论

图中所有人都是面朝Gosling,可见Gosling才是大佬
就是找工作没人要那个吗 哈哈
魔神翼
魔神翼
无意冒犯,Perl是里面最不像自然语言的语言吧?
wjmsir
wjmsir

引用来自“局长”的评论

看坐姿和发量就知道谁是真正的大佬啦
图中所有人都是面朝Gosling,可见Gosling才是大佬
l
liaoxuewei
能否统一语言,好累哟
Keijack
Keijack

引用来自“keep_wan”的评论

安德斯海尔斯伯格我偶像。汇编大神。 他创造的语言语法最优美。阅读起来超爽
Turbo Pascal 是接触的第一门语言,真是优美。
返回顶部
顶部