- RTC程序設(shè)計:實時音視頻權(quán)威指南
- 戴維
- 2328字
- 2024-05-14 10:03:22
1.1.2 計算機與互聯(lián)網(wǎng)
人工與機械計算
古人最早使用手指進行計算,但計算的結(jié)果不易存儲。《周易·系辭》中記載了“上古結(jié)繩而治”,在《左傳》中,人們用繩子打結(jié)的大小和數(shù)量來記錄各種結(jié)果。
戰(zhàn)國時期,籌棍逐漸成為計數(shù)工具,籌算成了主要的計算方法。“運籌帷幄”中的籌,便是算籌。秦始皇、張良都使用過算籌。而祖沖之用算籌算出了π的7位小數(shù)的近似值。
到元代中葉后,珠算逐漸取代了籌算。然而,這樣的計算終歸需要手工進行。
作為紡織的重要工具,中國的提花機在六七世紀通過“絲綢之路”傳到了西方。雖然主要用于紡織,但也可以看作一種自動編排和自動運行的機器。
1642年,19歲的帕斯卡(Blaise Pascal,法國,1623—1662)為了幫助父親減輕繁重的計算工作,設(shè)計了一臺能夠進行加減法的計算器。
1673年,萊布尼茨(G.W.Leibniz,德國,1646—1716)發(fā)明了一臺可以直接進行機械乘法的計算器,其中使用了“萊布尼茨輪”,這個原理直到20世紀仍在廣泛使用。
1804年,雅卡爾(Joseph Marie Jacquard,法國,1752—1834)發(fā)明了雅卡爾提花機,速度比手工快25倍。
1836年,著名的數(shù)學(xué)家查爾斯·巴比奇(Charles Babbage,英國,1791—1871)制造了一臺木齒鐵輪計算機,并利用雅卡爾打孔卡片的原理為這臺計算機編程。
1843年,英國詩人拜倫的女兒阿達·洛芙萊斯(Ada Lovelace,英國,1788—1824)設(shè)計了用上述機器計算伯努利數(shù)的運算方式。她被認為是世界上第一個程序員。
如今,我們也許會發(fā)現(xiàn),所謂計算機只是一臺高級的織布機,計算的本質(zhì)是機械運動。
計算的理論基礎(chǔ)
為了將自動計算變?yōu)閷嶋H可行的技術(shù),需要建立一套完備的理論體系。
萊布尼茨在1672—1676年研究了二進制算術(shù),他受《易經(jīng)》中八卦圖的啟發(fā),于1679年寫了題為De I'arthmetique binaire(《二進制算術(shù)》)的論文。
萊布尼茨一直希望發(fā)明一種普適的人工數(shù)學(xué)語言和演算規(guī)則,能夠?qū)θ祟惛餍懈鳂I(yè)的問題進行百科全書式的解法編纂,從而幫助人類減輕精神負擔。以下是他關(guān)于通用計算的描述。
具有善良意志的人們圍坐在桌子旁,來解決某個棘手的問題,他們用“通用語言”寫下這個問題,然后說:“讓我們算一下!”于是人們拿出筆來找到一個答案,其對錯必然可以被所有人接受。
17世紀,笛卡兒(René Descartes,法國,1596—1650)和費馬(Pierre de Fermat,法國,1601—1665)分別建立了幾何圖形坐標化的計算理論——解析幾何。
1847年,布爾(George Boole,英國,1815—1864)出版了The Mathematical Analysis of Logic,建立了邏輯學(xué)的計算理論——數(shù)理邏輯。
1879年,弗雷格(Frege,德國,1848—1925)設(shè)計了形式語言與概念文字,為所有數(shù)學(xué)概念找到了純邏輯術(shù)語。
19世紀末,康托爾(Cantor,德國,1845—1918)建立了集合的一般計算理論——集合論,并將無限納入了形式系統(tǒng)中。關(guān)于數(shù)學(xué)無窮的革命,幾乎是由他一個人獨立完成的。
1899年,希爾伯特(David Hilbert,德國,1862—1943)出版了《幾何基礎(chǔ)》,成為近代公理化方法的代表作。他發(fā)表的23個數(shù)學(xué)問題,成為那個時代一面鮮明的旗幟。
1931年,哥德爾(Kurt G?del,美籍奧地利,1906—1978)證明了哥德爾不完全性定理,即在任何一個形式邏輯系統(tǒng)中,總是存在某種命題,你無法證明其真,也無法證明其假。若要證明這類命題,需要引入更高階的符號系統(tǒng)來描述。這就像海森堡測不準原理之于物理一樣,為數(shù)學(xué)打下了基礎(chǔ)。
1936年5月,圖靈(Alan M.Turing,英國,1912—1954)在On Computable Numbers,with an Application to the Entscheidungsproblem中描述了“圖靈機”。從此,數(shù)學(xué)符號與實體世界第一次建立了聯(lián)系。
1948年10月,香農(nóng)(Claude E.Shannon,美國,1916—2001)于《貝爾系統(tǒng)技術(shù)學(xué)報》上發(fā)表了論文A Mathematical Theory of Communication,標志著現(xiàn)代信息論研究的開端。
同年,諾伯特·維納(Norbert Wiener,美國,1894—1964)的《控制論》出版。
以上事件,為電子計算機的誕生做好了理論鋪墊。
IBM和Intel
二戰(zhàn)后期,出于軍事目的,人們開始嘗試電子計算機的研發(fā)。
1945年底,第一臺通用電子計算機——ENIAC(Electronic Numerical Integrator and Computer)正式誕生。它最初用于彈道計算,后經(jīng)改造,能夠進行各種科學(xué)計算。
1951年10月,馮·諾依曼(John von Neumann,美國,1903—1957)擔任IBM公司的顧問。1952年新上任的總經(jīng)理小沃森,通過敏銳的觀察力,決定進入電子計算機領(lǐng)域。
1952年底,IBM 701正式完成,被用于商業(yè)計算領(lǐng)域。
此后近20年,各種大型計算機陸續(xù)被研制出來。到20世紀50年代末,IBM公司已經(jīng)能年產(chǎn)上千臺。
20世紀60年代,IBM 1401面世,使用了晶體管線路,并配有匯編和COBOL語言。
這期間,IBM 360的創(chuàng)始人布魯克斯(Frederick P.Brooks,美國,1931—2022)撰寫了著名的《人月神話》。
1969年,Intel的年輕工程師霍夫(Marcian Hoff,美國,1937—)受日本公司委托設(shè)計一款臺式計算機。他大膽地采用了可編程通用計算機的思想,將電路精簡為CPU、RAM、ROM、寄存器(Register)電路片這4個部件。另一位工程師費金(Federico Fagin,意大利,1941—)對這一電路進行了設(shè)計,在4.2mm×3.2mm的硅片上集成了2250個晶體管,用單個芯片實現(xiàn)了中央處理器的功能,這就是4位微處理器——Intel 4004。
1972年,8位處理器——Intel 8008誕生,在13.8 mm的芯片上可以執(zhí)行45種指令。
此后近30年,芯片集成電路的發(fā)展遵循著著名的摩爾定律,即處理器的性能大約每兩年翻一倍,同時價格下降為之前的一半。
如今,微型計算機已經(jīng)普及到千家萬戶。
互聯(lián)網(wǎng)的誕生
當人們有了各自的微型計算機后,自然希望能將彼此連通起來,進行更高效的通信與協(xié)作。
這些任務(wù)被交給了受美國ARPA[5]資助的各單位的研究生,這就是最早的互聯(lián)網(wǎng)的雛形——ARPANET。
1969年4月7日深夜,美國加州大學(xué)的斯蒂芬·克羅克(Steve Crocker,美國,1944—)為了不打擾其他室友睡覺,在廁所里寫下了第一份RFC(Request for Comments),這是用來制定互聯(lián)網(wǎng)協(xié)議的一種方式:發(fā)布者提出協(xié)議請求,請大家評論并給予建議。這樣一種謙卑的協(xié)議制定方式,為后續(xù)互聯(lián)網(wǎng)的平等發(fā)展,奠定了環(huán)境上的開放式基調(diào)。
之后,大量的網(wǎng)絡(luò)與協(xié)議在不斷創(chuàng)新中誕生,各種骨干網(wǎng)絡(luò)通過網(wǎng)絡(luò)協(xié)議彼此連接。最終TCP/IP成為互聯(lián)網(wǎng)中使用最廣泛的傳輸協(xié)議。其之上的各種應(yīng)用層協(xié)議(如SSH、HTTP、FTP、SMTP等)也逐漸成為標配。
為了使計算機與工具更加易用,人們在硬件之上搭載了一個最基本的軟件——操作系統(tǒng),將在下一節(jié)進行介紹。
- ASP.NET Core:Cloud-ready,Enterprise Web Application Development
- Testing with JUnit
- 程序員數(shù)學(xué):用Python學(xué)透線性代數(shù)和微積分
- Mastering Rust
- 大模型RAG實戰(zhàn):RAG原理、應(yīng)用與系統(tǒng)構(gòu)建
- Python機器學(xué)習(xí)基礎(chǔ)教程
- 響應(yīng)式架構(gòu):消息模式Actor實現(xiàn)與Scala、Akka應(yīng)用集成
- 輕松上手2D游戲開發(fā):Unity入門
- OpenStack Networking Essentials
- 動手打造深度學(xué)習(xí)框架
- Java 從入門到項目實踐(超值版)
- Python Deep Learning
- Java程序設(shè)計教程
- 軟技能2:軟件開發(fā)者職業(yè)生涯指南
- Flask Web開發(fā)實戰(zhàn):入門、進階與原理解析