※ [本文转录自 Gossiping 看板 #1RhWSNPG ]
作者: jserv (松鼠) 看板: Gossiping
标题: Re: [问卦] 写程式语言的语言是怎么来的?
时间: Fri Sep 28 18:48:47 2018
※ 引述《greattower (一剑定江湖)》之铭言:
: 小弟最近离开了SAS S+转到C++轨道,
: 有一个问题一直困扰小弟很久,
: 写出程式语言的语言到底是什么?
: 一切的起源是怎么来的,
: 又是谁规定,print hello world就一定是印出呢?
: 有没有理组历史系的大大来解释一下?
这问题困扰我超过 25 年,身为“文组”的我,希望可以解答部分提问。
致力于人文和科学教育的 Crash Course [1] 有部很棒的短片,可在十分钟内
回复上述大部分问题,请见:
https://www.youtube.com/watch?v=RU1u-js7db8
短片中提及人类史上第一个编译器,A-0 System [2] 开发于 1951-52 年间,注意
到当时的用语是 "System",而且名称 A-0 代表 Arithmetic Language version 0,
与其说是今天我们提及的高阶语言编译器,不如说是程式的加载器 (loader) 或连结器
(linker)。
A-0 System 背后的人物非常关键,是 Grace Murray Hopper 准将 [3],以下摘录自
单维彰教授撰写的介绍 [4]:
* 本姓 Murray,Hopper 是夫家的姓
* 1941 年,Grace 在她的人生中产生了极大的改变。 当时欧战爆发,Grace 有了
从军的念头,她想加入海军。当时女人从军都是做后备军人,大部分都是护士,
再不然就是担任后勤。 如果是受过高等教育的女性,就会被分配要去做有关计算的
工作,例如: 计算弹道,让前线的砲兵知道如何使用砲弹。
* 她被分派到哈佛大学的一个后勤的计算局。当时的主持人是 Howard Aiken,也是
Mark I, II, III 这一系列电机计算机的设计及制造者
* 1945 年 9 月 9 日,发生了一桩对电脑界而言非常重要的轶事。那天因为天气很
热,他们都把窗户给打开了,飞进来一只蛾,结果那只蛾被打死在一支继电器里面,
造成电路不通,让机器当机,使他们没办法算出他们要的结果。经过了近一天的
检查,Hopper 找到了那只蛾,她用她的发夹去把那只蛾给弄出来,还把那只蛾的
尸体贴在她的管理日志上,上面写着:
“就是这个 bug,害我们今天的工作无法完成。”
这个消息传开之后,那个实验室里的人每逢老板询问为何还没做出结果时,都把
过错推给 bug。尔后,在电脑界中,遇到程式中有错,就称之为 bug。 除错叫做
debug
* 最大的贡献是发明了全世界第一套编译器,叫做 A-0。 在当时是没有任何组合语言
及程式语言存在的,所有的程式设计人员,都是要把程式翻译成机器码,就是翻成
0011000101.. 这样的形式,在纸上打洞,再送到机器里面去读。 ... 她便有了一种
想法,她想设计一种程式,让人可以用类似英文的语法,把想做的事写下来, 然后
用这个程式把英文翻译成机器的语法,交给机器去执行。这个想法就是今日的编译器
* 她提出这样的构想时,众人皆曰不可。所有人都告诉她电脑只能做计算,只能加减
乘除,只能处理数字,电脑是不懂英文的 ... 1950 年代,大部分人尚未意识到电脑
是用来处理资讯的工具,所有的人就是认为电脑是个计算机而已。
* 她的名言有很多,她自己最喜欢的:
"A ship in port is safe, but that is not what ships are built for."
(船泊港湾是安全的,但那并不是我们造船的目的)
延伸阅读:
* Grace Hopper's compiler: Computing's hidden hero [5]
By Tim Harford BBC World Service, 50 Things That Made the Modern Economy
如果你对编译器的实作议题有兴趣,欢迎参阅以下教材 (有录影):
* 编译器和最佳化原理篇: https://hackmd.io/s/Hy72937Me
* 编译器原理和案例分析: https://hackmd.io/s/H1ZzeiCIQ
另外,printf (注意后面的 "f") 背后有很多学问,可以追溯到 1960 年代。下次如果
还有其他网友讨论到 C 语言的历史时,我再来整理分享。
[1] https://thecrashcourse.com/
[2] https://en.wikipedia.org/wiki/A-0_System
[3] https://en.wikipedia.org/wiki/Grace_Hopper
[4] https://bcc16.ncu.edu.tw/pool/3.06.shtml
[5] https://www.bbc.com/news/business-38677721