假如有一個計算機編程語言群, 會滿屏是Hello,World?

對於計算機而言,程序是其靈魂,如果沒有了程序,計算機也就成了“植物機”了!

因而如何寫程序/編程序(可不是瞎編,否則小強(BUG)總會給你意外驚喜)一直以來都是計算機行業最重要的事情!

為了更好編寫程序,聰明的我們發明了編程語言,和人類的語言不斷髮展一樣,計算機編程語言也不斷在發展,目前,全世界已經有2500多種編程語言,常用的也有數十種。

如果這些編程語言聚在一起,他們會說些什麼呢?Hello,World!會刷屏麼?

假如有一個計算機編程語言群, 會滿屏是Hello,World?

一人成群


/*機器語言在計算機出生的時候也就同步出生了,這個時候的語言,完全由二進制代碼01來書寫,所以這個時候的語言非常人能寫、非常人能讀,但是也是計算機能直接理解的語言。就像新生的嬰兒,他發出的你聽不懂的聲音其實確確實實是他最初的語言,相反這個時候你跟他說Hello,baby!他的反應很可能是拉一次屎,或者乾脆哭起來*/

/*這個年代唯一的好處是編程語言只有機器語言,壞處是每臺機器都有每臺機器自己的機器語言*/

01畢竟太高冷,人類用符號代替01也就出現了第二代計算機語言,彙編語言。

假如有一個計算機編程語言群, 會滿屏是Hello,World?

二元時代

/*彙編語言也稱為符號語言,它的一大進步是用符號/標識符/助記符來代替二進制碼。例如ADD表示加法,記起來相對簡單(當然如果沒學英語那也不簡單)。雖然彙編語言有了一些進步,但是嚴格意義上來說,彙編語言還是直接硬件相關的語言,依然屬於“嬰兒語”*/

人類一直想讓計算機直接理解人類語言,但是計算機天生只能理解二進制的天性也決定了,機器語言才是計算機的最愛!

但是,機器語言(彙編語言)實在太繁瑣,人類最不愛繁瑣。

所以,高級語言的出現也就必然了!

當然,計算機的高級語言或許並不太高級,但是,就像美女這種東西需要綠葉來襯托才顯示出美一樣,有了機器語言這種反人類的語言,高級語言也就真的高級了。

假如有一個計算機編程語言群, 會滿屏是Hello,World?

圖片來源於周星馳電影《唐伯虎點秋香》


高級語言和“低級”語言會如何對話呢?

假如有一個計算機編程語言群, 會滿屏是Hello,World?

三分天下

/*FORTRAN是第一個計算機高級程序設計語言,FORTRAN是IBM公司於1957年開始針對彙編語言的缺點著手研究開發的。FORTRAN在那個時代計算機最喜歡做的事——數值、科學和工程計算領域發揮了重要作用*/

/*不論FORTRAN目前發展如何,但是FORTRAN的出現具有劃時代的意義,它首次讓大眾學習編程成為了可能,間接讓計算機開始真正改變歷史。——任何東西要改變歷史必先滲透人類日常。計算機的普及其實是先從程序語言普及開始的*/

/*從另外一個角度也可以看出FORTRAN的影響力,現今大多數高級語言都或多或少和它有關係,有的是比較遠的近親,有的甚至是比較近的近親——不過這樣說應該就是親戚了!*/

假如有一個計算機編程語言群, 會滿屏是Hello,World?

計算機語言裙帶關係網

在FORTRAN後又陸陸續續有很多成員加入了計算機語言這個大家庭,他們共同虐待了一代又一代程序員——這裡並沒有矛盾,雖然從1957年開始計算至今也不過60年,但是程序員的職業生涯可是很短的!

1958年誕生了通用科學計算語言Algol。

1960年誕生了基於數學的Lisp語言。

1960年通用商務語言COBOL發佈。

1971年,源於Algol 68的Pascal語言誕生,取代了Fortran程序教科書的地位。

……

這一時期,也能看得出,計算機仍然還遠未飛入尋常百姓家,計算機主要做的還是科學計算方面的事。

時間來到1970年,1970年對計算機而言是一個神奇的數字。計算機時間和眾多編程語言要從1970年1月1日開始算起,因為很多編程語言起源於UNIX系統,而UNIX系統認為1970年1月1日0點是時間紀元,所以我們常說的UNIX時間戳是以1970年1月1日0點為計時起點時間的。

提到UNIX,是為了引出B語言,而提B語言,是為了引出C語言。B語言是UNIX系統上的第一個高級語言,B和彙編語言有太多相似,所以貝爾實驗室——這個實驗室於計算機,相當於少林寺於功夫——對B語言進行了改進和優化,這就產生了C語言。

1972年C語言正式出山,從此一直在江湖至今。

假如有一個計算機編程語言群, 會滿屏是Hello,World?

C位出道

C語言後,又陸陸續續出了很多經典語言,不過,這更進一步奠定了C語言的霸主地位。

顯然這得益於C語言運行速度上向機器語言學習,易學易用性上又徹底高級語言化。

過了不到10年,大事發生了。C語言畢竟是用經典的計算機做事思維——過程最重要,一步兩步三步四步走到天黑——來設計的程序,而隨著程序的大型化,這種思維折磨得程序員脫髮越來越嚴重,最終用人類思維——對象最重要(其實這裡的對象並不是那個對象意思,否則現在的程序員也不會快等於單身狗的意思了)——來設計的面嚮對象語言誕生了。

/*面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。*/

/*面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。*/

/*面向過程思想太深入,導致現今很多程序員依然是用面向對象方式工作,面向過程生活,所以一步一步走向單身狗!這也是程序員的哀歌!*/

*/同情!*/

上面兩段話之所以寫在註釋符裡,就是怕程序員看到後不滿,寫在註釋符裡安全多了,畢竟很多程序員並不寫註釋,也不讀註釋。

1967年5月20日(多麼詩情的日子,不過這裡有BUG,520只不過是中文裡的讀音強加了它“我愛你”的意思,外文中並沒有“我愛你”的意思!),挪威科學家Ole-Johan Dahl和Kristen Nygaard正式發佈了Simula 67語言。

Simula 67被認為是最早的面向對象程序設計語言。

1980年,基於Simula 67的Smalltalk語言誕生,這是第一個純面嚮對象語言。

可以看出,有對象思想,到真正面向對象經歷了很長一段時間。

假如有一個計算機編程語言群, 會滿屏是Hello,World?

對象來了!

1983年,在C的基礎上,誕生了C++(注意,不是C Plus)。因為繼承了C的特點,C++稱霸一時。

不過成也C,敗也C,因為吸收了太多C的特性,後來還貪杯吸收了很多當時有效的計算機語言特性,導致C++成為了虐待程序員最狠的語言——C++幾乎是最難學習和掌握的語言了。

隨著應用的發展,1987年腳本語言Perl發佈。

1995年,C++最強勁的對手Java出生。

Java最大的特性是跨平臺,畢竟在這個時代,Windows已經不能一手遮天,所以跨平臺特性迅速得到認可。

假如有一個計算機編程語言群, 會滿屏是Hello,World?

對象多了!

毋庸置疑,世界在發展,計算機人性化是必然,計算機語言學人話已經進行了這麼多年,學人思維也是勢在必行。

所以,後面的幾年,計算機語言一直朝著面向對象發展,畢竟這更符合人的思維。

2000年,Java最強勁的對手C#出生。

C#出生名門,當然,Java同樣出生名門。所以,這一時期的語言已經不再是思想上的競爭——這兩種語言實際上區別不是太大,更多是其背後金主之間的競爭。

假如有一個計算機編程語言群, 會滿屏是Hello,World?

C#:我爹是微軟!微軟:坑爹啊,老子Hard呢!

至於接下來,計算機語言如何發展,這很難猜想!不過,可以肯定的是,簡單肯定是終極目標!

簡單到寫任何一個程序都像寫“Hello,World!”一樣簡單。

相信這都不是計算機語言的最終目標。實現真正的說話即編程應該是編程語言的宿命。

當然,相信,就算這個時代終到來,底層機器語言依然還是存在,畢竟和計算機用機器語言符合“見人說人話,見鬼說鬼話”的定理。

相關推薦

推薦中...