計(jì)算機(jī)語言發(fā)展史以及未來方向
計(jì)算機(jī)已經(jīng)成為人大腦的延伸
計(jì)算機(jī)已經(jīng)成為我們這個時代的核心設(shè)備,每時每刻都需要它。計(jì)算機(jī)也不再是大家以
前印象中的臺式機(jī)、服務(wù)器,已經(jīng)演變成了我們身邊隨處可見的物體。比如:手機(jī)、平板電
腦、筆記本,以及很多人沒意識到,但實(shí)際上設(shè)備內(nèi)部包含“計(jì)算機(jī)”的設(shè)備。比如:電視機(jī)、
微波爐、汽車,甚至小孩玩的智能小機(jī)器人等。
可以這么說,計(jì)算機(jī)已經(jīng)成為了人類身體的延伸、大腦的延伸,成為不可或缺的一部分。
未來,計(jì)算機(jī)將真的進(jìn)入人體、進(jìn)入大腦,真正成為人體的一部分。比如,在科幻電影《黑
客帝國》中,主角被超級針頭插在頸部后方,便能使他快速學(xué)習(xí),改變大腦神經(jīng)網(wǎng)絡(luò),幾秒
就成為功夫高手,如圖 ?所示。

?算法是計(jì)算機(jī)的靈魂,編程語言是塑造計(jì)算機(jī)靈魂的工具
計(jì)算機(jī)是如何工作的?對于普通人來說,這很神秘。讓計(jì)算機(jī)具備“靈魂”,可以按照人
的意志運(yùn)行,甚至某天按照計(jì)算機(jī)自己的意志運(yùn)行(如果這一天實(shí)現(xiàn),科幻電影《終結(jié)者》
中的場景也會成為人類社會的可能選項(xiàng)),其核心就是“算法”。 “算法就是計(jì)算機(jī)的靈魂”
算法的實(shí)現(xiàn)又依賴于“計(jì)算機(jī)編程語言”。
計(jì)算機(jī)編程語言的發(fā)展,是隨著計(jì)算機(jī)本身硬件發(fā)展而發(fā)展的。硬件速度越快、體積越
小、成本越低,應(yīng)用到人類社會的場景就會越多,那么所需要的算法就會越復(fù)雜,也就要求
計(jì)算機(jī)編程語言越高級。
最初重達(dá)幾十噸但一秒只能運(yùn)算 5000 次的 ENIAC(世界上第一臺計(jì)算機(jī)),只能做非常
小的應(yīng)用,比如:某些情況的彈道計(jì)算?,F(xiàn)在任何一個人的手機(jī)運(yùn)算能力都可以秒殺那個年
代地球上所有計(jì)算機(jī)運(yùn)算能力的總和。
計(jì)算機(jī)編程語言的發(fā)展歷經(jīng)了從低級到高級發(fā)展。發(fā)展的核心思想就是“讓人更容易編
程”。越容易使用的語言,就有越多人使用;越多人使用,就有越多協(xié)作;越多協(xié)作,就可
以創(chuàng)造越復(fù)雜的物體;現(xiàn)代社會,一個軟件動輒幾十人協(xié)作、幾百人協(xié)作、甚至幾千人協(xié)作
也成為可能,這自然就為開發(fā)復(fù)雜軟件提供了“人力基礎(chǔ)”。這是一個人類普遍的社會現(xiàn)象,
越容易使用的工具,通過使用數(shù)量,通過大量人的協(xié)作,徹底改變某個行業(yè)甚至人類社會。
計(jì)算機(jī)語言經(jīng)歷了三代:第一代是機(jī)器語言,第二代是匯編語言,第三代是高級語言。
· 第一代語言:機(jī)器語言( 相當(dāng)于人類的原始階段)
機(jī)器語言由數(shù)字組成所有指令。當(dāng)讓你使用數(shù)字編程,寫幾百個數(shù)字、甚至幾千個數(shù)字,
每天面對的是純數(shù)字,我大膽預(yù)測:“程序員群體 100%會有精神問題”。
機(jī)器語言通常由數(shù)字串組成(最終被簡化成 01),對于人類來說,機(jī)器語言過于繁瑣。
使用機(jī)器語言,人類無法編出復(fù)雜的程序。如下為一段典型的機(jī)器碼:
1. 0000,0000,000000010000 代表 LOAD A, 16
2. 0000,0001,000000000001 代表 LOAD B, 1
3. 0001,0001,000000010000 代表 STORE B, 16
· 第二代語言:匯編語言(相當(dāng)于人類的手工業(yè)階段)
為了編程的方便,以及解決更加復(fù)雜的問題。程序員開始改進(jìn)機(jī)器語言,使用英文縮寫
的助記符來表示基本的計(jì)算機(jī)操作。這些助記符構(gòu)成了匯編語言的基礎(chǔ)。如下是一些常見的
匯編語言助記符(單詞)比如:LOAD、MOVE 之類,這樣人更容易使用了。識別幾百、幾千
個單詞,感覺要比幾百幾千個數(shù)字,美妙多了。匯編語言相當(dāng)于人類的手工業(yè)社會,需要技
術(shù)極其嫻熟的工匠,但是開發(fā)效率也非常低。
匯編語言雖然能編寫高效率的程序,但是學(xué)習(xí)和使用都不是易事,并且很難調(diào)試。另一
個復(fù)雜的問題,匯編語言以及早期的計(jì)算機(jī)語言(Basic、Fortran 等)沒有考慮結(jié)構(gòu)化設(shè)計(jì)
原則,而是使用 goto 語句來作為程序流程控制的主要方法。這樣做的后果是:一大堆混亂
的調(diào)轉(zhuǎn)語句使得程序幾乎不可能被讀懂。對于那個時代的程序員,能讀懂上個月自己寫的代
碼都成為一種挑戰(zhàn)。
匯編語言仍然應(yīng)用于工業(yè)電子編程領(lǐng)域、軟件的加密解密、計(jì)算機(jī)病毒分析等。
· 第三代:高級語言(相當(dāng)于人類的工業(yè)階段)
對于簡單的任務(wù),匯編語言可以勝任。但是隨著計(jì)算機(jī)的發(fā)展,滲透到了工作生活的更
多的方面,一些復(fù)雜的任務(wù)出現(xiàn)了,匯編語言就顯得力不從心(應(yīng)該說是程序員使用匯編語
言解決復(fù)雜問題出現(xiàn)了瓶頸)。于是,出現(xiàn)了高級語言。像我們熟知的 C、C++、Java 等等
都是高級語言。
高級語言允許程序員使用接近日常英語的指令來編寫程序。例如,實(shí)現(xiàn)一個簡單的任務(wù):
A+B=C , 使用機(jī)器語言、匯編語言和高級語言的的實(shí)現(xiàn)如下圖 1-2 所示.

從上面這個簡單的加法計(jì)算,可以看出越到高級語言,越接近人的思維,人使用起來就
越方便。
高級語言的出現(xiàn),尤其是面向?qū)ο笳Z言的出現(xiàn),相當(dāng)于人類的工業(yè)社會,高級語言極其
易用,編程門檻和難度大大降低,大量的人員進(jìn)入軟件開發(fā)行業(yè),為軟件爆發(fā)性的增長提供
了充足的人力資源。目前以及可預(yù)見的將來,計(jì)算機(jī)語言仍然處于“第三代高級語言”階段。
· 為什么擔(dān)心軟件開發(fā)人才飽和是多余的?
很多未進(jìn)入或剛進(jìn)入軟件行業(yè)的朋友,特別擔(dān)心一個問題“這么多人學(xué),會不會飽和?”。
這其實(shí)是杞人憂天,越多人編程,才能為軟件行業(yè)提供巨量的人力資源,才能實(shí)現(xiàn)我們以前
都不敢想的應(yīng)用開發(fā)。要以發(fā)展的眼光看問題,而不是靜態(tài)的眼光。
越多人編程,越多應(yīng)用需要做,越多應(yīng)用需要做,更需要越多人編程。這就像一個農(nóng)夫
剛剛進(jìn)入工業(yè)社會,擔(dān)心服裝工廠工人招滿了怎么辦? 他沒有想到工業(yè)發(fā)展后,鋼鐵廠也需
要工人、汽車廠也需要工人。年輕朋友請記住“軟件行業(yè)發(fā)展永無止境,將會整合人類現(xiàn)有
所有行業(yè),也會創(chuàng)造很多新的行業(yè)”。
· 未來 30? 年必將是軟件人才的世界
未來 30 年的世界必將是軟件人才的世界;除了普通軟件的應(yīng)用,大批的人工智能應(yīng)用
也將出現(xiàn);未來自動駕駛、自動翻譯、機(jī)器人保姆甚至機(jī)器人女友都會進(jìn)入我們的生活,甚
至計(jì)算機(jī)編程和基因工程結(jié)合,長生不老都能實(shí)現(xiàn);有興趣的童鞋,推薦大家看《未來簡史》
這本書,把握一下未來的脈搏。
