歡迎光臨陜西驪山低速風(fēng)機(jī)動力制造有限公司官網(wǎng)!

全國咨詢熱線:

400-8888-888

巴貝奇為什么沒有做成分析機(jī)_巴貝奇沒有造出來分析機(jī)原因

所屬分類:客戶案例 發(fā)布日期:2024-10-20 瀏覽次數(shù):4

  作者:孫北吉

  鏈接:https://www.zhihu.com/question/19811764/answer/19206777

  來源:知乎

  1801

  Joseph Marie Jacquard用打孔卡為一臺織布機(jī)編寫指令巴貝奇為什么沒有做成分析機(jī),在掛毯上織出巴貝奇為什么沒有做成分析機(jī)了“hello, world”字樣。當(dāng)時(shí)的reddit網(wǎng)友對這項(xiàng)工作的反響并不熱烈,因?yàn)樗热鄙傥策f歸調(diào)用,又不支持并發(fā),而且甚至都沒有注意在拼寫時(shí)恰當(dāng)?shù)貐^(qū)分大小寫。

Jacquard織布機(jī)是第一臺可進(jìn)行程序控制的織布機(jī)。用打孔卡進(jìn)行編程的概念,直到電子計(jì)算機(jī)被發(fā)明出來之后仍然被廣泛運(yùn)用。

 巴貝奇為什么沒有做成分析機(jī)_巴貝奇沒有造出來分析機(jī)原因

最早的Hello World程序(出自K&R C)打印的是全小寫的字符串:"hello, world"。

在許多英文技術(shù)社區(qū)里,不正確地使用大小寫發(fā)貼會被視作是小白的行為。(如把“Python”拼作“python”,把“FreeBSD”拼作“freebsd”,把“Qt”拼作“QT”)

reddit / Hacker News的月經(jīng)帖標(biāo)題:“.*: a new .*-based .* programming language”。底下常見的回帖形式:“它支持并發(fā)嗎巴貝奇為什么沒有做成分析機(jī)?”“沒有尾調(diào)用優(yōu)化果斷差評?!薄艾F(xiàn)在的編程語言已經(jīng)足夠多了,為什么我們還需要更多的語言?”……

  1842

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

Ada Lovelace為Charles Babbage的分析機(jī)寫了一個計(jì)算伯努利數(shù)的算法實(shí)現(xiàn),因此被后世公認(rèn)為是世界上第一個程序員。實(shí)際上,分析機(jī)由于其設(shè)計(jì)思想過于先進(jìn),在當(dāng)時(shí)根本沒有被制造出來。(Babbage的分析機(jī)一般被認(rèn)為是現(xiàn)代電子通用計(jì)算機(jī)的先驅(qū))

諷刺現(xiàn)在的某些“軟件架構(gòu)師”頂多只會紙上談兵地畫畫UML。

 巴貝奇為什么沒有做成分析機(jī)_巴貝奇沒有造出來分析機(jī)原因

  1936

  

  Alan Turing發(fā)明了世間一切程序語言的最終形態(tài),但很快巴貝奇為什么沒有做成分析機(jī)他就被英國軍情六處“請”去當(dāng)007了,以至于巴貝奇為什么沒有做成分析機(jī)他根本來不及為這些語言申請專利。

與通用圖靈機(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語言“不夠像”。盡管存在著這樣的批評,但事實(shí)上,C在當(dāng)時(shí)還沒有被發(fā)明出來。

Church是Turing在Princeton的博士生導(dǎo)師,他在λ演算方面的工作先于Turing指出了不存在一個對可判定性問題的通用解法,這后來證明和Turing針對停機(jī)問題提出的圖靈機(jī)模型是等價(jià)的。即著名的Church-Turing論題。

說Church“甚至做得更好”,因?yàn)棣搜菟銥楹笫浪械暮瘮?shù)式語言提供了理論基礎(chǔ)。

現(xiàn)在一種常見的關(guān)于函數(shù)式編程的批評就是:“它們與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ā)生過這樣的爭論:

空格比制表符好。

制表符比空格好。

4個空格比8個空格好。

什么?用2個空格的統(tǒng)統(tǒng)燒死。

關(guān)于這臺具有里程碑意義的人類史上第一臺電子計(jì)算機(jī)ENIAC上應(yīng)該預(yù)裝何種編輯器,工程師們還發(fā)生過這樣的爭吵:

Vim比Emacs好!

Emacs比Vim好!

強(qiáng)烈推薦Sublime Text。

你丫用編輯器的都是找虐,IDE才是王道。

沒錯,要用就用世界上最好的公司微軟開發(fā)出來的世界上最好的IDE:Visual Studio。

我早就看透了無謂的編輯器論戰(zhàn)什么的了,我要告訴樓上吵架的,你們?nèi)际巧当疲?/p>

最后,工程師們一致決定使用布線和開關(guān)來為他們即將發(fā)明的計(jì)算機(jī)進(jìn)行編程,機(jī)智地避開了所有這些無謂的爭吵,最終齊心協(xié)力創(chuàng)造出了人類歷史上第一臺電子計(jì)算機(jī):ENIAC。(鼓掌

  <span style="font-size: 14px;"><span style="font-family: 微軟雅黑;"><img src="https://pic1.zhimg.com/d68f666665dedd412ddebed585cb781c_b.jpg" data-rawwidth="640" data-rawheight="417" class="origin_image zh-lightbox-thumb" width="640" data-original="https://pic1.zhimg.com/d68f666665dedd412ddebed585cb781c_r.jpg"></span></span>

  

(圖:兩位ENIAC程序員在運(yùn)用敏捷開發(fā)方法進(jìn)行愉快的結(jié)對編程?!白詮膾仐壈殡S我多年的Emacs和HHKB Pro、改用布線和開關(guān)進(jìn)行編程之后,我的左手小指麻痹奇跡般地痊愈了?!逼渲幸晃唤邮懿稍L時(shí)如是說。另一位則表示:“新的編程方式讓曾經(jīng)專注頸椎病20年的我得到了徹底的康復(fù),不用再整天盯著顯示屏,身心同時(shí)得到了極大的放松,值得大力推廣!”)

  1958

  John McCarthy和Paul Graham發(fā)明了LISP。由于冷戰(zhàn)期間的戰(zhàn)略括號資源儲備所造成的巨大成本,LISP從未流行過。盡管欠缺足夠的流行度,LISP(現(xiàn)在叫做“Lisp”,有時(shí)叫“Arc”)仍然被視作一門有影響力的語言,在關(guān)鍵的算法思想諸如遞歸(recursion)和提升逼格(condescension)上尤為典范。

  (原文的腳注:

幸運(yùn)的是對于計(jì)算機(jī)科學(xué)來說,花括號和尖括號的供應(yīng)尚充足。

“關(guān)鍵的算法思想”這一說法來自于Verity Stob的Catch as catch can。)

戰(zhàn)略括號儲備:據(jù)信是因?yàn)榭烁癫獙τ谒麄冑M(fèi)盡千辛萬苦搜集到的程序片段全都是括號感到極端憤怒,于是封鎖了世界各地的括號礦產(chǎn)資源,導(dǎo)致白宮方面不得不加強(qiáng)戰(zhàn)略濃縮括號的儲備。(誤

LISP發(fā)明的那一年P(guān)aul Graham其實(shí)還沒有出生。據(jù)說是因?yàn)槟潮窘凶觥禜aste and Waste》的偽程裝黑圣典實(shí)在太有名了,以至于許多編程小白們把寫這本書的傳奇人物同Lisp之間畫上了等號。

提升逼格確實(shí)是一種與遞歸調(diào)用同樣關(guān)鍵的算法思想。嗯,你懂的。

  1964

  John Kemeny和Thomas Kurtz創(chuàng)造了BASIC,一個為非計(jì)算機(jī)科學(xué)家設(shè)計(jì)的非結(jié)構(gòu)化的程序語言。

  1970

  Niklaus Wirth創(chuàng)造了Pascal,一個過程式的語言。很快就有人開始聲討Pascal,因?yàn)樗褂昧祟愃啤皒 := x + y”這樣的語法,而不是更為人熟知的類C語法“x = x + y”。盡管存在著這樣的批評,而事實(shí)上當(dāng)時(shí)C還沒有被發(fā)明出來。

  1972

  Dennis Ritchie發(fā)明了一把射擊時(shí)能同時(shí)向前和向后兩個方向發(fā)射子彈的絕世好槍。但他對此發(fā)明造成的致死和終身殘疾數(shù)量感到還不夠滿意,所以他又發(fā)明了C語言和Unix。

  1972

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

  1980

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

Smalltalk的設(shè)計(jì)從很大程度上受到了Logo的影響。

  1983

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

Ada曾經(jīng)是美國國防部指定的嵌入式計(jì)算機(jī)系統(tǒng)唯一開發(fā)語言,在其研發(fā)上耗資巨大。(國防承包商們于是不用靠販賣軍火給黑幫來維持生計(jì)了)

雖然有充分的證據(jù)顯示Ada的整型范圍溢出檢查失敗導(dǎo)致弄壞了歐空局的一枚Ariane 5運(yùn)載火箭,不過美國國防部發(fā)言人對此表示:關(guān)我P事。

  1983

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

這篇文章寫出來的時(shí)候,一個被稱作C++0x的新標(biāo)準(zhǔn)還遙遙無期。許多編譯器對它的支持似乎永遠(yuǎn)停留在“partial”階段。

請自行腦補(bǔ)終結(jié)者里的T-800……

無論什么都改變不了C/C++是個經(jīng)典的“緩沖區(qū)溢出語言”的事實(shí)。

  1986

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

“C的內(nèi)存安全性十分好”。

Smalltalk編譯出來的程序以低效緩慢著稱。

  1987

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

  1991

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

希特勒在提出建立“純正的雅利安人國家”“統(tǒng)一的大德意志帝國”并實(shí)現(xiàn)了德奧合并之后,翌年便入侵了波蘭,引發(fā)了第二次世界大戰(zhàn)?!拔乙粋€人征服了整個歐洲!”(感覺好棒好棒的)

  1995

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

PHP最顯著的特點(diǎn)就是:代碼是可以直接嵌在HTML文檔中的。

  1995

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

最早關(guān)于Ruby的國際會議不是RubyConf,而是每年在澳大利亞舉辦的OSDConf。

這里應(yīng)該是在吐槽Ruby的殺手級應(yīng)用Ruby on Rails實(shí)在太有名了,以至于超越了原來的Ruby語言本身。

Matz并沒有為“Ruby”這個名字注冊商標(biāo)——本著開源的黑客精神。

而DHH(RoR的作者)卻把“Ruby on Rails”這個(包含了“Ruby”字樣的)名稱注冊成了商標(biāo),并且阻止別人未經(jīng)授權(quán)使用“Rails”這個名字。

(雖然搶注商標(biāo)對開源來說未必是一件壞事情——Python基金會今年在歐洲還卷入了一場商標(biāo)之爭了不是)

假如你從來沒聽說過的話,莫霍克族戰(zhàn)士據(jù)說是像這個樣子的:

  <span style="font-family: 微軟雅黑;"><img src="https://pic1.zhimg.com/7e10cff5668a2a0ed6c27fe46f1693a0_b.jpg" data-rawwidth="960" data-rawheight="1200" class="origin_image zh-lightbox-thumb" width="960" data-original="https://pic1.zhimg.com/7e10cff5668a2a0ed6c27fe46f1693a0_r.jpg"></span>

  

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

  <span style="font-family: 微軟雅黑;"><img src="https://pic1.zhimg.com/a53e1a778eddb651f3dc2cfdd1956eac_b.jpg" data-rawwidth="670" data-rawheight="450" class="origin_image zh-lightbox-thumb" width="670" data-original="https://pic1.zhimg.com/a53e1a778eddb651f3dc2cfdd1956eac_r.jpg"></span>

  

  1995

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

  1996

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

  2001

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

  2003

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

  <span style="font-family: 微軟雅黑;"><img src="https://pic4.zhimg.com/ed5e89116eb0ab80431332beaaaefc07_b.jpg" data-rawwidth="800" data-rawheight="261" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic4.zhimg.com/ed5e89116eb0ab80431332beaaaefc07_r.jpg"></span>

  

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

  

  在此程序哥也推薦JAVA程序員看個高端黑的電視劇《家有開源仔》

  -“你們在干什么”

  -“我們在看A片”

  -“希望你們沒有在研究java或者開源平臺”

  -“沒有”

  -“good"

  光是這段對白足以吸引你去看了!

  中文版預(yù)告在這:https://v.youku.com/v_show/id_XMTkxNDk2ODY0.html

  程序員之家

  programmer_club

▲長按二維碼“識別”關(guān)注

評論列表

還沒有評論,快來說點(diǎn)什么吧~

發(fā)表評論

真誠期待與您的合作

獲取報(bào)價(jià)·了解更多業(yè)務(wù)·7*24小時(shí)專業(yè)服務(wù)

聯(lián)系我們