0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Linux爱好者 来源:lq 2019-05-05 17:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

其实就在近日,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的括号也不够用;无需蹩脚地重新发明面向对象等等。

他补充说,

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

Anders Hejlsberg表示,他遵循了他所接触过的所有编程语言的共同原则,即“做某件事情的方法只有一种。”他认为,如果开发人员有四种不同的方法,那么最终很有可能会选择错误的道路,而且要过很久才能在开发中意识到这个错误。根据Hejlsberg的说法,这就是为什么开发人员总是会创建一种名为“简单的复杂”的东西,也就是说拿到一些复杂的东西后,通过简单的打包来掩盖复杂性。

与Guido van Rossum的观点相似,他进一步补充说,在设计一种编程语言的时候,无论你做出怎样的决定,都必须坚持到底。在设计编程语言的时候,你需要谨慎地决定“不”将哪些东西引入到这种编程语言中。通常,人们会向你提出他们的建议,但你无法真正改变编程语言的本质。虽然你无法真正改变语言的基本性质,但是你可以进行扩展。基本上你有两个选择:要么坚持语言的本质,要么开发一个新的编程语言。

编程语言的类型系统

在谈论到Python决定类型的方法时,Guido van Rossum分享了Python首次推出时的一个故事。起初,int不是一个类,实际上它是一个转换函数。后来,Guido意识到这是一个错误。“我们有很多这样的功能,我们意识到我们犯了一个错误,我们向用户提供了与内置对象类型不同的类。”

于是,Python团队决定重新构建Python的整个类型,并进行了大量的清理。因此,他们将函数int更改为类int的指定符。现在,调用这个类意味着构造该类的实例。

James Gosling表示一直以来他都很注重性能,而提高性能的一个因素是类型系统。在构建优化编译器和提前检查正确性等方面,类型系统非常实用。拥有类型系统也有助于为小型设备构建系统的情况。他说:“为了能在有限的空间内工作,你必须了解设备提供的每一种可能性,而且你知道得越早,就越有可能出色地完成工作。”

Anders Hejlsberg将类型系统视为一种工具。开发人员喜欢他们的IDE,他们习惯于使用语句的自动补齐、重构和代码导航等。这些功能是通过代码的语义知识而实现的,而这种语义知识正是由类型系统的编译器提供的。Hejlsberg认为,添加类型可以大大提高开发人员的生产力,虽然这与我们的直觉相反。

他补充说:“我们以为动态语言更容易掌握,因为你摆脱了类型的束缚。然而,事实证明,如果你以非侵入的方式添加类型,同时努力做好类型推断等,那么就可以提高效率。”

谈到Perl中的类型系统时,Wall表示Perl 5和Perl 6有不同类型的系统。在Perl 5中,所有类型都会被视为字符串,即便是数字或浮点类型。该团队希望在重新设计Perl 6的时候依然保留这个功能,然而他们意识到:“如果新用户对可互换性感到困惑,那还好;但如果连计算机都感到困惑,那就不妙了。”

于是,在Perl 6中,Wall和他的团队希望将其打造成更好的面向对象以及更好的函数式编程语言。为了实现这一目标,他们需要一个非常合理的类型系统,并在底层建立一个非常合理的元对象模型。此外,你还需要非常重视“一切都是对象,一切都是闭环”的口号。

影响编程语言维护性的因素有哪些?

Guido van Rossum认为,如果想加强编程语言的维护性,那么就需要在灵活性和规范性之间取得恰当的平衡,这一点非常重要。虽然对于小型程序来说,动态类型更好用,但大型程序则需要采用严格的方法。而且,最好能够通过编程语言本身实现规则,不要给用户留下太多自由发挥的空间。出于这个原因,Guido打算在Python中添加类似TypeScript的技术。他补充说:

“实际上,TypeScript非常实用,因此我们也想在Python中添加类似的概念。当然我们的添加方式会略有不同,因为我们的语言环境不同。”

除了类型系统以外,事实证明重构引擎也非常有用。有了重构引擎后,就可以一次执行数百万行代码的大规模重构了。通常,人们不会重命名方法,因为你很难认真看完一段代码,然后正确地给每一个变量重命名。如果你有一个重构引擎,那么只需点下几个按钮,输入新名称,然后30秒内就可以完成重构。

Anders Hejlsberg表示,TypeScript项目源自一些庞大的JavaScript代码库。随着这些代码库变得越来越大,维护工作变得异常艰难。后来基本上这些代码库变成了“只写的代码”。他补充说,因此我们需要理解代码的语义,而这个过程也降低了重构工作的难度。他表示:“这种语义的理解需要一个类型系统,而且在你开始添加类型系统时,你还可以添加代码的文档。”Wall也支持“良好的词法作用域有助于重构”的观点。

编程语言设计的未来

在谈论到编程语言设计的未来时,James Gosling分享了编程中一个未充分探索的领域——编写使用GPU的代码。他强调说,目前我们的编程语言都无法直接利用GPU,我们应该加大这个领域的发展。

Anders Hejlsberg表示,编程语言不会像硬件或所有其他技术那样快速地变化。就发展速度而论,编程语言更像是数学和人脑。他说:“我们仍然在使用50年前发明的语言进行编程,所有的函数式编程原理都是50多年前的研究成果。”

但是,他也相信,如今的编程语言趋于多范式,不会严格区分面向对象编程或函数式编程等类别。

“语言正在走向多范式。我觉得我们不应该再说我只喜欢面向对象的编程、命令式编程或函数式编程语言。”

如今,更重要的是我们需要了解最新的研究、新思维和新范式,并优雅地将这些新思想融入到我们的编程风格中。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    10

    文章

    1965

    浏览量

    39873
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74384
  • python
    +关注

    关注

    58

    文章

    4885

    浏览量

    90310

原文标题:四大编程语言之父聚首,编程语言要变天?

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入解析FAIRCHILD DM74ALS161B、DM74ALS162B、DM74ALS163B同步四位计数器

    深入解析FAIRCHILD DM74ALS161B、DM74ALS162B、DM74ALS163B同步四位计数器 一、引言 在电子设计领域,计数器是一种常见且重要的数字电路元件,广泛应用于各种计数
    的头像 发表于 03-12 15:40 268次阅读

    探索MAXIM四位显示解码器/驱动器:ICM7211深度解析

    探索MAXIM四位显示解码器/驱动器:ICM7211与ICM7212深度解析 在电子设备的显示需求日益多样化的今天,一款高效、稳定的显示解码器/驱动器显得尤为重要。MAXIM推出的ICM7211
    的头像 发表于 02-03 10:25 294次阅读

    探索Maxim ICM7212:四位显示解码器/驱动器的卓越之选

    探索Maxim ICM7211/7212:四位显示解码器/驱动器的卓越之选 在硬件设计中,显示驱动是一个关键环节,需要稳定、高效且功能丰富的解决方案。Maxim的ICM7211和ICM7212四位
    的头像 发表于 02-03 10:25 245次阅读

    SN54F283与SN74F283:4二进制全加器的技术剖析

    SN54F283与SN74F283:4二进制全加器的技术剖析 在数字电路设计中,加法器是最基础且关键的组件之一。今天我们要深入探讨的是德州仪器(TI)的SN54F283和SN74F283这两款4
    的头像 发表于 12-29 16:20 1109次阅读

    欧洲第站!技术论坛点燃爱丁堡新火花

    当地时间2025年12月2日上午,欧洲开源鸿蒙城市技术论坛第站于英国爱丁堡圆满落下帷幕。本次论坛汇聚了来自华为、爱丁堡大学以及产业界的专家,共同探讨操作系统、新型
    的头像 发表于 12-10 18:10 1486次阅读
    欧洲第<b class='flag-5'>四</b>站!<b class='flag-5'>技术</b>论坛点燃爱丁堡新火花

    京微齐力亮相2025国际现场可编程技术大会

    12月2日-5日,2025年国际现场可编程技术大会(FPT)在上海成功举办,京微齐力应邀参加此次行业盛会,与全球领先的行业专家学者,共同探讨编程技术的创新与
    的头像 发表于 12-10 15:00 657次阅读
    京微齐力亮相2025国际现场可<b class='flag-5'>编程技术</b>大会

    开源鸿蒙技术大会2025丨编译器与编程语言分论坛:语言驱动系统创新,编译赋能生态繁荣

    语言设计演进、编译器优化、工具链创新等前沿议题,汇聚产学研多方力量,共同探讨如何通过语言与编译技术推动开源鸿蒙生态向更高效、更智能的方向
    的头像 发表于 11-20 17:24 1166次阅读
    开源鸿蒙<b class='flag-5'>技术</b>大会2025丨编译器与<b class='flag-5'>编程</b><b class='flag-5'>语言</b>分论坛:<b class='flag-5'>语言</b>驱动系统创新,编译赋能生态繁荣

    上汽大通MAXUS正式发布大拿纯电轻客家族

    以革新之势剑指大VAN市场!2025年10月15日,上汽大通MAXUS专为大VAN市场多元创富需求打造的大拿纯电轻客家族核心车型——大拿M1、大拿V1L正式焕新上市,全面覆盖专业物流、营运客运、定制改装等场景。
    的头像 发表于 10-17 16:15 807次阅读

    人工智能技术的现状与未来发展趋势

    人工智能技术的现状与未来发展趋势     近年来,人工智能(AI)技术迅猛发展,深刻影响着各行各业。从计算机视觉到自然
    的头像 发表于 07-16 15:01 2315次阅读

    CES Asia 2025同期低空智能感知与空域管理技术论坛即将启幕

    安全、UTM/UAM管理系统发展与互操作性、人工智能在空域动态管理中的应用等前沿议题,将汇聚全球顶尖专家、企业代表,共同探索低空领域的未来发展方向。 低空通信导航监视
    发表于 07-10 10:16

    CES Asia 2025蓄势待发,聚焦低空经济与AI,引领未来产业新变革

    Asia 2025 的举办,将为全球科技产业的发展注入新的动力。通过深入探讨低空经济与人工智能的技术突破、应用落地、政策监管与投资机遇,有望推动这两大领域实现跨越式发展,引领
    发表于 07-09 10:29

    物联网未来发展趋势如何?

    、设备和资源连接在一起,实现城市管理的智能化和高效化。智慧城市可以解决交通拥堵、能源浪费等城市化问题,提升居民的生活质量和城市的可持续发展。 医疗保健:物联网技术在医疗保健领域的应用也将成为未来
    发表于 06-09 15:25

    0.1-3.0 GHz 四位数字衰减器 (1 dB LSB) skyworksinc

    电子发烧友网为你提供()0.1-3.0 GHz 四位数字衰减器 (1 dB LSB)相关产品参数、数据手册,更有0.1-3.0 GHz 四位数字衰减器 (1 dB LSB)的引脚图、接线图、封装手册
    发表于 05-26 18:29
    0.1-3.0 GHz <b class='flag-5'>四位</b>数字衰减器 (1 dB LSB) skyworksinc

    浅析口千兆PoE网卡:应用、技术未来趋势

    深入探讨口千兆PoE网卡的定义、应用场景、关键技术以及未来发展趋势,力求对其进行全面而专业的分析。一、定义与核心功能
    的头像 发表于 05-14 14:39 1585次阅读
    浅析<b class='flag-5'>四</b>口千兆PoE网卡:应用、<b class='flag-5'>技术</b>与<b class='flag-5'>未来</b>趋势

    水晶光电西雅图办事处正式成立

    近日,水晶光电西雅图办事处正式成立。公司董事长林敏,董事、副总经理刘风雷、李夏云,副总经理唐健等参加了开业仪式。水晶光电西雅图办事处位于贝尔维尤(Bellevue),欧弗莱克(Overlake
    的头像 发表于 04-27 14:15 969次阅读