中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

趣文:編程語言偽簡史

2018-07-20    來源:編程學習網(wǎng)

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

  警告:

  • 原文中的內容不一定都是真實的。
  • 小字部分不屬于原文,是翻譯君為了便于讀者讀懂原文擅自所加的注解。當然,也不能保證一定都是真實的。
  • 為了照顧那些幽默感退化的人們,維基百科有一個主題關于:History of programming languages。

  1801 - Joseph Marie Jacquard用打孔卡為一臺織布機編寫指令,在掛毯上織出了“hello, world”字樣。當時的reddit網(wǎng)友對這項工作的反響并不熱烈,因為它既缺少尾遞歸調用,又不支持并發(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ā)嗎?”“沒有尾調用優(yōu)化果斷差評。”“現(xiàn)在的編程語言已經(jīng)足夠多了,為什么我們還需要更多的語 言?”……

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

  • Ada Lovelace為Charles Babbage的分析機寫了一個計算伯努利數(shù)的算法實現(xiàn),因此被后世公認為是世界上第一個程序員。實際上,分析機由于其設計思想過于先進,在當時根本沒有 被制造出來。(Babbage的分析機一般被認為是現(xiàn)代電子通用計算機的先驅)
  • 諷刺現(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ā)生過這樣的爭論:
    • 空格比制表符好。
    • 制表符比空格好。
    • 4個空格比8個空格好。
    • 什么?用2個空格的統(tǒng)統(tǒng)燒死。
  • 關于這臺具有里程碑意義的人類史上第一臺電子計算機ENIAC上應該預裝何種編輯器,工程師們還發(fā)生過這樣的爭吵:
    • Vim比Emacs好!
    • Emacs比Vim好!
    • 強烈推薦Sublime Text。
    • 你丫用編輯器的都是找虐,IDE才是王道。
    • 沒錯,要用就用世界上最好的公司微軟開發(fā)出來的世界上最好的IDE:Visual Studio。
    • 我早就看透了無謂的編輯器論戰(zhàn)什么的了,我要告訴樓上吵架的,你們全都是傻逼!
  • 最后,工程師們一致決定使用布線和開關來為他們即將發(fā)明的計算機進行編程,機智地避開了所有這些無謂的爭吵,最終齊心協(xié)力創(chuàng)造出了人類歷史上第一臺電子計算機:ENIAC。(鼓掌

  • (圖:兩位ENIAC程序員在運用敏捷開發(fā)方法進行愉快的結對編程。“自從拋棄伴隨我多年的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ù)信是因為克格勃對于他們費盡千辛萬苦搜集到的程序片段全都是括號感到極端憤怒,于是封鎖了世界各地的括號礦產資源,導致白宮方面不得不加強戰(zhàn)略濃縮括號的儲備。(誤
  • LISP發(fā)明的那一年Paul Graham其實還沒有出生。據(jù)說是因為某本叫做《Haste and Waste》的偽程裝黑圣典實在太有名了,以至于許多編程小白們把寫這本書的傳奇人物同Lisp之間畫上了等號。
  • 提升逼格確實是一種與遞歸調用同樣關鍵的算法思想。嗯,你懂的。

  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”的 報告,幻燈片演示中使用了大量xxx材料,引起了在場的少數(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,一個為非計算機科學家設計的非結構化的程序語言。

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

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

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

  • Lambda之究極神器系列:(Lambda之究極命令式編程、Lambda之究極宣告式編程、Lambda之究極GOTO語句、Lambda之究極Opcode)
    • Guy Lewis Steele, Jr. and Gerald Jay Sussman. "Lambda: The Ultimate Imperative"). MIT AI Lab. AI Lab Memo AIM-353. March 1976.
    • Guy Lewis Steele, Jr.. "Lambda: The Ultimate Declarative". MIT AI Lab. AI Lab Memo AIM-379. November 1976.
    • 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.
    • 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.
    • 后來大概有人覺得每次都投一篇正式的paper太麻煩了,于是干脆專門開了一個博客,名字就叫做Lambda the Ultimate。這樣他們將來要發(fā)《Lambda之究極割草機》《Lambda之究極廁所皮拔子》這樣的營銷廣告就更加方便了。
  • 長年累月的收視率究極失敗的晚間電視購物節(jié)目:也許是在暗諷MIT專注用SICP作為教給CS學生的第一門編程課20余年。
  • 眾Java程序員:聽說Java 8要開始支持lambda了,想來Java真是極先進的……等一下,我先看看lambda是個啥玩意?
    • 于是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”。

Ask me anything!

標簽: isp 代碼 推廣

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:你不知道Java的10件事

下一篇:9本Java程序員必讀的書