工程師都該懂的程式通識 - 語言的分類

#網頁開發 #程式語言 #語言分類 #五倍學院
工程師都該懂的程式通識 - 語言的分類
五倍技術部
技術文章
工程師都該懂的程式通識 - 語言的分類

直譯語言與編譯語言

直譯語言是什麼?

簡單來說不是使用編譯器來編譯,而是使用解釋器邊讀取邊執行,像是 Ruby、Python、JavaScript 都是直譯語言

編譯期:並沒有明確的編譯期,由直譯語言的解釋器 (Interpreter)
進行編譯,可以一邊讀取一邊執行,讀取完後會執行該程式碼,並且檢查語法,解釋器 (Interpreter)
像是口譯員,在讀取完完整的句子後,翻譯出來

執行期:解釋器(Interpreter)在執行期會將指令轉換為電腦能懂的語言,並且處理輸入、輸出,而這時候進行錯誤檢查,像是型別錯誤、定義變數的錯誤都會在這時候出現

編譯語言是什麼?

會先將程式碼編譯,再進行執行,像是 C、C#、JAVA 都是編譯語言

編譯期:由編譯器(Compiler)編譯成電腦看得懂的機器碼,這時期就會去檢查語法、型別等錯誤

執行期:這個階段會進行執行

直譯語言與編譯語言的差異

效能

編譯語言通常會先經過編譯期,事先把程式碼編譯好再執行,

不過直譯語言是邊讀取邊執行,所以在效能上,編譯語言會比直譯語言快。

Debug

直譯語言在 Debug 的時候會方便許多,因為不需要修改再下指令要求編譯並執行,且可以提供更詳細的錯誤訊息

不過目前有些編譯語言也會提供詳細的錯誤訊息,像是 Rust ,不過一樣需要下指令才會讓程式碼重跑編譯期跟執行期

動態語言跟靜態語言

靜態語言

靜態語言指的是在編譯期間,型別就已經是已知且不會變動的,並且會在編譯期間檢查型別是否有誤,我們在編譯語言的編譯期可以看到型別錯誤的訊息,像是 Rust、C、C#、JAVA 都是靜態語言

動態語言

動態語言就跟靜態語言不一樣了,在執行的時候才會去檢查型別,表示變數的型別其實是可以在執行期變動的,像是 Ruby、PHP、JavaScript 都是動態語言

不過其實有些動態語言也支援編譯器,不過他們仍然被歸類在動態語言中,像是 Ruby 、Python 都可以將程式碼轉換成虛擬機器可以執行的程式碼

高階語言與低階語言


而高階語言跟低階語言又是不同的分類,

高階語言

對於電腦來說比較抽象的語言,不過對開發人員來說是更富有易讀性,物件導向、高階資料結構這些都算是高階語言的特性

高階語言又根據特性分成以下類型

通用程式語言

用於處理各種不同類型的應用程式,可以適用網頁開發、軟體開發等多個領域,像是 Python、Java、C++、C#、Ruby、JavaScript

腳本語言

通常用於簡化特定的指令、應用於自動化任務上,通常是直譯語言,像是 Python、JavaScript 等

函數式語言

常用於大數據分析、數學運算,強調函數的不可變,像是 Haskell、Lisp、Scala、Erlang 等

物件導向語言

用物件來封裝,所應用到的大部分操作及變數都是物件,強調繼承概念,像是 Ruby、Java、C++、C#、Python 都是

特定領域語言

針對特定領域或任務所開發的語言,像是 HTML、SQL、CSS 都算是

低階語言

對於電腦來說更好閱讀的語言,對開發人員來說可能就沒這麼好閱讀,且開發人員需要注意記憶體管理,通常用於嵌入式系統開發、驅動程式開發,基本上是使用二進位形式

組合語言

相較二進位形式,更具有易讀性的語言,通常用符號來提高可讀性,可用來操作系統及驅動程式

機器語言

直接由 CPU 讀取及執行的指令,都是使用二進位形式

本文同步發佈於作者的個人網站 NINGLAB