编程语言这么多,为什么没有“九九归一”呢?

因为“需求一直在变”。

计算机行业发展迅猛,“熵增”尤为明显,编程语言作为实现需求的大刀,必须要时不时地“磨一磨”。

几乎所有编程语言的诞生,都离不开开发者想要改善工作方式/流程,以适应不断复杂化的工作内容。

编程语言图鉴,西乔绘

编程语言图鉴
mp.weixin.qq.com/s/xunkn0_xiMzTJepxbhdbwQ

以下内容源自《神秘的程序员:什么塑造了今天的编程世界》by西乔&霍炬

为了从繁重的工程计算中脱身,德国工程师康拉德·祖斯在1938年制造出了一个自动计算机Z1(早于1940s的首台可编程的电子计算机ENIAC),它使用简单却可靠的二元机械开关而非十齿齿轮来进行运算。

世界上第一款高级编程语言,是祖斯在1945年设计出的Plankalkul,它具有了大部分现在我们熟知的概念,包括赋值、条件语句、数组、浮点运算、断言等。祖斯用它编写了世界上第一个自动下棋程序。

当时编程语言的需求只是“计算”。

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

20世纪50年代,IBM研发的700系列计算机迈出实验室走向商用,但当时具备与计算机对话能力的编程人员少之又少。IBM的约翰·巴克斯(John W.Backus)组建了一支神奇的团队来实现对编程的简化,目标是让更多人具备编程能力,同时又不会增加解决问题所需要的计算时间——Fortran诞生了。

巴克斯认为编写语言本身并不是什么难题,成败的关键在于是否能设计出高效的编译器。团队经过艰苦的工作,对编译器内循环进行分析并优化,找到了效率最高的执行方式。

Fortran被广泛地用于高性能计算和并行运算,至今还在科学计算、数值分析和工程设计等领域发挥着重要作用。

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

20世纪50年代,人工智能之父约翰·麦卡锡(John McCarthy)想为人工智能研究创造一门语言,由此归纳出了Lisp语言的基本概念。很快Lisp就成为了研究者最喜欢的语言之一。

至今为止,Lisp和它无数的变种仍然是最特别的语言。从IBM704 和PDP-10,到今天各种流行的操作系统和硬件,从AutoCAD到Emacs,Lisp出现在了计算机世界的每个角落。

即使在人们看不到的地方,格林斯潘第十定律也指出:任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、不合规范的、充满程序错误的、运行速度很慢的、只有一半功能的Common Lisp实现。(注:前九个定律是不存在的)

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

到了1970年,尼克劳斯·沃斯(Niklaus Wirth)决定开发一种适合教学的编程语言——Pascal问世了。此时C语言尚未出现,Pascal是当时最简洁优美的语言,也是编译速度最快的语言,除了用于教学,它也可以用于系统开发。

虽然现在已经没有那么多人使用Pascal了,但是它的思想随着沃斯的学生、Borland共同创始人——菲利普·卡恩(Philippe Kahn)和安德斯·海尔斯伯格(Anders Hejlsberg),进入了另外一个重要语言C#之中。

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

很快,C语言随着UNIX操作系统的开发而诞生了。1969年,肯·汤普森为了在UNIX上开发必备的工具,设计了B语言。之后丹尼斯·里奇又在B语言的基础上改进、设计了C语言,在1972年的UNIX第二版中便包含了C语言编译器。

1973年UNIX第四版使用新生的C语言重新实现。直到今天,操作系统内核仍然是C语言的阵地。Linux 内核超过98%的代码仍然是用C编写的。

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

在C++诞生之前,想开发大规模软件很是困难,要么使用一系列运行很慢的面向对象语言,要么使用运行效率很高但抽象级别低的编程语言。

于是,丹麦计算机科学家本贾尼·斯特劳斯特鲁普在1979年,通过把Simula语言的一些特性加入C编译器中,从而实现一种运行很快、适合开发大型软件的语言——C++。在1985年,C++第一个版本发布。

C++作为多范式编程语言,有极强的灵活性和优秀的性能,但是多种范式混合又让学习C++变得很困难。关于它的争议至今也没有停止过,希望取代C++的新语言层出不穷,但从没有一个语言真正动摇过它的地位。

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

Python的设计哲学是“最好只有一种方法做一件事”,这种无歧义的特征让 Python的代码更容易交流和传达。

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

20世纪90年代,詹姆斯·戈斯林(James Gosling)开始为 Sun 公司设计一种适合智能家电使用的语言。这种语言必须简单、安全、易移植,并且有较好的性能。对应这些要求,Java诞生了

当然,智能家电这个概念对于20世纪90年代还是太遥远了,不过随着2008年之后Android的兴起,Java作为Android开发的默认语言进入了今天几乎所有家电中,终于实现了最初的设计目标:智能嵌入式设备。

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

1995年,是编程语言的“金猪年”。这一年,不仅诞生了“世界上最好的语言”PHP“任何能够用JS实现的应用,终都必将用JS实现”的JavaScript,还诞生了一个与其他编程语言画风截然不同的语言——标榜“创造编程语言很快乐,编程也应该很快乐”的Ruby

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

现如今, 络和计算机已经和几十年前区别很大,大部分程序都要面对 络环境,多核CPU也已经成为计算机的标准配置,而过去的编程语言要么是效率高但学习曲线和使用门槛都很高的C/C++,要么是容易学习但性能不够、无法利用硬件和 络全部资源的动态语言。

为了解决这些问题,罗伯特·格瑞史莫(Robert Griesemer)、罗勃·派克(Rob Pike)和肯·汤普森(Ken Thompson)3个人设计了一种全新的编程语言——Go。它引入基于CSP 理论的 goroutine和 channel来解决多线程和通信问题,但又保持了语法简单。这恰好符合人工智能万物互联热潮下,云计划容器服务的旺盛诉求。

《神秘的程序员:什么塑造了今天的编程世界》插图,西乔绘

编程的世界日新月异,编程语言也不断迭代。

所以不要再问“为什么现在会有这么多种编程语言?为什么不能由几种语言进化成几门很大的语言来适应很多方面?”,因为我们耳熟能详的这些编程语言,已经是编程世界中成百上千种语言中的佼佼者了!

想要了解更多编程历史、轶事?《神秘的程序员》2022漫画周历满足你!

正面:历史×漫画
纵览计算机发展史上的里程碑事件
以时间为经,以史事为纬
将波澜壮阔的历史一览无余
背面:周历×笔记
在周历笔记中规划记录自己的成长史
从今天开始,向梦想前进
在前辈的指引下成为更好的自己

神秘的程序员 什么塑造了今天的编程世界 漫画编程历史

========

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月5日
下一篇 2021年10月5日

相关推荐