電腦語言類型有:1、高階語言和低階語言;2、動態型別與靜態型別;3、強制型別與弱型別;4、編譯型解釋型半編譯半解釋;5、物件導向型和過程導向;6、區分編譯型和解釋型。
電腦語言三大類(以層次分)
與硬體的相關度逐步下降
電腦語言有很多種類;根據功能和實現方式的不同大致可分為3大類即機器語言彙編語言和高級語言。
1、機器語言,電腦不需要翻譯就能直接辨識的語言被稱為機器語言(又被稱為二進位程式碼語言)該語言是由二進制數0或1組成的一串指令。
2、彙編語言,組合語言用英文字母或符號字串來取代機器語言把不易理解和記憶的機器語言按照對應關係轉換成彙編指令彙編語言比機器語言更便於閱讀和理解。
3、高階語言,高階語言不是一門語言而是一類語言的統稱它比組合語言更貼近於人類使用的語言易於理解、記憶和使用。由於高階語言和電腦的架構、指令集無關因此它具有良好的可移植性。高階語言應用非常廣泛進行程式開發的高階語言包括C、C 、Java、VB、C#、Python、Ruby等。
常見的幾種分類方法分類
1. 高階語言和低階語言
常見的低階語言有:機器碼、組合語言
高級語言常見如:c,c ,java,python,PHP,Ruby,go,kotlin,wift。
機器碼,電腦能夠直接辨識的二級制編碼,無論語言多高階都要轉成二級製檔來讓電腦辨識運作。
彙編,用助記符Mnemonics取代機器指令的操作碼,用位址符號Symbol或標號Label取代指令或操作數的位址,在不同的裝置中有著不同的指令集
#高階語言,為省去程式設計時候的不必要的操作細節,節省程式碼量,可讀性強維護性強,更貼近人性化。
高階語言與低階語言的區別:高階語言大部分不能直接更硬體打交道,這使得相對來的程式運行速度降低,總之一句話來說那種語言更接近人性化的語言就更高級。
高階語言編譯的六個過程
編譯就是要把高階語言的原始程式翻譯成目標程式的過程。
整個過程一般可劃分為詞法分析、語法分析、語意分析、中間程式碼產生、程式碼最佳化和目標程式碼產生6個階段。
詞法分析,詞法分析是第一階段,這個階段的任務是從左到右一個字元的讀入來源程序,對構成原始程式的字元流進行掃描和分解,從而辨識出一個字。
文法分析,文法分析的任務是在詞法分析的基礎上將單字程式分解成各位語法片語。
語意分析,語意分析是審查原始程式有無語意錯誤,為程式碼產生階段收集型別資訊。
中間程式碼生成,在進行了上述的語法分析階段等工作之後,有的編譯程式將原始程式變成一種內部表示形式,這種內部表示形式叫做中間語言或中間代碼。中間程式碼產生階段要在語法和語意分析的基礎上,將原始程式進一步變成一種內部表示形式,它通常易於產生、易於翻譯成目標程式碼,不過不是所有的語言都必須經過這一步。
程式碼最佳化,此階段的任務是對前一階段產生的中間程式碼進行變換或進行改造,目的是使產生的目標程式碼更有效率。程式碼最佳化階段,對前階段產生的中間程式碼進行變換或改造,以便在產生目標程式碼時更加節省時間和空間,這項工作也不是必須的。
目標程式碼生成,這階段的任務是吧中間程式碼轉換成特定機器上的絕對指令碼或可重定位的指令碼或組合指令碼。
2.動態類型和靜態型別
動態語言是指在程式運行期間才給變數指定資料的型別,常見於python和Ruby,而靜態類型語言則剛好相反,在寫程式碼的時候就要指定變數的型別這種語言有cc java
3.強制型別與弱型別
我們可知C語言中一個變量只能定義為一種類型如float類型那麼它就只能是float類型而不能在不發生轉化的情況下賦予int類型這就是強制類型的具體體現。
而python不是python中的變數可以任意的複製而沒有類型的界限。這就是弱型別
強制型別比較嚴謹更不容易出現錯誤但弱型別的語言寫起來更優雅比較舒暢
4.編譯型解釋型半編譯半解釋
對於原始程式編譯型語言在執行程式中會將原始檔一次性的轉換為機器碼而解釋型語言是邊編譯邊解釋
編譯型語言是離不開解釋程式的這也導致了解釋性語言對於運行時候的速度比價慢解釋型語言只要有解釋器移植起來比較方便而編譯型語言則要對於不同的系統進行編譯是的工作繁瑣且在調試程式的時候比較慢
編譯型語言可見於cc 等
解釋型語言可見於pythonJavaScriptPerlshell等
而java是半編譯半解釋型的語言java會將原始檔在jVM中轉換為字節碼即.class檔案在程式運行的時候轉換為二進位檔案。和C#中的.net有點區別C#編譯的成的.net目標代碼接近與二進位檔可移植性沒有java好java是「一次編譯到處執行」c#是「一次編碼到處編譯」。
5. 物件導向型與過程導向型
面對過程是決定該怎麼鋪成一條路到達終點而物件導向是要用那些具有特定功能的像來做兩者是不同的思想。
c 是部份面對物件的java具有封裝性是完全面對物件的c語言是面對過程的語言。
此處還有函數型
程式語言範式動態靜態強弱型別的概念- 風清揚心飄揚- 部落格園程式語言範式動態靜態強弱型別的概念在學習一門語言的時候常常會碰到幾個概念例如Java是物件導向的語言C是面向過程的語言Lisp是函數式程式語言Scala是靜態語言這些都是什麼意思https://www.cnblogs.com/binbinbin /articles/14012424.html
6、區分編譯型和解釋型
1、編譯程式是整體編譯完了形成目標碼再一次執行。
而解釋程式是一邊解釋一邊執行。解釋一句後就提交計算機執行一句並不形成目標程式。就像外語翻譯中的「口譯」一樣不產生翻譯文本。
2、編譯是除了第一次編譯之後都是目標程式碼機器執行=結果
而解釋程式總是程式碼解釋程式機器執行=結果
詳細地說編譯器是把原始程式的每一語句都編譯成機器語言,並保存成二進位檔案,這樣運行時電腦可以直接以機器語言來運行此程式,速度很快。
而解釋器則是只在執行程式時才,才一條一條的解釋成機器語言給電腦來執行,所以運行速度是不如編譯後的程式運行的快的。這是因為電腦不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)
7.按層次分的原因
1.中間代碼
中間程式碼產生是產生中間程式碼的過程。所謂「中間程式碼」是一種結構簡單、意義明確的記號系統這種記號系統複雜性介於原始程式語言和機器語言之間容易將它翻譯成目標程式碼。另外還可以在中間代碼一級進行與機器無關的最佳化。
彙編程式碼是目標程式碼中間程式碼理論上是機器無關的。
編譯原理中知識三元式、四元式、逆波蘭式等等表示中間程式碼。
2.目標程式碼
目標程式碼;object code指電腦科學中編譯器或彙編器處理原始程式碼後所產生的程式碼它一般由機器碼或接近機器語言的程式碼組成。目標檔案;object file即存放目標程式碼的電腦檔案它常被稱為二進位檔案;binaries。目標檔案包含機器碼;可直接被電腦中央處理器執行以及程式碼在執行時使用的資料如重定位資訊如用於連結或偵錯的程式符號;變數和函數的名字此外還包括其他偵錯資訊。目標檔案是從原始程式碼檔案產生程式檔案這個過程的中間產物連結器正是透過把目標檔案連結在一起來產生可執行檔或程式庫檔案。目標檔案中唯一的要素是機器碼例如用於嵌入式系統的目標檔案可能僅包含機器碼。
目標程式碼通常採用三種形式機器語言組合語言待組裝機器語言模組。
產生目標程式碼時應著重考慮的問題
(1)如何使產生的目標程式碼較短
(2)如何充分利用暫存器以減少存取記憶體次數
(3)如何充分利用指僅系統的特性。
組合語言中經常直接用暫存器AX、指令暫存器IR等等不同的暫存器參數什麼的都不同所以組譯語言偏硬體語言。
以上是電腦語言有哪些類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!