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