Fw: [問卦] 寫程式語言的語言是怎麼來的?
※ [本文轉錄自 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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.245.162
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1538131735.A.650.html
推
09/28 18:49,
5年前
, 1F
09/28 18:49, 1F
推
09/28 18:49,
5年前
, 2F
09/28 18:49, 2F
推
09/28 18:49,
5年前
, 3F
09/28 18:49, 3F
推
09/28 18:50,
5年前
, 4F
09/28 18:50, 4F
→
09/28 18:50,
5年前
, 5F
09/28 18:50, 5F
推
09/28 18:50,
5年前
, 6F
09/28 18:50, 6F
→
09/28 18:50,
5年前
, 7F
09/28 18:50, 7F
→
09/28 18:51,
5年前
, 8F
09/28 18:51, 8F
推
09/28 18:51,
5年前
, 9F
09/28 18:51, 9F
推
09/28 18:51,
5年前
, 10F
09/28 18:51, 10F
推
09/28 18:51,
5年前
, 11F
09/28 18:51, 11F
推
09/28 18:51,
5年前
, 12F
09/28 18:51, 12F
推
09/28 18:52,
5年前
, 13F
09/28 18:52, 13F
推
09/28 18:53,
5年前
, 14F
09/28 18:53, 14F
推
09/28 18:53,
5年前
, 15F
09/28 18:53, 15F
推
09/28 18:53,
5年前
, 16F
09/28 18:53, 16F
推
09/28 18:53,
5年前
, 17F
09/28 18:53, 17F
推
09/28 18:54,
5年前
, 18F
09/28 18:54, 18F
推
09/28 18:54,
5年前
, 19F
09/28 18:54, 19F
推
09/28 18:54,
5年前
, 20F
09/28 18:54, 20F
推
09/28 18:54,
5年前
, 21F
09/28 18:54, 21F
推
09/28 18:55,
5年前
, 22F
09/28 18:55, 22F
推
09/28 18:55,
5年前
, 23F
09/28 18:55, 23F
推
09/28 18:56,
5年前
, 24F
09/28 18:56, 24F
推
09/28 18:57,
5年前
, 25F
09/28 18:57, 25F
推
09/28 18:58,
5年前
, 26F
09/28 18:58, 26F
→
09/28 18:59,
5年前
, 27F
09/28 18:59, 27F
推
09/28 18:59,
5年前
, 28F
09/28 18:59, 28F
推
09/28 18:59,
5年前
, 29F
09/28 18:59, 29F
推
09/28 19:00,
5年前
, 30F
09/28 19:00, 30F
推
09/28 19:00,
5年前
, 31F
09/28 19:00, 31F
推
09/28 19:01,
5年前
, 32F
09/28 19:01, 32F
推
09/28 19:02,
5年前
, 33F
09/28 19:02, 33F
推
09/28 19:02,
5年前
, 34F
09/28 19:02, 34F
推
09/28 19:02,
5年前
, 35F
09/28 19:02, 35F
推
09/28 19:02,
5年前
, 36F
09/28 19:02, 36F
推
09/28 19:03,
5年前
, 37F
09/28 19:03, 37F
推
09/28 19:04,
5年前
, 38F
09/28 19:04, 38F
推
09/28 19:04,
5年前
, 39F
09/28 19:04, 39F
還有 307 則推文
還有 5 段內文
推
09/29 07:49,
5年前
, 347F
09/29 07:49, 347F
推
09/29 07:50,
5年前
, 348F
09/29 07:50, 348F
推
09/29 07:55,
5年前
, 349F
09/29 07:55, 349F
推
09/29 08:13,
5年前
, 350F
09/29 08:13, 350F
推
09/29 08:16,
5年前
, 351F
09/29 08:16, 351F
推
09/29 08:19,
5年前
, 352F
09/29 08:19, 352F
推
09/29 08:21,
5年前
, 353F
09/29 08:21, 353F
推
09/29 08:22,
5年前
, 354F
09/29 08:22, 354F
推
09/29 08:51,
5年前
, 355F
09/29 08:51, 355F
推
09/29 08:52,
5年前
, 356F
09/29 08:52, 356F
噓
09/29 09:10,
5年前
, 357F
09/29 09:10, 357F
推
09/29 09:20,
5年前
, 358F
09/29 09:20, 358F
推
09/29 09:38,
5年前
, 359F
09/29 09:38, 359F
推
09/29 09:38,
5年前
, 360F
09/29 09:38, 360F
推
09/29 09:40,
5年前
, 361F
09/29 09:40, 361F
推
09/29 10:09,
5年前
, 362F
09/29 10:09, 362F
推
09/29 11:02,
5年前
, 363F
09/29 11:02, 363F
推
09/29 11:37,
5年前
, 364F
09/29 11:37, 364F
推
09/29 11:37,
5年前
, 365F
09/29 11:37, 365F
→
09/29 12:05,
5年前
, 366F
09/29 12:05, 366F
→
09/29 12:08,
5年前
, 367F
09/29 12:08, 367F
→
09/29 12:22,
5年前
, 368F
09/29 12:22, 368F
→
09/29 12:23,
5年前
, 369F
09/29 12:23, 369F
→
09/29 12:30,
5年前
, 370F
09/29 12:30, 370F
→
09/29 12:30,
5年前
, 371F
09/29 12:30, 371F
→
09/29 12:31,
5年前
, 372F
09/29 12:31, 372F
※ NoPTT:轉錄至看板 specialman 09/29 13:05
推
09/29 13:17,
5年前
, 373F
09/29 13:17, 373F
推
09/29 13:21,
5年前
, 374F
09/29 13:21, 374F
推
09/29 14:06,
5年前
, 375F
09/29 14:06, 375F
推
09/29 15:58,
5年前
, 376F
09/29 15:58, 376F
推
09/29 16:35,
5年前
, 377F
09/29 16:35, 377F
→
09/29 17:46,
5年前
, 378F
09/29 17:46, 378F
推
09/29 19:07,
5年前
, 379F
09/29 19:07, 379F
推
09/29 20:50,
5年前
, 380F
09/29 20:50, 380F
推
09/30 04:46,
5年前
, 381F
09/30 04:46, 381F
推
10/01 12:44,
5年前
, 382F
10/01 12:44, 382F
推
10/05 08:46,
5年前
, 383F
10/05 08:46, 383F
推
10/05 22:48,
5年前
, 384F
10/05 22:48, 384F
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: okcool (79.35.130.181), 10/06/2018 05:10:44