久久综合免费人伦观看|欧美一区二区三区在线|亚洲一区日韩精品中文字幕亚洲|久久久久久中文字幕2020

    <cite id="k500l"><listing id="k500l"></listing></cite>
    <strike id="k500l"><table id="k500l"></table></strike>
    <blockquote id="k500l"></blockquote>

      1. <source id="k500l"></source>
        甘肅信息港

        《計算機思維》2:自動的機器

        分享到:
         2020-04-02 08:35:40 來源: 閱讀:-G0


        《計算機思維》2:自動的機器

        今天我們繼續(xù)講《計算機思維》。了解一些歷史有利于理清思路。上一講講算法,我們總結(jié)了一個歷史教訓,那就是人的思想,可以領先于技術(shù)應用。人類并不是先有了計算機才有的計算機思維,而是早就有了計算機思維,在那兒等著計算機出現(xiàn)。借用一個佛教術(shù)語,啟蒙時代以來思想家已經(jīng)“照見”了計算機的可能性。

        我們看計算機產(chǎn)品是最容易過時的,今年買的手機明年就換代了。硬件可以被淘汰,軟件可以被升級,但是,思想很難過時,數(shù)學永不過時。計算機的發(fā)展故事,是把思想實現(xiàn)的故事。


        我們孜孜以求的,是一個“自動的”機器。

        1.對自動的追求

        下面這張圖中是一個會下國際象棋的機器人,叫“土耳其行棋傀儡(Mechanical Turk)”。它在1770年出現(xiàn)在歐洲,能跟人類棋手對弈,而且水平相當高。它擊敗過拿破侖·波拿巴和本杰明·富蘭克林這樣的名人。很多人懷疑棋盤下面那個柜子里可能藏了一個人,可是打開柜子只能看到一堆齒輪。這個下棋機器人在歐美縱橫征戰(zhàn)了數(shù)十年。

        《計算機思維》2:自動的機器

        ……當然,那時候可沒有“深藍”和“AlphaGo”。一直到 1857 年這個秘密才被揭開,事實是……里面真的藏了一個人。只不過因為設計巧妙,看不出來而已。


        但是你能看出來當時的人對“自動的機器”有多么著迷。人們迫切想要這個東西,而且人們認為有這個東西很正常?!巴炼湫衅蹇堋笔莻€魔術(shù),但下面這個東西可不是魔術(shù)——

        《計算機思維》2:自動的機器

        這是“作家機械人偶(The Writer)”,由瑞士鐘表師皮埃爾·雅克·德羅在1768 年設計制造 [1]。它能自己拿筆蘸墨水,在紙上寫字畫畫 ——

        《計算機思維》2:自動的機器

        《計算機思維》2:自動的機器

        如果你見過這個會寫字的機器人,再見到會下棋的機器人可能就不會感到那么不可思議了吧。其實下棋和寫字還是有本質(zhì)區(qū)別,寫字只是“自動”,而下棋需要智能。但是在談論智能之前,我們得知道,自動,已經(jīng)是一個了不起的成就。


        這個作家機器人偶是怎么寫字畫畫的呢?你必須能把那些字和畫的信息存儲到機器里才行。而這是通過機器人后背的一個齒輪實現(xiàn)的 [2],齒輪上代表不同字母的鋼片的形狀決定了字母寫出來什么樣 ——

        《計算機思維》2:自動的機器

        《計算機思維》2:自動的機器

        而那些字母是可以替換的!你換一組字母,或者換一套代表繪畫筆畫的齒輪,作家機器人偶就可以寫出別的內(nèi)容。就好像我們現(xiàn)在玩游戲機,換個卡帶就是一個新游戲一樣。

        十八世紀真是個蒸汽朋克式的美好時代。如果人類一直沒有發(fā)明電力,今天我們看到的就都是這樣的自動機器。我們想想,像八音盒這種東西,它為什么能播放特定的樂曲?其實是一樣的道理。我借用威爾遜在《生命視角》中的一個說法,這是“嚴格的靈活性”:操作步驟是嚴格固定的,但是可以接受靈活的輸入,產(chǎn)生不同的輸出。


        1804 年 [3],法國人發(fā)明了一種提花織機(Jacquard loom),它能從一個長長的打孔卡上讀取信息,織出特定式樣的花紋。打孔卡上的孔可以讓鉤子穿過去,鉤子控制織線??棛C是同一個織機,打孔卡可以隨便更換,換張卡就是不一樣花紋。

        《計算機思維》2:自動的機器

        提花織機的打孔卡,圖片來自維基百科

        打孔卡,可以說是機械化自動機器的軟件。打孔卡這個技術(shù)思想在此后有廣泛的應用,IBM公司最早就是靠這東西起家的……


        但是,“嚴格的靈活性”畢竟不是真正的靈活性。打孔卡技術(shù),距離可編程計算,還有根本性的一步。

        2.第一臺通用計算機

        你可能不知道,第一臺可編程的通用計算機,并不是電子的,而是機械的。

        1820年,英國人查爾斯·巴貝奇(Charles Babbage)把“嚴格的靈活性”發(fā)揮到了極致,設計了一個叫做“差分機”的東西,它可以做多步驟的復雜計算。

        巴貝奇的野心是用差分機計算正確的數(shù)學用表。當時公開發(fā)行的對數(shù)表、三角函數(shù)表都是人手算出來的,其中有大量的錯誤。巴貝奇認為人是靠不住的,這種計算應該交給機器。巴貝奇跟英國政府說,數(shù)學用表的錯誤會導致英國海軍的計算出錯,那么艦艇就出事兒,搞不好可能會沉船,現(xiàn)在我發(fā)明了一種機器,能做冷酷無情的計算。英國政府被說服了,真給了他一筆經(jīng)費。


        巴貝奇的設計包括 25000 個部件,具有強大的計算能力……但是他做了十年只完成了七分之一 ——

        《計算機思維》2:自動的機器

        差分機的七分之一完成品

        而這純粹是因為硬件技術(shù)不允許。巴貝奇必須用齒輪和杠桿實現(xiàn)各種運算,可是這些東西沒法做得特別精細,很容易這里卡殼、那里跳線,而且零件越多越容易出問題。英國政府一直看不到成果,把巴貝奇的經(jīng)費停了。

        巴貝奇做不出來,可是他特別能想……1830年,巴貝奇又自費發(fā)明了一個更厲害的東西,叫“分析機”。分析機,是一個可編程的通用計算機!

        分析機的神來之筆在于它把操作步驟也寫進了打孔卡之中,這樣計算步驟就是不固定的了,就是可編程的了。不但如此,分析機還可以根據(jù)中間的計算結(jié)果,決定下一步的計算操作 —— 也就是說,它允許程序里有“If… then… ”這種條件語句,它甚至還包括循環(huán)語句!分析機有輸入部分、有計算部分、有存儲中間計算結(jié)果的部分,還有輸出打印的部分……分析機,是真正的計算機。

        巴貝奇還有一個合作者專門給分析機寫程序,可以說是人類歷史上第一個程序員,而且這是一個女程序員,叫埃達·洛夫萊斯(Ada Lovelace),他倆用了十余年的時間一直在研究分析機。洛夫萊斯甚至還想到,分析機不僅能用來做數(shù)值計算,還能作符號計算 —— 它不僅僅是個“計算”機,它是個能處理任何信息的機器!


        ……可惜的是,分析機也沒做成。下面這張圖是分析機的一個實驗部分,來看一眼世界第一臺計算機吧 ——

        《計算機思維》2:自動的機器

        人的思想要是領先時代太多,是不是一個悲劇呢?巴貝奇因為發(fā)明數(shù)學表格的計算理論工具而得過英國皇家天文學會的金獎,他還是第一個提出“科學管理”的人。但是差分機和分析機被當時的人視為是巴貝奇身上的污點,什么實用成果都沒拿出來,結(jié)果有一萬兩千個零件被溶解報廢了。

        1871年巴貝奇去世的時候 ,《泰晤士報》甚至還專門諷刺了他一番。


        而通用計算機這種東西再次被人提出來,則是70年后的事情了。

        3.現(xiàn)代計算機

        1945年,因為電子真空管技術(shù)條件成熟和美國軍方資助,世界第一臺能用的通用計算機終于被做出來了,這就是著名的 ENIAC 。ENIAC 是現(xiàn)代計算機的鼻祖,它奠定了所謂的“馮·諾依曼架構(gòu)”。而在此之前,艾倫·圖靈已經(jīng)提出了可編程通用計算機的完整數(shù)學理論。

        我認為約翰·馮·諾依曼是人類歷史上最聰明的幾個人之一。他是數(shù)學家、物理學家,是博弈論的創(chuàng)始人,還是現(xiàn)代計算機架構(gòu)的提出者 —— 不過馮·諾依曼自己對此是否認的,他說這個設計是一幫人討論的結(jié)果,他只不過負責做筆記而已。

        相對于巴貝奇的設計,馮·諾依曼架構(gòu)的關鍵改進在于它有了“內(nèi)存”這個概念。負責計算的CPU速度很快,而從打孔卡讀取計算步驟的速度非常慢,所以現(xiàn)在的設計是先一次性地把打孔卡的程序信息讀進來,存到內(nèi)存里,然后在計算過程中讓CPU直接和內(nèi)存交換信息,這就能大大加快計算速度。

        從提花織機的打孔卡提供了“嚴格的靈活性”,到巴貝奇的可編程通用計算機,到馮·諾依曼架構(gòu)的CPU和內(nèi)存,這是非常清晰的演變。現(xiàn)在我們看到了,圖靈再厲害,“編程”這個思想不是他先提出的;馮·諾依曼再神,計算機系統(tǒng)不是他發(fā)明的。

        計算機是這么一個不斷改進的東西。一代一代的工程師提出各種各種巧妙的設計 ——

        要在硬件上實現(xiàn)信息的數(shù)字化,人們發(fā)現(xiàn)應該用二進制。十進制很直觀,但是要用硬件實現(xiàn)十進制,你的電子管就得用十個級別的電壓代表0-9這10個數(shù)字,這不但不容易實現(xiàn),而且很容易出錯。二進制只需要電子管和存儲點有開和關兩個狀態(tài)就行,這就大大增加了可靠性。


        然后香農(nóng)設計了邏輯門……我們專欄講過,從硬件到軟件的關鍵思想是分層。

        然后你還要考慮CPU時鐘的同步問題。如果沒有“步”這個概念,各方面的計算沒有協(xié)調(diào),可能會導致兩組電信號同時出現(xiàn),系統(tǒng)就會出錯。

        然后你還要考慮存儲信息和操作過程中可能會有各種小錯誤,而這就有一個自動糾錯的問題……等等等等。


        我就想,為什么說信息行業(yè)是個創(chuàng)新行業(yè)呢?因為第一,這里面的想法太密集,有太多可以改進之處;第二,改進的方向相當明確。這就是說每個參與者都知道自己能干什么……在其他領域,可沒有這么好的事情。

        從計算機思維的角度來說,這一講的核心教訓是你必須考慮硬件。永遠都別忘了計算機是個機器,而機器有數(shù)學算法之外的、自己的特點和脾氣。比如說,

        x = 3

        這個語句,在數(shù)學上的意思無非就是變量 x 的值是 3,是一個事實陳述。但是對編程來說,這不是一個陳述,而是一個動作:是把用 x 標記的那一段內(nèi)存位置,賦值為 3。

        機器不理解你要說的事實,機器只會按你的指令做各種動作。我們在編程的時候要 debug,要想辦法控制內(nèi)存,要提升計算性能,就必須考慮硬件自身的特點。

        今天我們用的一切計算機,包括手機、汽車、凡是通用計算機,就都是馮·諾依曼架構(gòu)。當然馮·諾依曼架構(gòu)不是唯一的可能性?,F(xiàn)在人們正在研究新的架構(gòu),比如量子計算機和神經(jīng)網(wǎng)絡計算機 —— 那些東西有自身的編程特點。


        不過在我看來,巴貝奇要是看到今天的計算機,是不會感到特別驚奇的。

        《計算機思維》2:自動的機器

        查爾斯·巴貝奇

        參考文獻

        [1] http://www.sohu.com/a/253593989_776727

        [2] http://news.ifeng.com/a/20170820/51695992_0.shtml

        [3] 《計算機思維》說打孔卡提花織機發(fā)明于 1700 年代早期,我調(diào)研了歷史,認為是作者寫錯了。

        《計算機思維》2:自動的機器

        推薦閱讀:蘋果xr和蘋果x

        文章評價COMMENT

        還可以輸入2000個字

        暫無網(wǎng)友的評論

        意見反饋

        ×
        J