所有的程式語言先會編譯成C,再編譯成彙編,才能在機器上運行?

首先這種認識是不正確的,所有的程式語言要轉化成機器語言然後才去運行,肯定不會轉化成C語言去運行,因為C語言還是要匯總成機器語言去運行。從類別上講程式語言主要分成兩種,一種在運行之前提前生成二進位文件,機器上電直接運行就可以了;另外一種是一邊運行一邊編譯最終的結果也是轉化成二進位文件,這樣機器才能準確的識別出來。只要是遵循馮諾依曼的架構都要轉化成二進位的文件讓機器去運轉執行,可能在未來量子電腦發展起來架構會有所改變,起碼在很長的一段時間內還會繼續這種架構存在。

程式語言如何實現跨平台運行

就拿典型的程式語言Java作為例子來闡述,java屬於典型的跨平台語言,跨平台的語言編程的好處是在任何一個作業系統上完成程式碼編寫之後就可以在任何平台來運行,一般開發java都在windows平台上開發,但真正在部署的時候既可以在linux伺服器上運行,也可以在windows伺服器上運行。但在實際運行過程中還是要遵循各自的指令體系,做這個時期的關鍵點就在於java的虛擬機,所以在安裝運行環境的時候,不同的作業系統的版本是不一致的,java在編譯的時候都會轉化成位元組碼,位元組碼在不同作業系統的虛擬機都可以運行,虛擬機裡面會把主流的作業系統指令都分別集成進去,也就是java版本在更迭的時候除了增加基本語法之外,還要在修改不同的作業系統底層實現,這樣子才能真正做到跨平台運行。

跨平台在嵌入式領域使用的比較多,如果用C++開發的程式碼可以在宿主機上直接運行,調試完畢了然後再燒錄到嵌入式板卡裡面去運行,畢竟直接在PC的linux上調試程式碼,要比直接在板子里調試要方便的多,這就是跨平台的好處,除了方便開發程式碼還極大方便調試。

C語言在程式語言中的地位

雖然不是每種程式語言都要轉化成C語言再去運行,但很多程式語言的底層都是C語言來實現的,這是真實存在的事實,但還是有很多人覺得C語言已經過時了,起碼從招聘的簡章C語言的比例在下降,這個主要原因是中國程式設計師大部分都做著互聯網的工作,互聯網主要從事應用級開發比較多,所以一些集成化程式語言在中國比較能夠吃得開,像python,php,Java在中國都有著良好的生態基礎,這是中國軟體環境決定的。

C語言在很多基礎領域還是首選的程式語言,語法簡潔但靈活多樣,在實際功能的的時候效率高性能強,在很多領域還是第一程式語言,主要在通訊行業以及嵌入式領域還是C語言的主戰場。非常流行的人工智慧在底層很多功能實現也是基於C語言完成,只不過C語言的角色從前台走向了幕後,但重要性並沒有因此而降低,即使選擇C語言作為入門的程式語言,在基礎過硬的情況下照樣能找到合適的工作,不要迷信C語言已經不行了之類的話語。

對於程式語言的編譯原理以及運行過程還是要多去涉獵,如果純正的高級程式語言可能很少去關係這些個原理,都是去操心如何架構等方面的問題,底層如何實現功能對於上層調用方式都有決定性因素,儘管很多人不推薦第一門程式語言選擇C語言,但從個人的角度出發,還是建議C語言作為入門程式語言,即使不是從事這方面的工作,起碼在從知識體系上還是有很大的好處,希望能幫到你。

Tags: