写点什么

编程语言的另一面:Python、Java、C#和 Perl 作者谈语言设计

  • 2019-04-25
  • 本文字数:1913 字

    阅读完需:约 6 分钟

编程语言的另一面:Python、Java、C#和Perl作者谈语言设计

根据维基百科显示,目前编程语言的数量已经超过上千种,且新的编程语言还在不断出现,例如微软刚刚发布了一种新的开源编程语言 Bosque。面对层出不穷的新编程语言,相信很多开发者都会有这样的疑问:编程语言是如何设计的?编程语言如何才能具备可维护性?编程语言未来将如何发展?


近日,在 Puget Sound Programming Python (PuPPy)举办的首届年度慈善活动上,四位流行编程语言的作者在一起共同分享了他们对于以上问题的看法。这四位编程语言作者分别是 Python 的作者 Guido van Rossum,Java 作者和首席设计师 James Gosling,Turbo Pascal 的原作者及 C#和 TypeScript 的开发者 Anders Hejlsberg,Perl 的作者 Larry Wall。



编程语言需要遵循哪些关键的设计原则?


编程语言是如何设计创造的?应该遵循哪些关键的设计原则呢?


“我觉得编程语言设计和写小说的方式是类似的,尤其是和 JK Rowling 写《哈利•波特》系列小说极为相似。”Python 的创建者 Guido van Rossum 是这样理解编程语言设计的,“JK Rowling 在《哈利•波特》第一部中提到的一些细节对于第六和第七部的情节发展起到了推动作用,编程语言设计也是这样。在编程语言设计之初,我们就要确定一些细节,例如关键字、编码风格等等,而这些细节,我们需要在未来找到新的方法来使用。编程语言设计的技巧,一方面是正确选择最初的选择集,这样故事才会有更多的延续,另一方面是重新回到现有的情境中,创造出全新的方式来延续之前的选择。”


Java 是在何种情况下创建的呢?Java 并不是一个开发者的个人项目, 1991 年,Sun 为了抢占先机,成立了一个称为 Green 的项目小组,专攻计算机在家电产品上的嵌入式应用。据 Java 作者和首席设计师 James Gosling 介绍:“为了完成这个项目,我们采访了很多嵌入式系统开发软件的开发人员,了解他们的工作流程。”在这个项目中,James Gosling 主要负责从编程语言的角度来简化工作,这个项目一开始发展的很不错,但是后来失败了,而 Java 作为当时项目的唯一幸存者,一直发展到现在。


Perl 是一种功能丰富的计算机程序语言,可运行在超过 100 种计算机平台上。Larry Wall 表示创建 Perl 的一个原则就是为所有东西提供 API,他希望 Perl 能够成为一种优秀的文本处理语言,一种“胶水”语言。20 世纪 90 年代是 Perl 发展的快速期,不仅发布了 Perl 4 和 Perl 5 两个重要版本,而且还将 CPAN 引入到了社区,虽然一切都在向着稳定的方向发展,但还存在一些问题。2000 年,Perl 团队做了一个决定,完全重写 Perl 6,并提出了一组全新的设计原则,例如选择正确的默认值。Perl 6 的语言语法与 Perl 5 完全不同,拥有丰富的现代语言特征,几乎可以看作是一种新的计算机程序语言。


Anders Hejlsberg 参与了多个语言的开发,他认为编程语言开发需要遵循一个共同的原则:“一件特定的事情只能有一种方法,方法太多,反而容易走上歧路。”


如何使得编程语言具备可维护性?


“编程语言想要具备可维护性,最重要的就是要在灵活的方法和严格的方法之间保持平衡。” Guido van Rossum 表示,“动态类型适合于小程序,而大型程序需要严格的方法。如果编程语言本身能够实现这种平衡就太好了。”


编程语言的可维护性是指理解、改正、改动、改进代码的难易程度。重构引擎是实现编程语言可维护性的一种常用方式,适用于执行大规模重构,例如一次执行数百万行代码。在这种情况下,如果使用重命名方式,那么需要遍历代码并准确的重命名该变量,而如果是使用重构引擎,那么只需按几个按钮,输入新名称,就完成任务了,整个过程可能只需要 30 秒。


以 TypeScript 为例,TypeScript 起源于开发应用程序规模的 JavaScript 应用程序的需求。随着代码库越来越大,维护就变得越来越难,这些代码库就变成了“write-only code” 。为了易于重构,我们需要做一些语义理解,而这种语义理解需要一个类型系统,来定义编程语言中不同的数值和表达式。


编程语言设计的未来


时至今日,还有新的编程语言在不断涌现,那么编程语言的未来发展会是怎样的呢?


Anders Hejlsberg 表示,“编程语言的发展速度和硬件及其它技术不同,就进化而言,编程语言更像是数学和大脑。直到今天,我们还在用 50 年前发明的编程语言在编程,函数式编程的所有原则几乎都是在 50 年前提出的。当然,现在编程语言都在朝着多范式发展,只喜欢一种编程方法是不符合大潮流的。”


编程语言已经有很多种了,是否还有必要创建新的编程语言呢?是的,有必要,至少 James Gosling 认为是有必要的,他分享了一个目前还未开发的领域,即为 GPU 编写代码,“目前,我们没有任何编程语言可以像 GPU 那样工作,在这方面还需要做很多工作。”


点此可看采访视频:Python、Java、C#和Perl作者谈编程语言设计


2019-04-25 15:5016135
用户头像

发布了 497 篇内容, 共 329.0 次阅读, 收获喜欢 1923 次。

关注

评论

发布
暂无评论
发现更多内容

Tapdata Cloud 2.1.4 来啦:数据连接又上新,PolarDB MySQL、轻流开始接入,可自动标记不支持的字段类型

tapdata

SaaS 云数据库 Real Time DaaS polarDB DaaS

博云首批通过欧拉技术测评,联合解决方案通过验证

BoCloud博云

新闻

高级Java面试经验总结:多家大厂简历优化+面试题目+面经+薪酬等

Java架构追梦

Java 程序员 面试 后端开发

Android C++系列:vector最佳实践

轻口味

c++ android 4月月更

没日没夜做需求,就能交出满分答卷吗?

LigaAI

敏捷开发 需求

不面试别看!字节跳动2022年Java架构师岗面试题(试行版)发布

Java架构追梦

Java 程序员 java面试 后端开发

新思科技连续六年获评Gartner魔力象限领导者殊荣

InfoQ_434670063458

新思科技 应用安全 Gartner

全网最细的短网址系统设计与实战

星牛君

MySQL redis 布隆过滤器 Java EE

“数聚赋能”,让实时数据中台成为惠企、惠民政策服务应用的源头活水

tapdata

数据中台 数字政务 实时数据 智慧政务

直播回顾:SIMD 指令集在 OpenJDK 中的现状与未来 | 龙蜥技术

OpenAnolis小助手

Java Openjdk simd arm 龙蜥社区

阿里云弹性计算对视觉计算的思考与实践

阿里云弹性计算

Metaverse 视觉计算

算法交易的最佳编程语言是什么?

非凸科技

rust 编程语言 交易系统 策略

【国产】ETL自动化调度运维管理平台 TASKCTL 8.0 分布式部署

敏捷调度TASKCTL

Docker DevOps 国产开源 大数据运维 TASKCTL

2022,「大厂云」还在找新着力点

ToB行业头条

看端点科技如何以行业实践探索企业数字化转型新路径

科技热闻

ImageKnife组件,让小白也能轻松搞定HarmonyOS图片开发

HarmonyOS开发者

HarmonyOS ArKUI 3.0

PlatoFarm生态进展不断,通缩推动PLATO价值提升

西柚子

一文看懂博睿数据AIOps场景、算法和能力

博睿数据

基于云效AppStack实现环境管理 | 开箱即用

阿里云云效

阿里云 研发管理 研发 应用交付 环境管理

PlatoFarm生态进展不断,通缩推动PLATO价值提升

小哈区块

「可视化案例Vol.3」数字孪生可视化园区,开启园区智慧管理新篇章

ThingJS数字孪生引擎

物联网 可视化 数字孪生

多商户商城系统如何对接电商收付通?

CRMEB

观测云新增俄勒冈站点,布局全球可观测服务网络

观测云

向着阳光的华为,淬火而行的哪吒

脑极体

低代码之火,何以燎原?

BeeWorks

浅谈商业模式---《北大-真格创业课》笔记(30/100)

hackstoic

商业模式 创业公司

最佳实践 | 运维效率提升10倍的秘诀

星汉未来

DevOps 云原生 智能运维

服务器与普通台式机的对比及发展趋势

Finovy Cloud

gpu 云服务器 GPU服务器 GPU算力

新品发布 | OpenHarmony面向教育行业的发行版+大赛预告来了~

拓维信息

活动 操作系统 OpenHarmony OpenAtom OpenHarmony OpenHarmony 3.1 Release

时序数据库 VS 工业实时数据库

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

首版架构师全栈”成长笔记“一经发布就获得一致好评,我不允许你没看过

Java架构追梦

Java 程序员 java面试 后端开发

编程语言的另一面:Python、Java、C#和Perl作者谈语言设计_编程语言_田晓旭_InfoQ精选文章