- 實戰Java程序設計
- 北京尚學堂科技有限公司
- 1547字
- 2019-10-16 10:45:07
1.1.2 算法是計算機的“靈魂”,編程語言是塑造計算機“靈魂”的工具
計算機是如何工作的?對于普通人來說,這很神秘。讓計算機具備“靈魂”,可以按照人的意志運行,甚至某天按照計算機自己的意志運行(如果這一天真的實現,科幻電影《終結者》中的場景也許就會成為人類社會的可能選項),其核心就是“算法”。算法就是計算機的“靈魂”,而算法的實現又依賴于計算機編程語言。
計算機編程語言的發展,是隨著計算機硬件的發展而發展的。硬件速度越快、體積越小、成本越低,應用到人類社會的場景就會越多,那么所需要的算法就會越復雜,也就要求計算機的編程語言越高級。
最初重達幾十噸但一秒只能運算5000次的ENIAC(世界上第一臺計算機),只能做非常有限的工作,如某些情況下的彈道計算。現在任何一部手機的運算能力都可以秒殺那個年代地球上所有計算機運算能力的總和。
計算機編程語言的發展歷經了從低級語言到高級語言,發展的核心思想就是“讓編程更容易”。越容易使用的語言,就會有越多的人使用;越多的人使用,就有越多的協作;越多的協作,就可以創造出越復雜的產品。現代社會,一個軟件動輒幾十人、幾百人,甚至幾千人協作都成為可能,這自然就為開發更復雜軟件提供了“人力基礎”。這是人類社會的一種普遍現象,即越容易使用的工具,使用的人就越多,通過大量的協作,將徹底改變某個行業繼而對人類社會產生影響。
計算機語言經歷了三代:第一代是機器語言,第二代是匯編語言,第三代是高級語言。
■ 第一代語言:機器語言(相當于人類社會的原始階段)
機器語言由數字組成所有指令。這意味著,程序員無論想完成什么樣的計算任務,都只能用“0”和“1”等數字來編寫,長此以往,筆者大膽預測:程序員們100%會有精神問題。
機器語言通常由二進制數字串組成,對于普通人來說,機器語言過于難理解。使用機器語言,人們將無法編出復雜的程序。如下為一段典型的機器碼:
0000,0000,000000010000代表LOAD A,16
0000,0001,000000000001代表LOAD B,1
0001,0001,000000010000代表STORE B,16
■ 第二代語言:匯編語言(相當于人類社會的手工業階段)
為了編程的方便,以及解決更加復雜的問題。程序員們開始改進機器語言,使用英文縮寫助記符來表示基本的計算機操作,這些助記符構成了匯編語言的基礎。常見的匯編語言助記符(單詞)有LOAD、MOVE等,這樣編程就更容易,畢竟識別幾百、幾千個單詞,要比識別幾百、幾千個數字輕松多了。匯編語言相當于人類歷史上的手工業社會時期,需要技術極其嫻熟的工匠,但是開發效率相對較低。
匯編語言雖然能編寫高效率的程序,但是學習和使用都不是件易事,并且程序很難調試。此外,匯編語言以及早期的計算機語言(BASIC、FORTRAN等)沒有考慮結構化設計原則,而是使用goto語句來作為程序流程控制的主要方法。這樣做的后果是:一大堆混亂的跳轉語句使得程序幾乎不可能被讀懂。對于那個時代的程序員,能讀懂上個月自己寫的代碼都成為一種挑戰。
匯編語言現在仍應用于工業電子編程、軟件加密/解密、計算機病毒分析等領域。
■ 第三代:高級語言(相當于人類社會的工業化階段)
對于簡單的任務,匯編語言可以勝任,但是隨著計算機滲透到了工作、生活的更多方面,一些復雜任務出現了,這時匯編語言就顯得力不從心(應該說是程序員使用匯編語言解決復雜問題出現了瓶頸),于是,出現了高級語言。像人們熟知的C、C++、Java等都是高級語言。
高級語言允許程序員使用接近日常英語的指令來編寫程序。例如,實現一個簡單的任務A+B=C,使用機器語言、匯編語言和高級語言來實現如圖1-2所示。

圖1-2 三代計算機語言的直觀對比
從上面這個簡單的加法計算可以看出,越是高級的語言,越接近人類的思維,使用起來就越方便。
高級語言的出現,尤其是面向對象語言的出現,使得編程的門檻和難度都大大降低了,大量的人員進入到軟件開發行業,為軟件爆發性增長提供了充足的人力資源。目前以及可預見的將來,計算機語言仍然處于“第三代高級語言”階段。
- Python科學計算(第2版)
- Building a Game with Unity and Blender
- Java完全自學教程
- Cocos2d-x游戲開發:手把手教你Lua語言的編程方法
- INSTANT Weka How-to
- Unity 5.x By Example
- TypeScript項目開發實戰
- 量化金融R語言高級教程
- C編程技巧:117個問題解決方案示例
- Python Web自動化測試設計與實現
- Julia High Performance(Second Edition)
- PhoneGap 4 Mobile Application Development Cookbook
- OpenCV Android開發實戰
- Web前端開發技術:HTML、CSS、JavaScript
- Microsoft HoloLens By Example