成为VIP会员查看完整内容
VIP会员码认证
首页
主题
发现
会员
服务
注册
·
登录
0
诞生于穿孔纸带时期的语言,ALGOL 60今年60岁了
2020 年 5 月 22 日
机器之心
选自theregister
作者:Richard Speed
机器之心编译
参与:Panda
「
诞
生于穿孔纸带时代的古老编程语言 ALGOL 60 已经问世 60 年。
而在当今很多编程语言中,你仍能看到它的影子。
ALGOL,为算法语言(ALGOrithmic Language)的缩写,是计算机发展史上首批产生的高级程式语言家族。当时还是晶体管计算机流行的时代,由于 ALGOL 语句和普通语言表达式接近,更适于数值计算,所以 ALGOL 多用于科学计算机。
ALGOL 60 是指 1960 年问世的 ALGOrithmic Language,这种编程语言影响了之后的 CPL、BCPL、B 语言、Pascal、Simula、C 语言,对程序设计领域具有很强的影响力。今年,这门古老的语言已经 60 岁了,英国科技媒体 The Register 近日走进英国国家计算博物馆,带我们回顾了这门语言的发展故事。
拉夫堡文法学校的 Elliott 803 计算机,1976 年
60 年前,ALGOL 60 奠定了多种计算机语言的基础。
在那个依赖穿孔纸带的计算机时代,ALGOL 60 究竟发挥着怎样的价值?英国国家计算博物馆的 Peter Onion 和 Andrew Herbert 将带领我们重温那个年代的故事。
ALGOL 60 是 ALGOL 58 语言的后继语言(ALGOL 58 于 1958 年问世)。ALGOL 58 引入了代码块的概念(并使用 begin 和 end 对来分割),而 ALGOL 60 真正开始使用结构化编程并将其发扬光大,后来的 Pascal 和 C,以及 B 和 Simula 等都采用了类似的设计。
「1950 年代,大部分代码最初都是用机器码或汇编代码写的。」微软剑桥研究院前院长 Andrew Herbert 说,每台计算机都有自己独特的代码特点。第一代语言中有一种名为 Autocode,是为方程等编码问题而设计的,然后用该语言写的代码会被转译为机器码。不过与如今的语言不同,该语言并没有很多花哨的功能。更糟糕的是,某些 Autocode 语言具备的某种功能另一些 Autocode 语言却没有,使得开发者难以从一个系统转向另一个系统。
Onion 说:「有一种用于 Elliott 803 的 Autocode,但它仅支持 A + B = C 这样的表达式,所以如果你的方程很复杂,那么你就必须将其分解为不同的单个二元运算。因此那时的程序员还是需要做大量艰辛的工作。」
Herbert 表示:「Fortran 是首个真正能用于科学和数值工作的编程语言。」这使人们相信,使用高级语言(那时候他们是这么称呼的,尽管这些语言以现在的标准看还比较原始)能提升程序员的生产力。
但是,由于这些语言在编译方面需要额外的成本,而且当时的编译器本身又很低效,因此机器码在性能方面仍更占优势。不过对于科研工作而言,性能并不是最高需求;如果只需敲一些代码就能求解问题,然后再钻研下一问题,这当然是再好不过了。
Herbert 继续说:「Fortran 更像是 Autocode。现在在某种程度上仍然如此!而且很多人认为它还能做得更好。」
国际信息处理联合会(IFIP)的一个团队开始设计后来被称为「算法语言」(Algorithmic Language)的 ALGOL,即用于编写算法的语言。1958 年,他们的成果面世,这就是 ALGOL 58。Herbert 说,但是正当工程师开始为这个新系统创建编译器时,他们发现「所有的事情都还没被真正想清楚和研究透彻。」
因此出现了各种改版和修订。一个名叫《The ALGOL Bulletin》的公告详细记录了这个艰辛的历程以及他们解决或尝试解决的问题和缺点。
与如今的开源邮件列表不同,当时这个过程是以纸质形式进行的。
最后,他们发布了「ALGOL 60 报告」,而这也成为后来每个人进一步开发的根基。
当时 IFIP 的这些委员会承受了很大的压力,还因为各个国家的不同方法而倍感痛苦。美国方面的 Fortran 经验很丰富,希望得到的成果能在他们的计算机上快速应用;而欧洲人则更理智,Herbert 笑道,「他们还考虑了这门语言的美观和优雅程度。」
他补充道:「当时人们想出一些新思路,而现在我们已经觉得这些思路理所当然了,比如结构化编程。」
这门语言受到了供应商的欢迎,因为程序员可以更轻松地在不同代际的硬件设备上移植系统和代码,而不必在每次计算机更新换代时都重写各种程序。」
写在穿孔纸带上的 ALGOL 60
不过,ALGOL 60 可没法用来简单地编写出「HELLO WORLD」程序示例。这门语言有一个致命缺点:缺乏标准的输入/输出功能,这一缺点激励了后来很多语言的创新。
Herbert 说:「委员会无法在输入/输出方面达成共识。他们最后决定将其留到软件库中解决,而这个软件库取决于用户。」
Onion 补充说:「在这里,用户就是指编译器作者。」
那就没办法了。遗漏的这部分只能靠供应商自己解决,而生产商自然更偏爱自己的方案,因此最后很多不同系统之间的代码都不兼容。ALGOL 60 还有一些没有具体定义的元素,因此一开始就具备一定的妥协性。
在 ALGOL 开始应用之后,Fortran 的发展仍在继续。Herbert 说:「Fortran 世界的人看到 ALGOL 中有他们喜欢的思路,就直接将其移植了过去。」几十年后,Fortran 依然处于科学计算的中心,而 ALGOL 则更倾向于是一种学术语言,用于教授计算机科学的思想。」
Herbert 表示:「ALGOL 在科研社区得到了广泛应用,大多数大型机制造商都支持它。」
ALGOL 60 背后的某些团队继续研发,后来发布了 ALGOL 68。正如 Herbert 所说的那样,ALGOL 68 解决了 ALGOL 60 中含混未定的问题。
实际上,在上世纪 70 年代的计算机科学课程中,这门语言基本上是难以回避的。
Herbert 笑道:「它拥有世界上最奇特的输入/输出系统。」
但对于喜爱这门语言的人来说,很不幸它走到了末路。尽管有一段时间 ALGOL 68-R 在军事应用中得到了广泛的使用(尤其是英国),但直到 70 年代 ALGOL 68 的完整实现版本才出现。
《The ALGOL Bulletin》的最后版本发布于 1988 年,编辑在其中写道:「ALGOL 68 是一门非常稳定的语言。了解它的好处和优势的人仍在使用和热爱它,而其他人则无视(或误解)了它。」
ALGOL 60 本身的故事并不是这门语言的最终命运,它还启发了其它很多语言。Niklaus Wirth 和 QuickSort 的创造者 Tony Hoare 基于 ALGOL X 提案开发的 ALGOL W 后来还催生了 Wirth 的 Pascal 与 Modula-2。而 Pascal 的影响至今仍在持续。
ALGOL 60 也极大地影响了 1960 年代开发的组合编程语言(Combined Programming Language / CPL),但这门语言直到下个十年才得以实现。后来,CPL 又催生了 Basic CPL(BCPL),进而又带来了 B 语言。B 语言后来又进一步发展成 C 语言。
Tony Hoare 负责在 Elliott 803 计算机上开发 ALGOL 60 的实现版本,这个实例至今仍可在英国国家计算博物馆的机器上运行,不过在该硬件上编译和运行程序的方式与如今程序员所熟悉的开发环境有所不同。
首先,编译器必须用穿孔纸带载入程序。然后,ALGOL 程序本身会被送入纸带读取器。Onion 表示:「这个过程有点任意性,编译耗时从 30 秒到 15-20 分钟不等。」
视频:https://www.youtube.com/watch?v=AIxZ1i8pvZI
编译完成后,程序可以开始使用之前由编译器占据的空间。不过做这种事并不讨喜,因为下个用户又必须重新载入编译器才行。将其保留在内存中意味着可以运行多个程序。
Herbert 表示:「这在教学方面很受欢迎,因为你可以让学生排队使用他们写有程序的穿孔纸带。你只需要走到机器旁把 ALGOL 系统装载好,运行自己的程序,得到一些数据,然后你可以走开去思考结果,下一个学生接着运行自己的程序。」
在纸带为王的时代,Onion 认为学习编程还能提升专注能力。「当编辑、编译、编辑、编译的循环可能持续 10 分钟以上时,你必须非常关注自己的源代码……」
英国国家计算博物馆有两台 Elliott 计算机藏品,一台是 1962 年的 803B(其在一间谷仓中闲置了 15 年后被捐赠出来)以及一台 903。这两台计算机都功能完好,你可以在参观博物馆时看到它们运行。
其中由 Onion 负责维护的 803B 还带有 Calcomp 滚筒式绘图仪以及一些额外的输入/输出功能。
一个 ALGOL 程序正在绘制洛伦兹吸引子
当然,不是人人都能玩这种古董计算机,不过你还是能以其它方式体验一番 Elliott 803 或 903。MARST 将把 ALGOL 60 代码转译成 C 语言,你可以通过模拟器来体验整个 803 计算机:
http://elliott803.sourceforge.net/
。
尽管 ALGOL 60 已经 60 岁了,但你仍能在很多现代编程语言中找到 ALGOL 设计者曾经的想法。
机器之心联合AWS开设线上公开课,通过6次直播课程帮助大家者熟悉 Amazon SageMaker 各项组件的使用方法,轻松玩转机器学习。第1课将于5月26日20:00开始,由AWS解决方案架构师苗锋带来《手把手、端到端,玩转生成对抗网络(GAN)》
我们还准备了1000元服务抵扣券,帮助大家上手实践SageMaker,识别二维码,收藏直播间。
登录查看更多
点赞并收藏
0
暂时没有读者
0
权益说明
本文档仅做收录索引使用,若发现您的权益受到侵害,请立即联系客服(微信: zhuanzhi02,邮箱:bd@zhuanzhi.ai),我们会尽快为您处理
相关内容
CVPR 2022
关注
40
CVPR 2022 将于2022年 6 月 21-24 日在美国的新奥尔良举行。CVPR是IEEE Conference on Computer Vision and Pattern Recognition的缩写,即IEEE国际计算机视觉与模式识别会议。该会议是由IEEE举办的计算机视觉和模式识别领域的顶级会议,会议的主要内容是计算机视觉与模式识别技术。
知识荟萃
精品入门和进阶教程、论文和代码整理等
更多
查看相关VIP内容、论文、资讯等
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
C++17是什么?看这本最新指南书册《C++17标准语言新特性》109页pdf
专知会员服务
68+阅读 · 2020年2月23日
麻省理工学院MIT-ICLR2020《神经网络能推断出什么?》
专知会员服务
50+阅读 · 2020年2月19日
【2020新书】JavaScript神经网络在TensorFlow.js中的深度学习,561页pdf,Deep Learning with JavaScript
专知会员服务
53+阅读 · 2020年2月4日
【Thomas G. Dietterich】机器“理解”意味着什么?(What does it mean for a machine to “understand”?)
专知会员服务
8+阅读 · 2020年1月3日
阿里巴巴达摩院发布「2020十大科技趋势」
专知会员服务
106+阅读 · 2020年1月2日
电力人工智能发展报告,33页ppt
专知会员服务
128+阅读 · 2019年12月25日
【CAAI 2019】自然语言与理解,苏州大学| 周国栋教授
专知会员服务
62+阅读 · 2019年12月1日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
2018年自然语言取得不错的研究有哪些?
人工智能前沿讲习班
4+阅读 · 2019年2月22日
Julia 对决Python:谁能在2019年称霸机器学习编程?
七月在线实验室
3+阅读 · 2019年1月13日
Python 夺大满贯!三大编程语言榜即将全部“失守”!
CSDN
4+阅读 · 2019年1月2日
12月报告:Python称王,C++败北!
程序人生
4+阅读 · 2018年12月6日
NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立
机器之心
4+阅读 · 2018年7月9日
量子计算
人工智能学家
7+阅读 · 2018年4月6日
Python数据科学超强阵容书单
图灵教育
6+阅读 · 2018年3月26日
机器翻译的技术进化史——机器翻译专题(一)
线性资本
8+阅读 · 2018年1月16日
大佬 Python 对阵新秀 Julia ,谁能问鼎机器学习和数据科学?
CSDN
3+阅读 · 2017年12月27日
学术新秀陶璐琪:博士前三年零文章产出,要做真正有影响力的科研
清华大学研究生教育
16+阅读 · 2017年7月20日
Question Generation by Transformers
Arxiv
5+阅读 · 2019年9月14日
Semantics-aware BERT for Language Understanding
Arxiv
4+阅读 · 2019年9月5日
BERTScore: Evaluating Text Generation with BERT
Arxiv
5+阅读 · 2019年4月21日
Cross-Modal Self-Attention Network for Referring Image Segmentation
Arxiv
18+阅读 · 2019年4月9日
BERT has a Mouth, and It Must Speak: BERT as a Markov Random Field Language Model
Arxiv
3+阅读 · 2019年2月11日
A sequential guiding network with attention for image captioning
Arxiv
5+阅读 · 2019年2月8日
3D Backbone Network for 3D Object Detection
Arxiv
12+阅读 · 2019年1月24日
Towards Scalable Spectral Clustering via Spectrum-Preserving Sparsification
Arxiv
4+阅读 · 2018年10月11日
Graph Attention Networks
Arxiv
10+阅读 · 2018年2月4日
Knowledge Graph Embedding with Multiple Relation Projections
Arxiv
4+阅读 · 2018年1月26日
VIP会员
自助开通(推荐)
客服开通
详情
相关主题
CVPR 2022
编程语言
编程
IFIP
编译器
相关VIP内容
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
C++17是什么?看这本最新指南书册《C++17标准语言新特性》109页pdf
专知会员服务
68+阅读 · 2020年2月23日
麻省理工学院MIT-ICLR2020《神经网络能推断出什么?》
专知会员服务
50+阅读 · 2020年2月19日
【2020新书】JavaScript神经网络在TensorFlow.js中的深度学习,561页pdf,Deep Learning with JavaScript
专知会员服务
53+阅读 · 2020年2月4日
【Thomas G. Dietterich】机器“理解”意味着什么?(What does it mean for a machine to “understand”?)
专知会员服务
8+阅读 · 2020年1月3日
阿里巴巴达摩院发布「2020十大科技趋势」
专知会员服务
106+阅读 · 2020年1月2日
电力人工智能发展报告,33页ppt
专知会员服务
128+阅读 · 2019年12月25日
【CAAI 2019】自然语言与理解,苏州大学| 周国栋教授
专知会员服务
62+阅读 · 2019年12月1日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
热门VIP内容
开通专知VIP会员 享更多权益服务
【斯坦福博士论文】建模用于脑机接口的电气神经刺激
低空经济政策与产业生态研究报告(2024年)
大语言模型的幻觉问题研究综述
大语言模型智能体
相关资讯
2018年自然语言取得不错的研究有哪些?
人工智能前沿讲习班
4+阅读 · 2019年2月22日
Julia 对决Python:谁能在2019年称霸机器学习编程?
七月在线实验室
3+阅读 · 2019年1月13日
Python 夺大满贯!三大编程语言榜即将全部“失守”!
CSDN
4+阅读 · 2019年1月2日
12月报告:Python称王,C++败北!
程序人生
4+阅读 · 2018年12月6日
NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立
机器之心
4+阅读 · 2018年7月9日
量子计算
人工智能学家
7+阅读 · 2018年4月6日
Python数据科学超强阵容书单
图灵教育
6+阅读 · 2018年3月26日
机器翻译的技术进化史——机器翻译专题(一)
线性资本
8+阅读 · 2018年1月16日
大佬 Python 对阵新秀 Julia ,谁能问鼎机器学习和数据科学?
CSDN
3+阅读 · 2017年12月27日
学术新秀陶璐琪:博士前三年零文章产出,要做真正有影响力的科研
清华大学研究生教育
16+阅读 · 2017年7月20日
相关论文
Question Generation by Transformers
Arxiv
5+阅读 · 2019年9月14日
Semantics-aware BERT for Language Understanding
Arxiv
4+阅读 · 2019年9月5日
BERTScore: Evaluating Text Generation with BERT
Arxiv
5+阅读 · 2019年4月21日
Cross-Modal Self-Attention Network for Referring Image Segmentation
Arxiv
18+阅读 · 2019年4月9日
BERT has a Mouth, and It Must Speak: BERT as a Markov Random Field Language Model
Arxiv
3+阅读 · 2019年2月11日
A sequential guiding network with attention for image captioning
Arxiv
5+阅读 · 2019年2月8日
3D Backbone Network for 3D Object Detection
Arxiv
12+阅读 · 2019年1月24日
Towards Scalable Spectral Clustering via Spectrum-Preserving Sparsification
Arxiv
4+阅读 · 2018年10月11日
Graph Attention Networks
Arxiv
10+阅读 · 2018年2月4日
Knowledge Graph Embedding with Multiple Relation Projections
Arxiv
4+阅读 · 2018年1月26日
大家都在搜
自主可控
洛克菲勒
大规模语言模型
CMU博士论文
技术报告
palantir
群体智能
网络攻击
时序知识图谱
GANLab 将GA
Top
提示
微信扫码
咨询专知VIP会员与技术项目合作
(加微信请备注: "专知")
微信扫码咨询专知VIP会员
Top