編程語言大致分為機器語言、彙編語言和高級語言,下麵一一介紹這三種語言: 機器語言 由於電腦內部只能接收二進位代碼,因此用二進位0和1編寫的代碼成為機器指令,全部機器指令的集合則構成了電腦的機器語言,用機器語言編寫的程式成為目標程式。只有目標程式才能直接被電腦識別和執行。但機器語言唯一的缺點就是 ...
編程語言大致分為機器語言、彙編語言和高級語言,下麵一一介紹這三種語言:
機器語言
由於電腦內部只能接收二進位代碼,因此用二進位0和1編寫的代碼成為機器指令,全部機器指令的集合則構成了電腦的機器語言,用機器語言編寫的程式成為目標程式。只有目標程式才能直接被電腦識別和執行。但機器語言唯一的缺點就是沒有明顯的特征,難以記憶,不便於閱讀,切依賴於機種,局限性很大,機器語言屬於低級語言。
用機器語言編寫程式時,首先程式員要先記住所有的機器指令和指令的含義,編寫程式時,程式員首先要自己處理每條指令和每一條數據的存儲分配和輸入輸出,還得記住每條指令所處單元的狀態,這是一件十分複雜的工作。編寫程式的時間往往是十幾運行時間的十幾倍甚至上百倍。而且編寫出來的程式都是0和1,直觀性很差,還容易出錯。除了電腦生產廠家的專業人員外,程式員是不會願意編寫機器語言的。
機器語言是微處理器理解和使用的,用於控制二進位代碼。
彙編語言
彙編語言和機器語言相同的,都是直接對硬體操作,只不過彙編語言是指令採用了英文縮略縮寫的標識符,更容易識別和記憶。它同樣需要編程者通過將每一步的操作用命令的形式寫出來。彙編陳程式中的每一句指令只能對應實際操作的一個細微的動作。例如移動、自增,一次彙編源程式一般是比較冗長的、複雜的、更容易出錯的,而使用彙編語言需要有更多的電腦專業方面的知識,但彙編語言的優點也是顯而易見的,用彙編語言完成的操作不是一般高級語言能完成的。而且源程式經彙編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言
高級語言是大多數編程者的選擇。和彙編語言相比,它不但將許多相關的機器指令合成單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用了堆棧和寄存器等,這樣大大簡化了程式的指令,同時,由於省略了很多細節,編程者不需要有太多的專業知識。
高級語言主要是相對於彙編語言而說的,它並不是特質一種語言,而是包含了很多編程語言。
高級語言所編製的程式不能直接被電腦所識別,必須經過轉換才能被執行。按轉換方式可被分為編譯類和解釋類:
編譯類:編譯是指在應用源程式執行之前,就將源程式 "翻譯" 為目標代碼(機器語言),因此目標程式可以脫離其語言環境獨立執行(編譯後生成可執行文件,cpu是可以理解二進位代碼的)。
優點:使用方便、效率較高
缺點:應用程式的源代碼一旦修改,需要重新編譯生成新的目標文件(.obj,也就是OBJ文件)才能執行,只有目標文件而沒有源碼,修改起來很不方便。
用翻譯官的例子舉例:
編譯後的程式運行時不需要重新編譯,直接使用編譯後的結果就行了。程式執行效率高,依賴編譯器,跨平臺性差。如C,C++,Deplhi等
解釋類:執行方式類似於我們日常生活中"同聲翻譯",應用程式的源代碼一邊由響應的解釋器"翻譯"為目標程式(機器語言),一邊執行,因此效率比較低,而且不能生成可執行的文件,應用程式不能脫離解釋器(想要運行,必須先裝上解釋器,就像跟老外說話,必須有翻譯在場),但這種方式比較靈活,可以動態調整和修改程式,如Python,Java,Ruby,PHP等語言。
總結
機器語言:
優點:底層、執行速度快
缺點:複雜、開發效率低
彙編語言:
優點:底層、執行速度快
缺點:複雜、開發效率低
高級語言:
編譯類語言:執行速度快、不依賴語言環境,但是跨平臺性差
解釋類語言:跨平臺性強,當時依賴解釋器,運行速度慢