來源:一個(gè)程序員的日常 作者:開源中國 2018-06-17 10:26:46
1801 - Joseph Marie Jacquard用打孔卡為一臺(tái)織布機(jī)編寫指令,在掛毯上織出了“hello, world”字樣。當(dāng)時(shí)的reddit網(wǎng)友對(duì)這項(xiàng)工作的反響并不熱烈,因?yàn)樗热鄙傥策f歸調(diào)用,又不支持并發(fā),而且甚至都沒有注意在拼寫時(shí)恰當(dāng)?shù)貐^(qū)分大小寫。
Jacquard織布機(jī)是第一臺(tái)可進(jìn)行程序控制的織布機(jī)。用打孔卡進(jìn)行編程的概念,直到電子計(jì)算機(jī)被發(fā)明出來之后仍然被廣泛運(yùn)用。
最早的Hello World程序(出自K&R C)打印的是全小寫的字符串:"hello, world"。
在許多英文技術(shù)社區(qū)里,不正確地使用大小寫發(fā)貼會(huì)被視作是小白的行為。(如把“Python”拼作“python”,把“FreeBSD”拼作“freebsd”,把“Qt”拼作“QT”)
1842 - Ada Lovelace寫了世界上第一個(gè)程序。她的努力只遇到了一點(diǎn)點(diǎn)小小的麻煩,那就是:實(shí)際上并沒有任何計(jì)算機(jī)能夠用來運(yùn)行她的程序。后來的企業(yè)架構(gòu)師們重新吸收了她的這個(gè)技能,用來學(xué)習(xí)如何更好地使用UML進(jìn)行編程。
Ada Lovelace為Charles Babbage的分析機(jī)寫了一個(gè)計(jì)算伯努利數(shù)的算法實(shí)現(xiàn),因此被后世公認(rèn)為是世界上第一個(gè)程序員。實(shí)際上,分析機(jī)由于其設(shè)計(jì)思想過于先進(jìn),在當(dāng)時(shí)根本沒有 被制造出來。(Babbage的分析機(jī)一般被認(rèn)為是現(xiàn)代電子通用計(jì)算機(jī)的先驅(qū))
諷刺現(xiàn)在的某些“軟件架構(gòu)師”頂多只會(huì)紙上談兵地畫畫UML。
1936 - Alan Turing發(fā)明了世間一切程序語言的最終形態(tài),但很快他就被英國軍情六處“請(qǐng)”去當(dāng)007了,以至于他根本來不及為這些語言申請(qǐng)專利。
與通用圖靈機(jī)(Universal Turing machine)等價(jià)的語言被稱為圖靈完備的(Turing completeness),它定義了“什么樣的語言可以被稱作是程序語言”。
二戰(zhàn)期間Turing曾秘密地為英國軍方工作,破解德軍的Enigma密碼機(jī),并在戰(zhàn)后被授予大英帝國勛章。但這項(xiàng)事實(shí)直到多年以后才向公眾公開。
1936 - Alonzo Church同時(shí)也發(fā)明了世間一切程序語言的最終形態(tài),甚至做得更好。但他的λ演算被絕大部分人忽視了,因?yàn)樗cC語言“不夠像”。盡管存在著這樣的批評(píng),但事實(shí)上,C在當(dāng)時(shí)還沒有被發(fā)明出來。
Church是Turing在Princeton的博士生導(dǎo)師,他在λ演算方面的工作先于Turing指出了不存在一個(gè)對(duì)可判定性問題的通用解法,這后來證明和Turing針對(duì)停機(jī)問題提出的圖靈機(jī)模型是等價(jià)的。即著名的Church-Turing論題。
說Church“甚至做得更好”,因?yàn)?lambda;演算為后世所有的函數(shù)式語言提供了理論基礎(chǔ)。
現(xiàn)在一種常見的關(guān)于函數(shù)式編程的批評(píng)就是:“它們與C語言不夠像”。
1940年代 - 一些直接采用布線和開關(guān)來進(jìn)行程序控制的“計(jì)算機(jī)”出現(xiàn)了。工程師們當(dāng)時(shí)這么做,據(jù)說是為了避開“用空格還是用制表符縮進(jìn)”這樣的論戰(zhàn)。
據(jù)說當(dāng)時(shí)負(fù)責(zé)設(shè)計(jì)ENIAC的工程師中間曾經(jīng)發(fā)生過這樣的爭(zhēng)論:
空格比制表符好。
制表符比空格好。
4個(gè)空格比8個(gè)空格好。
什么?用2個(gè)空格的統(tǒng)統(tǒng)燒死。
關(guān)于這臺(tái)具有里程碑意義的人類史上第一臺(tái)電子計(jì)算機(jī)ENIAC上應(yīng)該預(yù)裝何種編輯器,工程師們還發(fā)生過這樣的爭(zhēng)吵:
Vim比Emacs好!
Emacs比Vim好!
強(qiáng)烈推薦Sublime Text。
你丫用編輯器的都是找虐,IDE才是王道。
沒錯(cuò),要用就用世界上最好的公司微軟開發(fā)出來的世界上最好的IDE:Visual Studio。
我早就看透了無謂的編輯器論戰(zhàn)什么的了,我要告訴樓上吵架的,你們?nèi)际巧当疲?br />
最后,工程師們一致決定使用布線和開關(guān)來為他們即將發(fā)明的計(jì)算機(jī)進(jìn)行編程,機(jī)智地避開了所有這些無謂的爭(zhēng)吵,最終齊心協(xié)力創(chuàng)造出了人類歷史上第一臺(tái)電子計(jì)算機(jī):ENIAC。(鼓掌
(圖:兩位ENIAC程序員在運(yùn)用敏捷開發(fā)方法進(jìn)行愉快的結(jié)對(duì)編程。“自從拋棄伴隨我多年的Emacs和HHKB Pro、改用布線和開關(guān)進(jìn)行編程之后,我的左手小指麻痹奇跡般地痊愈了。”其中一位接受采訪時(shí)如是說。另一位則表示:“新的編程方式讓曾經(jīng)專注頸椎病20 年的我得到了徹底的康復(fù),不用再整天盯著顯示屏,身心同時(shí)得到了極大的放松,值得大力推廣!”)
1957 - John Backus和IBM發(fā)明了FORTRAN語言。關(guān)于IBM或FORTRAN并沒有什么特別好笑的地方。除了,寫FORTRAN程序的時(shí)候不系藍(lán)領(lǐng)帶將被編譯器視作是一個(gè)syntax error。
藍(lán)領(lǐng)帶、白襯衫、深色西裝似乎是IBM公司20世紀(jì)經(jīng)典的dress code。
早期FORTRAN(FORTRAN 77)對(duì)程序書寫格式的要求那是相當(dāng)嚴(yán)格。(例如,蛋疼的固定格式縮進(jìn))
1958 - John McCarthy和Paul Graham發(fā)明了LISP。由于冷戰(zhàn)期間的戰(zhàn)略括號(hào)資源儲(chǔ)備所造成的巨大成本,LISP從未流行過。盡管欠缺足夠的流行度,LISP(現(xiàn)在叫做 “Lisp”,有時(shí)叫“Arc”)仍然被視作一門有影響力的語言,在關(guān)鍵的算法思想諸如遞歸(recursion)和提升逼格 (condescension)上尤為典范。
LISP發(fā)明的那一年P(guān)aul Graham其實(shí)還沒有出生。據(jù)說是因?yàn)槟潮窘凶觥禜aste and Waste》的偽程裝黑圣典實(shí)在太有名了,以至于許多編程小白們把寫這本書的傳奇人物同Lisp之間畫上了等號(hào)。
提升逼格確實(shí)是一種與遞歸調(diào)用同樣關(guān)鍵的算法思想。嗯,你懂的。
1959 - 在輸?shù)袅撕蚅. Ron Hubbard之間的一場(chǎng)打賭之后,Grace Hopper和其他幾個(gè)抖S發(fā)明了所謂的“面向Boilerplate的全大寫化語言(Capitalization Of Boilerplate Oriented Language,COBOL)”。多年以后,由于一些被誤導(dǎo)的、性別歧視主義者對(duì)Adm. Hopper關(guān)于COBOL的工作的報(bào)復(fù),在Ruby技術(shù)會(huì)議上不時(shí)會(huì)看到一些厭女主義乃至仇視女性的材料出現(xiàn)。
L. Ron Hubbard是山達(dá)基教(Scientology)的創(chuàng)始人,二戰(zhàn)期間曾與Grace Hopper同樣供職于美國海軍。(尚不清楚這兩人之間有無其他聯(lián)系)
COBOL語言以代碼極其冗長(zhǎng)和通篇大寫字母的書寫風(fēng)格而聞名。
Adm. Hopper:Grace Murray Hopper女士的軍銜是Rear Admiral Lower Half,即美國海軍準(zhǔn)將。
1964 - John Kemeny和Thomas Kurtz創(chuàng)造了BASIC,一個(gè)為非計(jì)算機(jī)科學(xué)家設(shè)計(jì)的非結(jié)構(gòu)化的程序語言。
1965 - Kemeny和Kurtz兩人goto到了1964。
調(diào)侃BASIC語言對(duì)行號(hào)和goto的無節(jié)制濫用。
1970 - Guy Steele和Gerald Sussman創(chuàng)造了Scheme。他們的工作導(dǎo)致了一系列以《Lambda之究極(Lambda the Ultimate)……》為標(biāo)題開頭的論文發(fā)表,并在《Lambda之究極廚房神器》這一篇中達(dá)到了最高潮。以這篇論文為基礎(chǔ),開始了一個(gè)長(zhǎng)年累月的、收 視率究極失敗的晚間電視購物節(jié)目。Lambda們因?yàn)槠涓拍钕鄬?duì)難以理解而被大眾所忽視,直到未來的某一天,Java語言終于讓它們變得有名了起來。通過 不包含它們這件事情。
1970 - Niklaus Wirth創(chuàng)造了Pascal,一個(gè)過程式的語言。很快就有人開始聲討Pascal,因?yàn)樗褂昧祟愃?ldquo;x := x + y”這樣的語法,而不是更為人熟知的類C語法“x = x + y”。盡管存在著這樣的批評(píng),而事實(shí)上當(dāng)時(shí)C還沒有被發(fā)明出來。
1972 - Dennis Ritchie發(fā)明了一把射擊時(shí)能同時(shí)向前和向后兩個(gè)方向發(fā)射子彈的絕世好槍。但他對(duì)此發(fā)明造成的致死和終身殘疾數(shù)量感到還不夠滿意,所以他又發(fā)明了C語言和Unix。
翻譯君:……
相關(guān)推薦:
小升初試題、期中期末題、小學(xué)奧數(shù)題
盡在奧數(shù)網(wǎng)公眾號(hào)
歡迎使用手機(jī)、平板等移動(dòng)設(shè)備訪問幼教網(wǎng),幼兒教育我們一路陪伴同行!>>點(diǎn)擊查看