哪些语言塑造了今天的编程世界?作为程序员的你知道吗?

哪些语言塑造了今天的编程世界,作为程序员的你知道吗?

为从繁重的工程计算中脱身,德国工程师康拉德·祖斯(Konrad Zuse)有了制造自动计算机的想法。1938年,他制造出了Z1使用简单却可靠的二元机械开关而非十齿齿轮来进行运算。3年后,它的升级版Z3也完成并展出,这是世界上第一台图灵完全的可编程机电计算机。

1945年,祖斯还设计出了第一款高级编程语言Plankalkül,比Fortran早了近10年。该语言已具有了大部分现在我们熟知的概念例如赋值条件语句、数组、浮点运算、断言等。祖斯用它编写了世界上第一个自动下棋程序。

遗憾的是,因为身处二战中的德国,祖斯的研发数次被迫中断,Z1和Z3均在轰炸中被毁,不然现代计算机的发展进程或许可以更早开启。

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

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

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

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

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

但与此同时,格林斯潘第十定律也指出:任何C或Fortran程序复杂到一定程度之后,都会包含一个临时开发的、不合规范的、充满程序错误的、运行速度很慢的、只有一半功能的Common Lisp实现。

注:前九个定律是不存在的

在苏黎世联邦理工学院任教的尼克劳斯·沃斯(Niklaus Wirth)决定开发一种适合教学的编程语言——Pascal问世了。彼时C语言还未诞生,Pascal是当时最简洁优美、编译速度最快的语言,除用于教学,还可用于系统开发。之后很多年内它都是最受欢迎的语言。

沃斯的学生菲利普·卡恩(Philippe Kahn)毕业后参与创立了Borland公司。凭借Turbo Pascal和Delphi Borland成为当时最大的软件开发工具公司。后来Borland的共同创始人安德斯·海尔斯伯格(Anders Hejlsberg)将Pasca的思想带入了他主持开发的另一门重要语言C#之中。

1969年,肯.汤普森( Ken Thompson )为了在 Unix 上开发必备的工具,设计了 B 语言。之后丹尼斯.里奇( Dennis Ritchie )又在 B 语言的基础上改进和设计了 C 语言。

C 语言诞生于 Unix 系统开发的过程中,和操作系统密不可分。在1972年的 Unix 第二版中,就已经包含了 C 语言编译器。

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

在C++诞生之前,想开发大规模软件还很困难,要么使用一系列运行很慢的面向对象语言,要么使用运行效率很高但抽象级别低的编程语言。于是1979年丹麦计算机科学家本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)想把Simula语言的一些特性加入C编译器中,从而实现一种运行很快、适合开发大型软件的语言。1985年C++第一个版本发布。

作为多范式编程语言,C++具备极强的灵活性和优秀的性能。但同时多种范式混合又提高了它的学习门槛。关于 C++的争议至今也没有停止过,希望取代它的新语言在之后源源不断地出现,却从来没有成功动摇过它的地位。

Python本来只是吉多·范罗苏姆(Guido van Rossum)在圣诞节假期打发时间的个人项目,但简洁易懂的特点让其广受欢迎。Python社区非常活跃,逐渐吸引了新兴的互联网行业用户。随着时间的推移,Pvthon在各个领域都有了大量应用,它尤其受到需要编程的非计算机行业科研工作者的热爱。伴随人工智能和深度学习的热潮,Pvthon又从学术圈回到了工业领域,再次扩展了自己的应用范围。如今Python几乎成为人人必会的重要编程语言。

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

20世纪90年代,詹姆斯·戈斯林(James Gosling)开始为 Sun公司设计一种适合智能家电使用的语言。这种语言必须简单、安全、易移植,具备较好的性能。对应这些要求 Java被设计为一种运行在虚拟机上、通过垃圾回收机制自动管理内存的语言。虽然智能家电这个概念在当时太过超前,但Java语言和Java虚拟机(JVM)成功了。

2008年之后Android兴起,Java作为Android开发的默认语言终于实现了最初的设计目标:智能嵌入式设备。Java跟随Android进入了今天几乎所有家电中。

Ruby是来自亚洲的重要编程语言,其作者松本行弘(Yukihiro Matsumoto)提倡的理念也与其他语言门派不同,他的关键词是“快乐”:创造编程语言很快乐,编程也应该很快乐。

2004年,程序员、企业家戴维·汉森(David H.Hansson,DHH)开源了Web编程框架Rub yon Rails(RoR)。今天几乎在所有语言的各种框架中都能看到RoR的影子。更让人震撼的是,RoR只用了十余年就几乎统治了互联网创业项目,成为做互联网服务的优选语言和框架。

JavaScript

网景公司想为浏览器提供一种“看起来很像Java”的客户端脚本语言,这个任务交给了布兰登·艾克(Brendan Eich)。作为函数式编程爱好者,他干脆只用了Java的基本语法,再加上从各种函数式语言中借鉴的特性,只用了10天就完成了大杂烩般的语言。除了语法,它哪里都不像 Java,却被冠以JavaScript之名问世。

经过一系列的浏览器战争和标准化的历史,如今 JavaScript不仅是所有浏览器必须支持的语言,还借助ChromeV8有了服务器编程能力。

无数人写下了关于这种语言的段子,但最为经典的论断则是2007年Atwood提出的定律:

PHP诞生前的年代,人们还在用CC++Perl等开发 CGI程序,再加上自己发明的脚本和模板搭建网站。拉斯姆斯·勒多夫(Rasmus Lerdorf)贡献的PHP终结了千奇百怪的个人发明,成为社区公认的标准。

LAMP(Linux/Apache/MySQL/PHP)这个组合一度成为互联网开发的代名词。到今天只有Linux不变,后面三者都有了各种变种。但PHP仍有着极为广泛的应用基础,很多大型站点还是选用PHP构建。这些年新语言越来越多但PHP仍然是一个简单易用、性能优秀的选择,更别说还有WordPress这样的万能项目,稍微改改总能满足人们的需求。

网络和计算机已经和几十年前区别很大。大部分程序都要面向网络环境,多核CPU已成为计算机的标准配置,但开发语言上的选择却很有限:要么是效率高但学习曲线陡峭、使用门槛高的C/C++,要么是容易学但性能不够、无法利用硬件和网络全部资源的动态语言。

为了解决这些问题,罗伯特·格瑞史莫(Robert Griesemer)罗勃·派克(Rob Pike)和肯·汤普森(Ken Thompson)3个人在多次讨论之后,决定设计一种全新的编程语言—— Go。它引入基于CSP理论的goroutine和channel来解决多线程和通信问题,又同时保持了语法简单。

Go语言的出现恰逢其时云计算和容器服务热潮刚刚开始这一领域的创业者们绝大多数选用了年轻的Go语言。

Rust是一门相对年轻的语言,2010年才从格雷顿·霍尔(Gray don Hoare)的个人项目变成一个真正可用的语言。和它的设计哲学最相近的是20世纪80年代出现的古老语言Ada。

与常见的编程语言都不同,Rust提供了不需要垃圾回收(GC)的内存安全和方便且安全的并发模型,并且还有 C++水平的性能。

它的出现让程序员们有了C/C++之外的新型语言可选,也是近年来使用量上升最快的语言之一。

内容节选自《什么塑造了今天的编程世界》漫画编程大事件 周历版。

《什么塑造了今天的编程世界:漫画编程历史大事件》是一本新颖的“风琴折”形式的文化周历,精选200年间56个改变编程世界的关键节点,兼顾广度和深度,贯穿多条技术领域的演化线索。四分册“风琴折”图文长卷,全彩印刷,一面是凝练博见、妙趣横生的编程发展简史,以“简练的文字描述+生动精美的漫画场景”展示编程世界的演变进化;另一面是可自由发挥的2022年周历书写页,留给你创造属于自己的历史,小巧精致,值得收藏。

打开风琴折页就如同坐上时光机,带你展开不同寻常的编程历史时间线漫游。

本书专为程序员和IT从业者绘制编写,也适合所有对编程文化、科技发展史感兴趣的人群。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值