古今計算機精彩簡史
計算機爲什麼是今天這樣子?本文將用一氣呵成的方式,把計算機發展歷史快速縷一遍。
小時候,見過計算器,能很快完成計算,當時心想,計算器真厲害,能提前把所有結果存儲下來。
後來,吵着鬧着要買小霸王學習機,最後如願變成遊戲機,經典遊戲“超級瑪麗”和“坦克大戰”至今歷歷在目。
後來,讀初中,有了象徵意義上的電腦課,穿着鞋套去電腦室,完全不會操作。有一次,把電腦弄死機了,嚇得不輕,梅老師瞪了我一眼,直接把電源關了。
然後,他回到他自己的電腦上,瀟灑地聽着任賢齊唱“讓我悲也好,讓我醉也好......”。那時,我知道了電腦還能唱歌。對電腦的屏幕畫面,也只有個模糊的印象:
那時的電腦顯示器,真的很醜陋,在很長一段時間內,我一直誤以爲,這一大坨東西就是電腦的全部。其實,它只是顯示器而已,遠非核心部件。
廣義上講,上面提到的電子計算器、小霸王學習機和初中見到的那些電腦,都是計算機。你現在拿在手上用於閱讀的手機,也是計算機。總之,計算機無處不在。
要了解計算機,就應該瞭解它的發展過程,去探索歷史上那些精彩的瞬間。本文從宏觀的角度,浮光掠影般瞭解一下計算機歷史。我們將以下圖的框架目錄來展開簡述:
一. 手動計算機
這裡講的手動計算機,是從遠古時代到17世紀初。很久很久以前,女同志白天忙採集,男同志白天忙打獵,昨日獵回幾隻羊,今朝逮回幾隻兔,都需要計數,這涉及到數的表示。
計數的歷史
遠古時代的人,也有十個手指,所以採用手指來計數,是很順其自然的事情,這也就是十進制的來源。小時候,我們學習十以內數字的加減,就是用手指來計數,來看常見表示:
我們來看下牛津詞典對digit的解釋,手指和數字的關係,一目瞭然。digit既有手指的意思,也有數字的意思。我們也順便學會了digit, digital, bit(binary digit)這幾個單詞。
想一下,手指計數有哪些不足?很顯然,當數字變大後,手指個數不夠了。而且,古代的人也需要吃飯, 某天逮回3只羊,用手指記錄下來,吃飯時還得保持手指計數的姿勢。
至於睡覺,那也睡不好,睡醒之後,手指鬆了,一切都忘了,這就尷尬了。得想其他辦法,很自然地,不要用手指這樣的“活物”來計數,用石頭吧,畢竟石頭不需要吃飯睡覺:
我們來看下calculus這個單詞。容易看到,石頭和計算也聯繫在一起,歷史淵源,原來如此。順便地,很輕鬆地學了單詞,下次看到calculator, calculation, 豈會陌生?
想象一下,要把石頭從北京帶到深圳,該多麻煩。石頭太笨重了,還是不好,得想其他辦法。於是,人們想到用繩子來計數,輕鬆多了,攜帶也更加方便了。
英語單詞cord就是繩子的意思,record就是記錄的意思,用繩子來記錄嘛。從詞源學來看,cord和record還是很有淵源的,很多東西聯繫起來就簡單了。
用結繩計數的人,可能會深刻理解李煜說的“剪不斷,理還亂”,“別是一般滋味在心頭”。我曾遇到過多次解不開結而苦惱的場景,相信你肯定也有,看着就頭大頭暈。
而且,繩子計數沒法處理篡改的問題。昨天我從你那裡借了3只兔,在繩子上打3個結,晚上回家偷偷解開其中的1個結,這就尷尬了,可見,要防止單方面偷偷篡改。
於是,古人採用了刻痕計數,有了刻痕,雙方立下契約,劈成兩半,每人一份,防止單方篡改。在商朝時,甲骨文很流行。前幾年,還有人在高考作文中用甲骨文呢。
我們提到的手指、石子、繩子和刻痕,主要用來計數,有了計數後,我們得對它進行加減乘除運算,這就涉及計算。接下來,我們簡要聊聊計算方法和工具的發展。
計算的歷史
中國的算籌,歷史悠久。也有很多詞語中包含籌,如觥籌交錯,運籌帷幄等,現代管理學中還有一門“運籌學”的課程。所謂籌,就是竹子,跟擺弄火柴棍差不多。
來看算盤,估計很多人見過,我家就有這個東西,“三下五除二”貌似盡人皆知。樓下培訓機構有個“珠心算課程”,曾經探頭去看了一眼,不怎麼火熱,來看看算盤:
再來看納皮爾籌,我琢磨了一下,道理很簡單,本質就是“九九乘法表”。比如,要計算125*8的值,預期結果是1000,具體是怎麼計算的呢?我試了一下,如圖:
納皮爾發明了對數,大家在高中肯定學過。大家應該記得這個符號:logaN, 那個N不僅僅指代正整數,也指代納皮爾名字中的N,表示對這位計算先驅的紀念。
後來,拉普拉斯說:對數的發明,以其節省勞力,而使天文學家的壽命增加一倍。伽利略說:給我空間、時間和對數,我就能創造宇宙。對數的本質是降維。
什麼意思呢?對數可以把乘法除法轉化爲加法減法。類似的做法是非常普遍的,傅里葉級數,傅里葉變換,拉普拉斯變換,Z變換,都是如此,降維降級處理。
以常用的傅里葉變換爲例,它把卷積運算降維爲乘法運算,實現了積分向乘法的轉換,使得計算複雜度大大降低,學過《信號與系統》的朋友,應該深有感悟。
再來看看由對數引出的滑尺計算,這個尺子是按照對數來製作的。很容易看出2*3=6,直接用尺子得到了結果,其背後的數學邏輯便是對數,log2+log3=log6, 所以2*3=6
那年國慶節,看了核潛艇之父黃旭華老先生獲得了共和國勳章獎,在他的一個視頻,有一把計算尺,在那個年代,就是靠類似的計算尺完成核潛艇計算的,挺不容易。
無論是算籌、算盤、納皮爾籌還是滑尺,都需要人蔘與具體過程和計算細節。那麼有沒有這樣的工具:輸入3和4,讓工具自動得到7呢?那就來看自動計算的工具吧。
二. 機械計算機
機械計算機時代是從17世紀初到19世紀末。契克卡德是德國人,他製作了一個計算鍾,能實現簡單自動計算,當時的工藝肯定沒有下圖這麼精美,下圖是後人做的複製品:
法國的帕斯卡,就是搞壓強的那個物理學家。著名編程語言Pascal之名,正是取自帕斯卡,以紀念這位計算機先驅。帕斯卡製作了加法器,看着那些齒輪,真想去擰一擰:
德國的數學家萊布尼茨,就更有名了,也是個非常自負的傢伙。大學高等數學中的“牛頓-萊布尼茨”公式,應該熟悉吧,還有萊布尼茨對於交錯級數是否發散的判定方法。
他敢跟牛頓爵爺叫板,還是有幾把刷子的。另外,據說,萊布尼茨對二進制的發明,也有較大的貢獻,這是現代計算機計算的基礎。萊布尼茨當時做了個機器,能做乘法:
在計算機發展史上,上面都是鋪墊,直到巴貝奇差分機,纔有了一些現代計算機理念的感覺。作爲現代計算機的鼻祖,巴貝奇爲計算機奮鬥一生的精神,一直鼓勵着很多人:
巴貝奇分析機更是思維超前,雖然最終沒有實際製造出來,但閃爍着天才般的智慧和火花,很多理念與現代計算機原理非常相似,來看下巴貝奇分析機模型,感覺挺炫酷的:
巴貝奇帶着遺憾離開人世,但給後人留下了寶貴遺產。1832年,17歲的Ada參觀了巴貝奇差分機,深深着迷。在巴貝奇去世後,Ada繼續發揚光大巴貝奇的工作,爲機器編程。
Ada被認爲是計算機歷史上的第一個程序員,是個女程序員哈。美國國防部曾經花了10年時間研發了一種編程語言,在命名時,他們想到了Ada, 並以此來命名,這就是Ada語言。
Ada的父親,是英國著名詩人拜倫,可曾記得他那經典的話:命運要我去流浪的地方還不少,去時還帶着多少可嘆的記憶;但我唯一的慰藉的事情是:最不幸的遭遇也不足爲奇。
扯遠了,迴歸正題。可以看到,在機械計算機時代,人們用各種方式來製造精巧的機器,讓機器完成簡單的計算,這是很大的飛躍, 因爲它把人從具體的計算過程中解放出來了。
三. 機電計算機
機電計算機是從19世紀末到20世紀40年代。機械和機電的差別,從名字上就可以看出來。自18世紀中葉以來,電學蓬勃發展,一些機器開始可以用電來驅動了。
美國憲法中這樣一條規定:每10年需要做一次人口普通。1880的人口普查,花了7年的時間纔得到結果。這就尷尬了,3年後,也就是1890年,還得再次普查。
隨着美國人口越來越多,會出現這樣的問題:前一輪還沒普查完,後一輪又要開始。於是,開始想辦法儘量實現自動化,霍爾瑞斯發明了製表機,並脫穎而出。
1890年的人口普查數據,是1880年的兩倍,但總共卻只耗時2年左右。當時,霍爾瑞斯製表機沒有選擇二進制,原因:二進轉換困難,二進制機器製作困難。
人口普查後,霍爾瑞斯名聲大振。在1896年,他開了個製表機公司。在1924年,公司改名爲IBM, 響噹噹的名字,快100年了,IBM在每個時代,幾乎都不落伍。
在第二次世界大戰中,各國基於軍事需要,大力投入了計算機的研究,但是,德國似乎不怎麼看好計算機,希特勒更相信武器本身的威力,更相信密集式地狂轟亂炸。
祖斯,德國著名的計算機先驅,在1935-1945這十年左右的時間,先後建成了Z1/Z2/Z3/Z4計算機,這些計算機時運不濟,命途多舛,要麼不被重用,要麼被戰火吞噬。
祖斯的Z1/Z2/Z3/Z4都很有創造性,比如,Z1驗證了機器計算的可行性,Z2是第一臺電磁式計算機,Z3可以用二進制控制Z4能用穿孔紙袋輸入輸出,甚至是處理條件。
在第二次世界大戰中,德國不怎麼重視計算機, 但美國就不一樣了,各類計算機相關的研究如火如荼地進行。也就是從這時開始,美國在信息領域的領先地位開始建立。
史蒂比茲在自己的廚房,用二進制做實驗,驗證二進制的可行性。很多書上能看到Model K, 這個K就是kitchen,是廚房的意思,他老婆取名Model K,挺有意思的哈。
貝爾實驗室的Model是一個系列,有很多不同的機型,比如Model I, 能完成遠程通信,畢竟電話與通信是貝爾實驗室的強項,這也爲後來計算機網絡的發展奠定了基礎。
哈佛大學也不甘落後,與IBM合作製作了哈佛Mark系列,不過其總設計師艾肯卻宣稱哈佛Mark I是他一個人搞起來的,IBM的小沃森自然很惱火,最終不得不分道揚鑣:
哈佛Mark II是當時最大的繼電器是計算機,有13000多個繼電器。我們來看看繼電器長啥樣子。我還記得,在讀初三時,物理課上,老師深入講解過繼電器:
1947年9月9日,那是一個秋季的九九豔陽天,一個蛾子飛進了哈佛Mark II的一個繼電器,導致繼電器失效,機器無法正常工作,這就是歷史上有名的bug事件。
如今的軟件開發中,大家常說的軟件bug, 就是指軟件缺陷或者漏洞,實際上,其實說的就是1947年的那隻該死的蛾子。工作之後,我天天抓bug,抓得不亦樂乎。
四. 電子計算機
電子計算機從20世紀40年代至今,一直方興未艾。 繼電器雖然可以用來做計算機零件,但並不完美,它是機械的,反覆移動,容易斷裂,而且速度還很慢。
於是出現了電子管,也稱真空管,繼電器能做的二進制功能邏輯,電子管都能做,而且速度更快,快1000倍。來看看電子管長啥樣,我覺得挺好看,顏值不錯:
當時,很多機電計算機由繼電器構成,但到了1945年,電子管計算機基本上取代了機電計算機,線路亂七八糟,操作計算機的方式就是插電線, 拔電線。
那時的操作員,相當於今天的程序員,都是“編程”。不同之處是,那時工作很繁瑣,需要耐心,有很多女孩子加入,於是,男孩子也不愁找不到女朋友了。
不像今天,程序員找個女朋友,費勁得很,可能是因爲女程序員太少了。不久之前,有個男程序員就跟我聊天,吐槽這件事情,我就聽聽,然後樂呵笑了。
電子管計算機固然快,但很昂貴,而且還受到“愛迪生效應”的影響:電子管工作的時候,容易發熱,動不動就被燒壞,這對於穩定性來說,是很致命的呢。
比方說,好不容易寫好一篇公衆號文章,辛辛苦苦花了一週時間,結果某個電子管燒壞了,整個計算機失靈,文章丟失,肯定要罵人,丟過文章的人都知道。
鑑於電子管的缺點,人們開始研究新的器材。1947年,晶體管誕生了,學過模擬電路的朋友,應該很熟悉這個東西,我的專業就與此相關。話不多說,來看下晶體管外形:
1956年,肖克利因發明了晶體管而獲得了諾貝爾物理學獎,晶體管改變了世界。肖克利本人名利雙收,但想搞更多的錢,於是開始開公司,可是他智商很高,情商太低。
於是,肖克利手下的八個人,先後離開了他。肖克利自然不滿,給這八個人扣了一個大帽子,即“八叛逆(The Traitorous Eight)”,這可是很厲害的八個人哦,一起來看看:
1957年,這八個人接受一家公司資助,成立了後來很有名的仙童半導體公司,上圖的的字母F, 就是Fairchild, 意思就是仙童。學電子電路的朋友,應該基本都聽說過這個公司,它被譽爲是硅谷的西點軍校。
喬布斯就曾將其比作成熟的蒲公英,只要風一吹,其創新的精神,就像蒲公英的種子那樣,四處飛揚,生根發芽。然而,天下沒有不散的筵席,他們又陸續離開仙童公司,於是有了Intel和AMD, 是不是很熟悉?
大家電腦中的CPU, 基本都是這兩家的搞出來的。這裡順便說一下,摩爾是Intel的創始人之一,他提出了著名的摩爾定律,至今仍有效,並支配着硬件的發展。貌似扯遠了,我們來繼續看當時的晶體管計算機:
儘管晶體管使計算機簡化了很大,但計算機仍然是龐然大物,還能繼續進行壓縮嗎?1958年,就職於德州儀器公司的傑克基爾比,發出疑問:爲什麼不在一塊硅片上,製造多個晶體管呢?這就是集成電路。
1959年,肖克利八弟子之一的羅伯特諾依斯(Intel創始人之一), 也想到了同樣的方法。他們後來爲誰先發明集成電路而爭論不休,現在普遍的觀點是:他們獨立發明了集成電路,可以說都是集成電路之父。
說到羅伯特諾依斯,在喬布斯的“Stay Hungry, Stay Foolish”演講中,他說自己被趕出蘋果公司後,曾去找過羅伯特諾依斯和HP創始人之一的戴維帕卡德,估計是一起喝酒吐槽。來看下集成電路芯片吧:
然而,這種集成度還遠遠不夠,能不能在更小的芯片上集成更多的晶體管和電子元件呢?當然可以,這就是大規模和超大規模集成電路。一塊芯片,指甲那麼大,居然集成了上億個晶體管和電子器件,而且還要正常穩定工作,每每想到此,就不寒而慄了。
當年佔據整個房間大小的計算機,如今竟然被集成得這麼小, 而且功能遠遠超過當時的計算機。這背後是數學、物理、化學、微電子學、電磁學、光學和量子力學等學科的功勞。難怪華爲任總說:搞芯片,砸錢是不行的,要砸數學家,物理學家和化學家。
講到這裡,似乎把計算機發展簡史敘述了一遍,但僅僅是從計算機硬件角度進行的,並不是計算機發展歷史的全部,甚至只能算作是冰山一角。
從計算機科學上看,沒有講到計算機科學之父——阿蘭圖靈,沒有講到現代計算機之父——馮諾依曼,沒有講到信息論之父——克勞德香農。此外,對於計算機型號、計算機公司、軟件發展、操作系統、編譯器、各種編程語言、數據庫、計算機網絡等等都沒有講到。所以這篇文章是不完整的,也不可能在一篇文章中把所有的東西介紹完畢,畢竟浩如煙海。
轉載內容僅代表作者觀點
不代表中科院物理所立場
來源:濤歌依舊
編輯:牧魚
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.