PYTHON之電腦語言基礎知識 —— 程式設計語言的分類

來源:互聯網
上載者:User

標籤:儲存   虛擬   檢查   其他   來源程式   語法錯誤   強型別   c/c++   自動   

一、電腦語言分類

  低級語言、進階語言、專用語言、指令碼語言

  1、低級語言:機器語言、組合語言和符號語言。機器語言是用二進位代碼錶示的電腦能直接識別和執行的一種機器指令(機器碼)的合集,他是電腦的設計者通過電腦的硬體結構賦予電腦的操作功能;組合語言(亦稱符號語言)用助記符代替機器指令的作業碼,組合語言來源程式必須經過彙編產生目標檔案,然後執行。

  2、進階語言:主要是相對組合語言而言,它更接近自然語言和數學公式的編程,基本脫離了機器的硬體系統,用人們更易理解的方式編寫程式,編寫的程式稱為來源程式。進階語言並不是特指某一具體語言,而是包括很多程式設計語言,如流行的java,C/C++,C#,pascal,python,lisp,prolog,FoxPro,易語言等。

  3、專用語言:CAD系統中的繪圖語言和DBMS的資料庫查詢語言。

  4、指令碼語言:又被稱為擴建的語言或者動態語言,用來控制軟體應用程式,指令碼通常以文本(如ASCII)儲存,只在被調用時進行解釋或編譯。指令碼語言是為了縮短傳統的編寫-編譯-連結-運行過程而建立的電腦程式設計語言。一個指令碼通常是解釋運行而非編譯。在許多方面,進階程式設計語言和指令碼語言之間互相交叉,二者之間沒有明確的界限。一個指令碼可以使得本來要用鍵盤進行的相互式操作自動化。

二、進階語言分類

  編譯型語言、解釋型語言、混合型語言

  1、編譯型語言:編譯型語言首先將原始碼“翻譯”產生目標代碼(機器語言),再由機器運行機器碼(二進位),其目標程式可以脫離其語言環境獨立執行。編譯只需一次,以後要運行就不需要重新編譯,所以編譯型語言執行效率高。但應用程式一旦需要修改,必須先修改原始碼,再重新編譯產生新的目標檔案(* .OBJ)才能執行,只有目標檔案而沒有原始碼,修改很不方便。編譯由編譯器完成。如果我們寫的程式碼都包含在一個源檔案中,那麼通常編譯之後就會直接產生一個可執行檔,我們就可以直接運行了。但對於一個比較複雜的項目,為了方便管理,我們通常把代碼分散在各個源檔案中,作為不同的模組來組織。這時編譯各個檔案時就會產生目標檔案(Object   file)而不是前面說的可執行檔。一般一個源檔案的編譯都會對應一個目標檔案。這些目標檔案裡的內容基本上已經是可執行代碼了,但由於只是整個項目的一部分,所以我們還不能直接運行。待所有的源檔案的編譯都大功告成,我們就可以最後把這些半成品的目標檔案“打包”成一個可執行檔了,這個工作由另一個程式負責完成,由於此過程好像是把包含可執行代碼的目標檔案串連裝配起來,所以又稱為連結(Link),而負責連結的程式就叫……就叫連結程式(Linker)。連結程式除了連結目標檔案外,可能還有各種資源,像表徵圖檔案啊、音效檔啊什麼的,還要負責去除目標檔案之間的冗餘重複代碼,等等。連結完成之後,一般就可以得到我們想要的可執行檔了。 

  2、解釋型語言:解釋性語言編寫的程式不進行預先編譯,以文本方式儲存程式碼。在發布程式時,看起來省了道編譯工序。但是,在運行程式的時候,解釋性語言必須先解釋再運行。一般來說,現有的解釋性語言都是採用的逐行解釋一句,執行一句這樣的方式來構建的。這樣解釋性語言每執行一次就要翻譯一次,效率比較低 。解釋型程式中,由於程式總是以原始碼的形式出現,因此只要有相應的解譯器,移植幾乎不成問題。釋程式的優點是當語句出現語法錯誤時,可以立即引起程式員注意,而程式員在程式開發期間就能進行校正。

  3、混合型:Java很特殊,Java程式也需要編譯,但是沒有直接編譯稱為機器語言,而是 編譯稱為位元組碼,然後在Java虛擬機器上用解釋方式執行位元組碼。Python 的也採用了類似Java的編譯模式,先將Python程式編譯成Python位元組碼,然後由一個專門的 Python位元組碼解譯器負責解釋執行位元組碼。 

 

編譯型vs解釋型 

編譯型
優點:編譯器一般會有先行編譯的過程對代碼進行最佳化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程式執行效率高。可以脫離語言環境獨立運行。

缺點:編譯之後如果需要修改就需要整個模組重新編譯。編譯的時候根據對應的運行環境產生機器碼,不同的作業系統之間移植就會有問題,需要根據啟動並執行作業系統環境編譯不同的可執行檔。 

解釋型
優點:有良好的平台相容性,在任何環境中都可以運行,前提是安裝瞭解釋器(虛擬機器)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。 

缺點:每次啟動並執行時候都要解釋一遍,效能上不如編譯型語言。

三、動態語言和靜態語言 

  通常我們所說的動態語言、靜態語言是指動態類型語言和靜態類型(資料類型)語言。

  1、動態類型語言:動態類型語言是指在運行期間才去做資料類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變數指定資料類型,該語言會在你第一次賦值給變數時,在內部將資料類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其他的各種指令碼語言如VBScript也多少屬於動態類型語言。

  2、靜態類型語言:靜態類型語言與動態類型語言剛好相反,它的資料類型是在編譯其間檢查的,也就是說在寫程式時要聲明所有變數的資料類型,C/C++是靜態類型語言的典型代表,其他的靜態類型語言還有C#、JAVA等。

四、強型別定義語言和弱類型定義語言

  1、強型別定義語言強制資料類型定義的語言。也就是說,一旦一個變數被指定了某個資料類型,如果不經過強制轉換,那麼它就永遠是這個資料類型了。舉個例子:如果你定義了一個整型變數a,那麼程式根本不可能將a當作字串類型處理。強型別定義語言是型別安全的語言。

  2、弱類型定義語言資料類型可以被忽略的語言。它與強型別定義語言相反, 一個變數可以賦不同資料類型的值。

  強型別定義語言在速度上可能略遜色於弱類型定義語言,但是強型別定義語言帶來的嚴謹效能夠有效避免許多錯誤。另外,“這門語言是不是動態語言”與“這門語言是否型別安全”之間是完全沒有聯絡的!
  例如:Python是動態語言,是強型別定義語言(型別安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強型別定義語言(型別安全的語言)。

PYTHON之電腦語言基礎知識 —— 程式設計語言的分類

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.