自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

趣文:編程語言偽簡史

開發(fā) 后端 開發(fā)工具
非加粗部分不屬于原文,是翻譯君為了便于讀者讀懂原文擅自所加的注解。當然,也不能保證一定都是真實的。
  • 警告:原文中的內(nèi)容不一定都是真實的。
  • 警告:非加粗部分不屬于原文,是翻譯君為了便于讀者讀懂原文擅自所加的注解。當然,也不能保證一定都是真實的。
  • 為了照顧那些幽默感退化的人們,維基百科有一個主題關于:History of programming languages。

1801 – Joseph Marie Jacquard用打孔卡為一臺織布機編寫指令,在掛毯上織出了“hello, world”字樣。當時的reddit網(wǎng)友對這項工作的反響并不熱烈,因為它既缺少尾遞歸調(diào)用,又不支持并發(fā),而且甚至都沒有注意在拼寫時恰當?shù)貐^(qū)分大小 寫。

  • Jacquard織布機是第一臺可進行程序控制的織布機。用打孔卡進行編程的概念,直到電子計算機被發(fā)明出來之后仍然被廣泛運用。
  • 最早的Hello World程序(出自K&R C)打印的是全小寫的字符串:"hello, world"。
  • 在許多英文技術社區(qū)里,不正確地使用大小寫發(fā)貼會被視作是小白的行為。(如把“Python”拼作“python”,把“FreeBSD”拼作“freebsd”,把“Qt”拼作“QT”)
  • reddit / Hacker News的月經(jīng)帖標題:“.*: a new .*-based .* programming language”。底下常見的回帖形式:“它支持并發(fā)嗎?”“沒有尾調(diào)用優(yōu)化果斷差評。”“現(xiàn)在的編程語言已經(jīng)足夠多了,為什么我們還需要更多的語言?”……

1842 – Ada Lovelace寫了世界上第一個程序。她的努力只遇到了一點點小小的麻煩,那就是:實際上并沒有任何計算機能夠用來運行她的程序。后來的企業(yè)架構師們重新吸收了她的這個技能,用來學習如何更好地使用UML進行編程。

  • Ada Lovelace為Charles Babbage的分析機寫了一個計算伯努利數(shù)的算法實現(xiàn),因此被后世公認為是世界上第一個程序員。實際上,分析機由于其設計思想過于先進,在當時根本沒有 被制造出來。(Babbage的分析機一般被認為是現(xiàn)代電子通用計算機的先驅(qū))
  • 諷刺現(xiàn)在的某些“軟件架構師”頂多只會紙上談兵地畫畫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的博士生導師,他在λ演算方面的工作先于Turing指出了不存在一個對可判定性問題的通用解法,這后來證明和Turing針對停機問題提出的圖靈機模型是等價的。即著名的Church-Turing論題。
  • 說Church“甚至做得更好”,因為λ演算為后世所有的函數(shù)式語言提供了理論基礎。
  • 現(xiàn)在一種常見的關于函數(shù)式編程的批評就是:“它們與C語言不夠像”。

1940年代 – 一些直接采用布線和開關來進行程序控制的“計算機”出現(xiàn)了。工程師們當時這么做,據(jù)說是為了避開“用空格還是用制表符縮進”這樣的論戰(zhàn)。

  • 據(jù)說當時負責設計ENIAC的工程師中間曾經(jīng)發(fā)生過這樣的爭論:
  1. 空格比制表符好。
  2. 制表符比空格好。
  3. 4個空格比8個空格好。
  4. 什么?用2個空格的統(tǒng)統(tǒng)燒死。
  • 關于這臺具有里程碑意義的人類史上第一臺電子計算機ENIAC上應該預裝何種編輯器,工程師們還發(fā)生過這樣的爭吵:
  1. Vim比Emacs好!
  2. Emacs比Vim好!
  3. 強烈推薦Sublime Text。
  4. 你丫用編輯器的都是找虐,IDE才是王道。
  5. 沒錯,要用就用世界上最好的公司微軟開發(fā)出來的世界上最好的IDE:Visual Studio。
  6. 我早就看透了無謂的編輯器論戰(zhàn)什么的了,我要告訴樓上吵架的,你們?nèi)际巧当疲?/li>
  • 最后,工程師們一致決定使用布線和開關來為他們即將發(fā)明的計算機進行編程,機智地避開了所有這些無謂的爭吵,最終齊心協(xié)力創(chuàng)造出了人類歷史上第一臺電子計算機:ENIAC。(鼓掌

[[74708]]

  • (圖:兩位ENIAC程序員在運用敏捷開發(fā)方法進行愉快的結(jié)對編程。 “自從拋棄伴隨我多年的Emacs和HHKB Pro、改用布線和開關進行編程之后,我的左手小指麻痹奇跡般地痊愈了。”其中一位接受采訪時如是說。另一位則表示:“新的編程方式讓曾經(jīng)專注頸椎病20 年的我得到了徹底的康復,不用再整天盯著顯示屏,身心同時得到了極大的放松,值得大力推廣!”)

1957 – John Backus和IBM發(fā)明了FORTRAN語言。關于IBM或FORTRAN并沒有什么特別好笑的地方。除了,寫FORTRAN程序的時候不系藍領帶將被編譯器視作是一個syntax error。

  • 藍領帶、白襯衫、深色西裝似乎是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”)仍然被視作一門有影響力的語言,在關鍵的算法思想諸如遞歸(recursion)和提升逼格(condescension)上尤為典范。

(原文的腳注:

  1. 幸運的是對于計算機科學來說,花括號和尖括號的供應尚充足。
  2. “關鍵的算法思想”這一說法來自于Verity Stob的Catch as catch can。)
  • 戰(zhàn)略括號儲備:據(jù)信是因為克格勃對于他們費盡千辛萬苦搜集到的程序片段全都是括號感到極端憤怒,于是封鎖了世界各地的括號礦產(chǎn)資源,導致白宮方面不得不加強戰(zhàn)略濃縮括號的儲備。(誤
  • LISP發(fā)明的那一年Paul Graham其實還沒有出生。據(jù)說是因為某本叫做《Haste and Waste》的偽程裝黑圣典實在太有名了,以至于許多編程小白們把寫這本書的傳奇人物同Lisp之間畫上了等號。
  • 提升逼格確實是一種與遞歸調(diào)用同樣關鍵的算法思想。嗯,你懂的。

1959 – 在輸?shù)袅撕蚅. Ron Hubbard之間的一場打賭之后,Grace Hopper和其他幾個抖S發(fā)明了所謂的“面向Boilerplate的全大寫化語言(Capitalization Of Boilerplate Oriented Language,COBOL)”。多年以后,由于一些被誤導的、性別歧視主義者對Adm. Hopper關于COBOL的工作的報復,在Ruby技術會議上不時會看到一些厭女主義乃至仇視女性的材料出現(xiàn)。

  • L. Ron Hubbard是山達基教(Scientology)的創(chuàng)始人,二戰(zhàn)期間曾與Grace Hopper同樣供職于美國海軍。(尚不清楚這兩人之間有無其他聯(lián)系)
  • COBOL語言以代碼極其冗長和通篇大寫字母的書寫風格而聞名。
  • Adm. Hopper:Grace Murray Hopper女士的軍銜是Rear Admiral Lower Half,即美國海軍準將。
  • Ruby技術會議與性別歧視:在09年的GoGaRuCo會議上,有人做了一場題為“CouchDB perform like a pr0n star”的 報告,幻燈片演示中使用了大量色情材料,引起了在場的少數(shù)女性觀眾的極大不適(“This was a national conference, not a gathering of teenager boys in a smelly upstairs bedroom!”)。會后,DHH(Ruby on Rails的作者)發(fā)推表示“it’s “absolutely” appropriate to use porn in a business presentation”。關于其他更多技術會議上出現(xiàn)的性別歧視事件,參見這里。

1964 – John Kemeny和Thomas Kurtz創(chuàng)造了BASIC,一個為非計算機科學家設計的非結(jié)構化的程序語言。

1965 – Kemeny和Kurtz兩人goto到了1964。

  • 調(diào)侃BASIC語言對行號和goto的無節(jié)制濫用。

#p#

1970 – Guy Steele和Gerald Sussman創(chuàng)造了Scheme。他們的工作導致了一系列以《Lambda之究極(Lambda the Ultimate)……》為標題開頭的論文發(fā)表,并在《Lambda之究極廚房神器》這一篇中達到了最高潮。以這篇論文為基礎,開始了一個長年累月的、收 視率究極失敗的晚間電視購物節(jié)目。Lambda們因為其概念相對難以理解而被大眾所忽視,直到未來的某一天,Java語言終于讓它們變得有名了起來。通過 不包含它們這件事情。

  • Lambda之究極神器系列:(Lambda之究極命令式編程、Lambda之究極宣告式編程、Lambda之究極GOTO語句、Lambda之究極Opcode)
  1. Guy Lewis Steele, Jr. and Gerald Jay Sussman. “Lambda: The Ultimate Imperative”). MIT AI Lab. AI Lab Memo AIM-353. March 1976.
  2. Guy Lewis Steele, Jr.. “Lambda: The Ultimate Declarative”. MIT AI Lab. AI Lab Memo AIM-379. November 1976.
  3. Guy Lewis Steele, Jr.. “Debunking the ‘Expensive Procedure Call’ Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO”. MIT AI Lab. AI Lab Memo AIM-443. October 1977.
  4. Guy Lewis Steele, Jr. and Gerald Jay Sussman. “Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode”. MIT AI Lab. AI Lab Memo AIM-514. March 1979.
  5. 后來大概有人覺得每次都投一篇正式的paper太麻煩了,于是干脆專門開了一個博客,名字就叫做Lambda the Ultimate。這樣他們將來要發(fā)《Lambda之究極割草機》《Lambda之究極廁所皮拔子》這樣的營銷廣告就更加方便了。
  • 長年累月的收視率究極失敗的晚間電視購物節(jié)目:也許是在暗諷MIT專注用SICP作為教給CS學生的第一門編程課20余年。
  • 眾Java程序員:聽說Java 8要開始支持lambda了,想來Java真是極先進的……等一下,我先看看lambda是個啥玩意?
  1. 于是lambda這個“新鮮貨”就一下子在主流業(yè)界變得流行起來了。

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。

  • 翻譯君:……

1972 – Alain Colmerauer設計了邏輯編程語言Prolog。他的目標是創(chuàng)造一個具有兩歲小孩智商的程序語言。為了證明他成功達到了這個目標,他展示了一個Prolog程序,它對于每條查詢都會機智地給出相同的回答:“No”。

1973 – Robin Milner創(chuàng)造了ML,一個建立在M&M類型理論基礎上的語言。由ML衍生而來的SML加上了一套形式語義的規(guī)范。當被要求給這個形式語義本身 書寫一套形式語義時,Milner的腦子爆掉了。其他ML家族的著名語言還包括OCaml,F(xiàn)#,和,Visual Basic。

  • SML的形式語義規(guī)范事實上被寫成了這樣一本書(SML’97):《The Definition Of Standard ML》。
  • ML明顯是建立在H-M(Hindley–Milner)類型推斷的基礎上的,不太清楚原文所說的M&M類型理論是在吐槽神馬……

[[74710]]

  • Visual Basic近年來吸收了函數(shù)式編程里的不少東西(不知道是不是因為受到了F#影響的緣故)。最典型的是它具備和ML相似的類型推斷。

1980 – Alan Kay創(chuàng)造了Smalltalk并發(fā)明了“面向?qū)ο?rdquo;這個詞。當被問到它的含義時,他回答道:“Smalltalk程序本身就是對象。”當被問到對象是由 什么組成時,他回答到:“對象。”當再一次被問到這個問題時,他說“看,它從里到外都是對象。直到你抽出一只烏龜。”

  • Smalltalk的設計從很大程度上受到了Logo的影響。

1983 – 為了紀念偉大的先輩程序員Ada Lovelace那能夠?qū)懗鲇肋h也無法被執(zhí)行的代碼的彪悍技能,Jean Ichbiah和美國國防部創(chuàng)造了Ada語言。盡管缺乏證據(jù)顯示有任何重要的Ada程序曾經(jīng)被完成過,歷史學家仍然確信Ada是個成功的公益項目,它讓數(shù) 以千計的國防承包商免于淪落為與黑幫為伍。

  • Ada曾經(jīng)是美國國防部指定的嵌入式計算機系統(tǒng)唯一開發(fā)語言,在其研發(fā)上耗資巨大。(國防承包商們于是不用靠販賣軍火給黑幫來維持生計了)
  • 雖然有充分的證據(jù)顯示Ada的整型范圍溢出檢查失敗導致弄壞了歐空局的一枚Ariane 5運載火箭,不過美國國防部發(fā)言人對此表示:關我P事。

1983 – Bjarne Stroustrup把他所聽說過的一切都試圖嫁接到C上,創(chuàng)造出了C++。最后得到的語言是如此地復雜,以至于程序必須被送到未來去讓“天網(wǎng)”人工智能 進行編譯。編譯時間難以容忍。天網(wǎng)開展這項服務的動機仍然不為人知,但來自未來的發(fā)言人說道:“沒什么好擔心的,寶貝。”帶著一口奧地利腔的機械口音。有 一些來自坊間的推測,所謂的天網(wǎng)只不過是個自命不凡的緩沖區(qū)溢出而已。

  • 這篇文章寫出來的時候,一個被稱作C++0x的新標準還遙遙無期。許多編譯器對它的支持似乎永遠停留在“partial”階段。
  • 請自行腦補終結(jié)者里的T-800……
  • 無論什么都改變不了C/C++是個經(jīng)典的“緩沖區(qū)溢出語言”的事實。

1986 – Brad Cox和Tom Love創(chuàng)造了Objective-C,宣稱“該語言完美地結(jié)合了C的內(nèi)存安全性與Smalltalk的神奇效率”。現(xiàn)在的歷史學家懷疑這兩人其實是誦讀障礙癥患者。

  • “C的內(nèi)存安全性十分好”。
  • Smalltalk編譯出來的程序以低效緩慢著稱。

1987 – Larry Wall在電腦前打了個盹,Larry Wall的腦門子壓到了鍵盤上。醒來之后,Larry Wall深信 ,在Larry Wall的顯示器上出現(xiàn)的神秘字符串并非是隨機的,那是某種編程語言之程序樣例的神諭。那必是上帝要他的先知,Larry Wall,去設計的。Perl語言就此誕生了。

1990 – 一個由Simon Peyton-Jones、Paul Hudak、Philip Wadler、Ashton Kutcher和善待動物組織(PETA)組成的委員會創(chuàng)造了Haskell,一種純函數(shù)式的、非嚴求值的語言。Haskell由于使用了Monad這種 較費解的概念來控制副作用而遭到了一些批評意見。Wadler試圖平息這些質(zhì)疑,他解釋說:“一個單子(Monad)說白了不過就是自函子范疇上的一個幺 半群而已,這有什么難以理解的?”

  • 素食主義鼓吹者:為了獲取食物而不必要地殺死動物是邪惡的;“純函數(shù)式編程”鼓吹者:為了編程而引入不必要的副作用是邪惡的。
  • (科普帖)自函子說穿了就是把一個范疇映射到自身的函子,自函子范疇說穿了就是從小范疇映射到自身的函子所構成的以自函子為對象以自然變換為態(tài)射 的范疇,幺半群說穿了就是只有單個對象的范疇,給定了一個幺半群則可構造出一個僅有單個對象的小范疇使其態(tài)射由幺半群的元素給出而合成由幺半群的運算給 出,而單子說穿了就是自函子范疇上的這樣一個幺半群。(這都不理解么親連這種最基本的概念都不理解還學什么編程?。?/li>

[[74711]]

  • 又:“A monad is a monoid in the category of endofunctors(一個單子是自函子范疇上的一個幺半群)”這句話的原出處據(jù)信是Mac Lane的這本書:

趣文:編程語言偽簡史

1991 – 荷蘭程序員Guido van Rossum為了一次神秘的手術而進行了一次阿根廷之旅?;貋砗笏麕е粋€巨大的顱疤,發(fā)明了Python,而被數(shù)以軍團計的追隨者們加冕為“終生大獨裁 者”,并向全世界宣布“要辦到一件事情,只可有唯一的一種方法!”。整個波蘭陷入了恐慌。

  • BDFL(Benevolent Dictator for Life):開源社區(qū)一種流行的說法,“仁慈的”終生大獨裁者。這個說法最早指的就是Guido van Rossum。
  • 希特勒在提出建立“純正的雅利安人國家”“統(tǒng)一的大德意志帝國”并實現(xiàn)了德奧合并之后,翌年便入侵了波蘭,引發(fā)了第二次世界大戰(zhàn)。“我一個人征服了整個歐洲!”(感覺好棒好棒的)

#p#

1995 – 在家門口附近的一個意大利飯館用餐時,Rasmus Lerdorf意識到他吃的那盤意面正好是一個用來理解WWW萬維網(wǎng)的極好模型,而所有的Web應用都應該仿照它們的媒介那樣去做。在他的餐巾的背后,他 設計出了著名的“可編程超鏈接Pasta(Programmable Hyperlinked Pasta,PHP)”語言。PHP的文檔至今仍然保留在那片餐巾上。

  • PHP最顯著的特點就是:代碼是可以直接嵌在HTML文檔中的。

1995 – 松本“Mad Matz”行弘創(chuàng)造出了Ruby語言,用來辟謠一些意味不明的、有關澳洲將會變成一片由莫霍克族戰(zhàn)士和Tina Turner統(tǒng)治的荒漠的末世預言。該語言后來被它的真正發(fā)明者David Heinemeier Hansson重新命名為Ruby on Rails。(關于某個叫松本行弘的人發(fā)明了一種叫做Ruby的語言這件事情從未發(fā)生過,最好在這篇文章的下一個版本中刪掉。 – DHH表示

  • 最早關于Ruby的國際會議不是RubyConf,而是每年在澳大利亞舉辦的OSDConf。
  • 這里應該是在吐槽Ruby的殺手級應用Ruby on Rails實在太有名了,以至于超越了原來的Ruby語言本身。
  • Matz并沒有為“Ruby”這個名字注冊商標——本著開源的黑客精神。
  • 而DHH(RoR的作者)卻把“Ruby on Rails”這個(包含了“Ruby”字樣的)名稱注冊成了商標,并且阻止別人未經(jīng)授權使用“Rails”這個名字。
  • (雖然搶注商標對開源來說未必是一件壞事情——Python基金會今年在歐洲還卷入了一場商標之爭了不是)
  • 假如你從來沒聽說過的話,莫霍克族戰(zhàn)士據(jù)說是像這個樣子的:

趣文:編程語言偽簡史

  • 而Tina Turner看起來是這個樣子的:

趣文:編程語言偽簡史


1995 – Brendan Eich讀完了歷史上所有在程序語言設計中曾經(jīng)出現(xiàn)過的錯誤,自己又發(fā)明了一些更多的錯誤,然后用它們創(chuàng)造出了LiveScript。之后,為了緊跟 Java語言的時髦潮流,它被重新命名為JavaScript。再然后,為了追隨一種皮膚病的時髦潮流,這語言又被命名為ECMAScript。

  • WAT!https://www.destroyallsoftware.com/talks/wat
  • JavaScript和Java語言沒有任何實質(zhì)上的聯(lián)系;就像ECMAScript和Eczema(濕疹)沒有任何實質(zhì)上的聯(lián)系一樣。 (Brendan Eich曾表示:“ECMAScript was always an unwanted trade name that sounds like a skin disease.”)
  • 但很多人覺得其實JavaScript設計中包含的錯誤還不夠多,本著為程序語言的設計貢獻更多錯誤這樣的目的,他們?nèi)翰呷毫?chuàng)造出了更多的、JavaScript中未曾成功涵蓋的錯誤。這兒有一個五花八門的列表,以供有志于為程序語言設計的謬誤史添磚加瓦的人們參考。

1996 – James Gosling發(fā)明了Java。Java是一個相對繁冗的、帶垃圾收集的、基于類的、靜態(tài)類型的、單分派的面向?qū)ο笳Z言,擁有單實現(xiàn)繼承和多接口繼承。Sun不遺余力地宣傳著Java的獨一無二不同凡響之處。

2001 – Anders Hejlsberg發(fā)明了C#。C#是一個相對繁冗的、帶垃圾收集的、基于類的、靜態(tài)類型的、單分派的面向?qū)ο笳Z言,擁有單實現(xiàn)繼承和多接口繼承。微軟不遺余力地宣傳著C#的獨一無二不同凡響之處。

2003 – 一個叫Martin Odersky的醉漢看見了好時瑞森花生醬杯的廣告,展示了某個人的花生醬倒入另一個人的巧克力的場景,他忽然有了個點子。他創(chuàng)造了Scala,一種結(jié)合 了面向?qū)ο蠛秃瘮?shù)式編程的語言。這同時激怒了兩個陣營的忠實信徒,他們立刻宣布要發(fā)動圣戰(zhàn)燒死異教徒。

[[74714]]

  • 補充:原文的評論中有人尖銳地指出,開頭提到的Jacquard可編程織布機不但支持并發(fā)(concurrency),而且是一個典型的多線程 (multi-threaded)的例子。如你所見,它確實通過良好的同步機制避免了多個thread間產(chǎn)生競爭條件導致死鎖,其實可以看作是現(xiàn)代操作系統(tǒng)最早的雛形。(目測此項科技樹成果已突破天際)

[[74715]]

原文鏈接:http://james-iry.blogspot.co.at/2009/05/brief-incomplete-and-mostly-wrong.html

譯文出處:http://www.soimort.org/posts/160/

責任編輯:陳四芳 來源: soimort.org
相關推薦

2013-06-09 09:58:58

2014-09-28 10:00:24

編程語言

2014-09-03 13:19:46

編程語言程序員

2012-11-09 13:56:17

編程語言

2022-04-25 15:55:58

C 語言編程語言Java

2013-10-15 13:29:50

設計

2014-01-23 10:04:04

Python趣聞

2018-01-26 14:41:04

編程Python開發(fā)

2010-03-11 10:34:22

Scala

2010-07-21 16:10:25

計算機

2020-10-29 07:09:07

編程花括號程序員

2013-04-17 10:28:40

程序員

2014-09-26 09:29:12

Python

2013-06-20 08:55:38

2012-05-25 12:37:33

Git編程開發(fā)

2013-09-27 10:51:00

Github

2023-11-22 16:10:59

編程語言機器語言

2014-04-18 09:40:32

算法追MM算法

2013-06-24 09:18:05

2012-09-29 10:54:10

程序員謊話Quora
點贊
收藏

51CTO技術棧公眾號