程序猿的崛起,一篇文章看懂編程語言

出品:科普中國

製作:科了個普 楊陽

監製:中國科學院計算機網絡信息中心

知道自己不懂”是為第一境界;“不知道自己懂”是為第二境界; “知道自己懂了”是為第三境界。

無論你是小白,還是小白,還是小白,你在學習編程的過程中都會深深的體會到這三句話太準確了。學習編程意味著我們將要進入一個與日常生活經驗迥然不同的新領域,這最初的曲折辛酸,以及逐漸初窺門徑、小有所成並最終笑傲江湖、獨當一面的欣喜正是上面所說的學習三境界的真實寫照。這篇文章將要介紹計算機編程的前世今生,如果你想要了解程序猿這一高收入人群的真實生態,這篇文章就是IT界的《物種起源》,為你道盡它們的演化歷程和苦樂悲喜。

電腦的誕生

首先我們熱烈歡迎世界上最早的電腦登場,對,它的名字就叫安提基特拉機械,被認為是最初的電腦,展示於雅典國家考古博物館。

程序猿的崛起,一篇文章看懂編程語言

此機械是在希臘安提基特拉島附近的安提基特拉沉船裡發現的,所以叫安提基特拉機械。它誕生於公元前100年左右,屬於模擬計算機,至今已有二千多年曆史。類似的複雜工藝技術直到14世紀時歐洲製造了天文鐘後才重新出現。它是古代人類智慧的最高傑作之一。

那麼,真正的近代的電腦誕生於什麼時候呢?答案是1945年,諾伊曼發明數字式電腦。此處應該有掌聲。

程序猿的崛起,一篇文章看懂編程語言

諾先生規定用二進制替代十進制運算,並將計算機分成五大組件,他的思想為電子計算機的邏輯結構設計奠定了基礎,並且已成為計算機設計的基本原則。

1951年,EDVAC計算機宣告誕生。由於他在計算機邏輯結構設計上的偉大貢獻,諾先生被譽為「計算機之父」。

程序猿的崛起,一篇文章看懂編程語言

由上圖可以得知,直到93年,我們現在一般用戶熟知的window操作系統才誕生。

程序猿的崛起,一篇文章看懂編程語言

電腦程序運行的基本原理是什麼?

在一臺電腦裡有很多程序。其中,計算機做任何事情之前必須存在和運行的最重要的程序是操作系統程序。對,沒錯。就是你每次開機時候看到的那個熟悉的畫面,伴隨著叮噹叮噹的音樂,世界首富比爾蓋茨的微軟公司就是靠發明這個windows系統發大財的。這是計算機的主要“系統程序”。此操作系統程序不僅控制硬件部件,還控制其他軟件(許多應用程序),還可讓計算機用戶與計算機本身進行互動(比如通過鍵盤,觸摸屏,語音激活等等)。實在是萬能之神啊。

程序猿的崛起,一篇文章看懂編程語言

什麼是計算機語言?

與人類語言的複雜多變一樣,現在世界上已經有200種以上的計算機語言了。當然其中也有很多幾乎很少使用的語言,實際經常用到的語言只有20到30種。儘管如此,一個人要掌握太多計算機語言的話還是比較難的。

在那麼多的程序設計語言中,學習哪個才好?下面是最常用的語言,程序猿們的本事可不僅僅是直立行走那麼簡單,掌握這些工具中的大部分,並且精通其中的一兩種,才是一隻合格的現代程序猿。

程序猿的崛起,一篇文章看懂編程語言

人類語言是指,人類用特定的格式和詞彙來向他人發出指令,表達意願,進行交流。不同種類語言的詞彙和格式不盡相同,但可以達到相同的交流目的。

同樣,我們也可以用“語言”來控制電腦,讓電腦為我們做事情,這種語言叫做編程語言(Programming Language)。我們先簡單介紹一下常用編程語言。 編程語言也有固定的格式和詞彙,我們必須學會使用,才能在此基礎上編寫程序控制電腦。常用的編程語言有C語言,C ++,Java,C#,Python,PHP,JavaScript,Go語言,Objective-C,Swift等等,每種語言都有自己的優點。

程序猿的崛起,一篇文章看懂編程語言

計算機是如何聽懂編程語言的呢?實際上,如果沒有編譯器(一種專門程序)的存在,計算機是無法理解編程語言的。編譯器用來將編程語言編寫的指令轉換為機器語言。打個比方,人類有自己的人類語言,計算機也有自己的語言系統。它們使用只包含1和0的二進制代碼,1表示“on”,0表示“off”。編程語言更容易被人類所學習和掌握,而編譯器編譯出的計算機語言則更容易讓計算機接受。

程序猿的崛起,一篇文章看懂編程語言

程序猿使用編程語言編寫的程序代碼,編譯器可以理解,編譯器會將源代碼轉換為二進制代碼(目標代碼),然後彙編程序幫助這個目標代碼轉換為低級指令,指示機器執行,最後重新獲取結果。

為什麼要有編譯器的存在呢?

簡單的回答是,雖然編程語言已經編寫代碼告訴計算機該怎麼做了,但計算機只能理解兩種不同類型的數據:開和關。實際上,一臺電腦實際上只是一個開/關(晶體管)的集合。計算機所做的任何事情背後的真相只不過是無數晶體管的開閉組合。

二進制碼就是作為1和0的表示的組合,其中每個數字表示一個晶體管。二進制代碼分為字節組,8位數組表示8個晶體管。例如,11101001。現代計算機包含數百萬甚至數十億個晶體管,這意味著無法想象的大量組合。

於是這裡出現了一個問題,為了能夠編寫一個計算機程序,打出數十億的1和0將需要超人的腦力和精力,編一個小程序可能需要一兩年的工作。編程語言和編譯器中,前者對人友好,後者對機器友好,兩者通力合作,才能將人類的想法快捷而準確的傳達給計算機。

程序猿的崛起,一篇文章看懂編程語言

為什麼會存在那麼多的計算機語言?

數百種不同的編程語言使我們有可能創建計算機軟件,應用程序和網站。而無需編寫二進制代碼,他們讓我們相對容易的編寫,閱讀和理解代碼。同時,每種語言都帶有自己特殊的編譯器程序,它負責翻譯我們編寫的二進制代碼,讓機器明白我們的意圖。

那麼,為什麼我們有這麼多語言吶?

這是因為不同的語言被設計為用於不同的目的,一些可用於Web開發,一些用於編寫桌面軟件,其他用於解決科學和數字問題等。此外,編程語言也可以是低級或高級的。低級語言更接近計算機所理解的二進制代碼,而高級語言更容易編程,因為它們接近人類的語言和思維模式,設計簡單易於編寫。幾乎所有的主流編程語言都是高級語言。

編程語言生成的程序代碼是什麼樣的?

如何運行一個程序,並實際得到它來執行命令?編碼語言之間有所不同。一些語言保存到計算機後可以生成可以直接運行的單獨二進制文件,而其他語言的程序由某些軟件間接運行。例如,JavaScript程序文件將通過Chrome瀏覽器等運行。PHP程序文件將由像LAMP這樣的Web服務器運行。

以hello.py文件為例,Python語言附帶一個命令行,它將顯示程序的輸出文本“Hello,world!”。如果要將代碼輸入命令行並按enter鍵,程序將運行並且命令將被執行。是不是成就感油然而生啊。

程序猿的崛起,一篇文章看懂編程語言

運行程序時會發生什麼?

電腦實際上並不瞭解“Hello,world!”這個短語,不知道如何在屏幕上顯示。它只能理解開關。所以要真正運行一個命令,如打印“Hello,world!”,它必須將程序中的所有代碼翻譯成一系列可以理解的代碼。

首先,源代碼被翻譯成彙編語言。彙編代碼被翻譯成機器語言。機器語言直接作為二進制代碼執行。我們再來理解一些細節。編碼語言首先必須將其源代碼轉換為彙編語言,一種使用單詞和數字來表示二進制模式的超低級語言。根據編程語言不同,這可以用解釋器(程序被逐行翻譯)或編譯器(程序整體翻譯)來完成。

然後,編碼語言將彙編代碼發送到計算機的彙編器,該彙編器將其轉換為計算機可以直接理解並直接作為二進制代碼執行的機器語言。

程序猿的崛起,一篇文章看懂編程語言

結論

最後,最重要的是,有一個循序漸進的行動計劃,從學習編碼開始,你就將進入一個全新的世界。加油吧,少年。

程序猿的崛起,一篇文章看懂編程語言

程序猿的崛起,一篇文章看懂編程語言

“科普中國”是中國科協攜同社會各方利用信息化手段開展科學傳播的科學權威品牌。


分享到:


相關文章: