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

時間:2020-04-02 08:23:57 來源:互聯網 閱讀:-


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

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

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


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

1.對自動的追求

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

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

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


但是你能看出來當時的人對“自動的機器”有多么著迷。人們迫切想要這個東西,而且人們認為有這個東西很正常。“土耳其行棋傀儡”是個魔術,但下面這個東西可不是魔術——

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

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

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

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

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


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

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

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

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

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


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

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

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

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


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

2.第一臺通用計算機

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

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

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


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

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

差分機的七分之一完成品

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

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

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

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


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

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

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

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


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

3.現代計算機

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

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

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

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

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

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


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

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

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


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

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

x = 3

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

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

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


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

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

查爾斯·巴貝奇

參考文獻

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

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

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

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

推薦閱讀:神馬收錄域名出售

(正文已結束)

免責聲明及提醒:此文內容為本網所轉載企業宣傳資訊,該相關信息僅為宣傳及傳遞更多信息之目的,不代表本網站觀點,文章真實性請瀏覽者慎重核實!任何投資加盟均有風險,提醒廣大民眾投資需謹慎!

加盟廖排骨能不能赚钱 股市行情大盘k线图 p2p网贷理财平台排名 青海11选五走势图彩票 股票分析报告范文 终于破了11选5出号规律 政府基金配资 内蒙古11选五前三直 内蒙古快三基本走势一定牛网 好运快3开奖查询 哪个武汉市哪里有炒股可以配资的 浙江20选5预测 精准时时彩计划网页版 一码公开免费资料 江西11选5开奖结果一定牛 股票涨跌幅计算 真钱假钱的识别方法