Fw: [問卦] 寫程式語言的語言是怎麼來的?

作者: NoPTT (一角兩角三角形!)   2018-09-29 13:05:18
※ [本文轉錄自 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
作者: kichitai   2017-02-14 07:29:00
還是不懂

Links booklink

Contact Us: admin [ a t ] ucptt.com