計算機語言發展簡史

光電科學史 發佈 2020-01-07T10:25:06+00:00

計算機已經成為人大腦的延伸計算機已經成為我們這個時代的核心設備,每時每刻都需要它。計算機也不再是大家以前印象中的台式機、伺服器,已經演變成了我們身邊隨處可見的物體。比如:手機、平板電腦、筆記本,以及很多人沒意識到,但實際上設備內部包含「計算機」的設備。

計算機已經成為人大腦的延伸

計算機已經成為我們這個時代的核心設備,每時每刻都需要它。計算機也不再是大家以前印象中的台式機、伺服器,已經演變成了我們身邊隨處可見的物體。比如:手機、平板電腦、筆記本,以及很多人沒意識到,但實際上設備內部包含「計算機」的設備。比如:電視機、微波爐、汽車,甚至小孩玩的智能小機器人等。

可以這麼說,計算機已經成為了人類身體的延伸、大腦的延伸,成為不可或缺的一部分。

算法是計算機的靈魂,程式語言是塑造計算機靈魂的工具。

計算機是如何工作的?對於普通人來說,這很神秘。讓計算機具備「靈魂」,可以按照人的意志運行,甚至某天按照計算機自己的意志運行(如果這一天實現,科幻電影《終結者》中的場景也會成為人類社會的可能選項),其核心就是「算法」。 「算法就是計算機的靈魂」算法的實現又依賴於「計算機程式語言」。

計算機程式語言的發展,是隨著計算機本身硬體發展而發展的。硬體速度越快、體積越小、成本越低,應用到人類社會的場景就會越多,那麼所需要的算法就會越複雜,也就要求計算機程式語言越高級。

最初重達幾十噸但一秒只能運算5000次的ENIAC(世界上第一台計算機),只能做非常小的應用,比如:某些情況的彈道計算。現在任何一個人的手機運算能力都可以秒殺那個年代地球上所有計算機運算能力的總和。

計算機程式語言的發展歷經了從低級到高級發展。發展的核心思想就是「讓人更容易編程」。越容易使用的語言,就有越多人使用;越多人使用,就有越多協作;越多協作,就可以創造越複雜的物體;現代社會,一個軟體動輒幾十人協作、幾百人協作、甚至幾千人協作也成為可能,這自然就為開發複雜軟體提供了「人力基礎」。這是一個人類普遍的社會現象,越容易使用的工具,通過使用數量,通過大量人的協作,徹底改變某個行業甚至人類社會。

計算機語言經歷了三代:第一代是機器語言,第二代是彙編語言,第三代是高級語言。

第一代語言:機器語言(相當於人類的原始階段)

機器語言由數字組成所有指令。當讓你使用數字編程,寫幾百個數字、甚至幾千個數字,每天面對的是純數字,我大膽預測:「程式設計師群體100%會有精神問題」。

機器語言通常由數字串組成(最終被簡化成01),對於人類來說,機器語言過於繁瑣。使用機器語言,人類無法編出複雜的程序。如下為一段典型的機器碼:

1. 0000,0000,000000010000 代表 LOAD A, 16

2. 0000,0001,000000000001 代表 LOAD B, 1

3. 0001,0001,000000010000 代表 STORE B, 16

第二代語言:彙編語言(相當於人類的手工業階段)

為了編程的方便,以及解決更加複雜的問題。程式設計師開始改進機器語言,使用英文縮寫的助記符來表示基本的計算機操作。這些助記符構成了彙編語言的基礎。如下是一些常見的彙編語言助記符(單詞)比如:LOAD、MOVE之類,這樣人更容易使用了。識別幾百、幾千個單詞,感覺要比幾百幾千個數字,美妙多了。彙編語言相當於人類的手工業社會,需要技術極其嫻熟的工匠,但是開發效率也非常低。

彙編語言雖然能編寫高效率的程序,但是學習和使用都不是易事,並且很難調試。另一個複雜的問題,彙編語言以及早期的計算機語言(Basic、Fortran等)沒有考慮結構化設計原則,而是使用goto語句來作為程序流程控制的主要方法。這樣做的後果是:一大堆混亂的調轉語句使得程序幾乎不可能被讀懂。對於那個時代的程式設計師,能讀懂上個月自己寫的代碼都成為一種挑戰。

彙編語言仍然應用於工業電子編程領域、軟體的加密解密、計算機病毒分析等。

第三代:高級語言(相當於人類的工業階段)

對於簡單的任務,彙編語言可以勝任。但是隨著計算機的發展,滲透到了工作生活的更多的方面,一些複雜的任務出現了,彙編語言就顯得力不從心(應該說是程式設計師使用彙編語言解決複雜問題出現了瓶頸)。於是,出現了高級語言。像我們熟知的C、C++、Java等等都是高級語言。

高級語言允許程式設計師使用接近日常英語的指令來編寫程序。例如,實現一個簡單的任務:A+B=C , 使用機器語言、彙編語言和高級語言的的實現如下圖所示。

從上面這個簡單的加法計算,可以看出越到高級語言,越接近人的思維,人使用起來就越方便。

高級語言的出現,尤其是面向對象語言的出現,相當於人類的工業社會,高級語言極其易用,編程門檻和難度大大降低,大量的人員進入軟體開發行業,為軟體爆發性的增長提供了充足的人力資源。目前以及可預見的將來,計算機語言仍然處於「第三代高級語言」階段。

為什麼擔心軟體開發人才飽和是多餘的?

很多未進入或剛進入軟體行業的朋友,特別擔心一個問題「這麼多人學,會不會飽和?」。這其實是杞人憂天,越多人編程,才能為軟體行業提供巨量的人力資源,才能實現我們以前都不敢想的應用開發。要以發展的眼光看問題,而不是靜態的眼光。

越多人編程,越多應用需要做,越多應用需要做,更需要越多人編程。這就像一個農夫剛剛進入工業社會,擔心服裝工廠工人招滿了怎麼辦? 他沒有想到工業發展後,鋼鐵廠也需要工人、汽車廠也需要工人。年輕朋友請記住「軟體行業發展永無止境,將會整合人類現有所有行業,也會創造很多新的行業」。

未來30年的世界必將是軟體人才的世界;除了普通軟體的應用,大批的人工智慧應用也將出現;未來自動駕駛、自動翻譯、機器人保姆甚至機器人女友都會進入我們的生活,甚至計算機編程和基因工程結合,長生不老都能實現;有興趣的童鞋,推薦大家看《未來簡史》這本書,把握一下未來的脈搏。

關鍵字: