對程式語言中的編譯與解釋的理解

2021-09-02 12:21:13 字數 1145 閱讀 2789

相信學計算機的人都應該學過不止一種程式語言,很多時候,很可能是兩種,或者三種,甚至有人4種5種,當然,大部分人都知道它們是編譯型的或者是解釋型的,但是有多少人去了解過他們各自的優缺點?我也正如那大部分人一樣,知道這是什麼型別的語言,不過也很少去真正了解過它們!

那麼什麼是解釋型語言?什麼是編譯型語言?

大家都知道,計算機是不能直接理解高階語言的,只能直接理解機器語言,所以必須要把高階語言翻譯成機器語言,計算機才能執行高階語言編寫的程式,而翻譯的方式有兩種,一種編譯,另一種就是解釋,兩者翻譯的時間不同!

編譯型語言寫的程式在執行之前,需要乙個專門的編譯過程,把程式編譯成機器語言的檔案,比如將hello.c檔案進行預處理,編譯,彙編和鏈結,最終生成可執行**檔案,這樣以後再次執行的時候,就可以直接使用編譯的結果(即exe檔案)!

解釋型語言不需要編譯,省了道工序,解釋型語言是在執行程式的時候才翻譯的,需要乙個專門的直譯器能夠執行解釋型語言寫的程式,每個語句都是執行的時候才進行翻譯的!

1:因為可以直接使用編譯的結果而不需要再次翻譯,所以執行的效率是比較高的!

2:編譯程式將源程式翻譯成目標程式後儲存在另乙個檔案中,該目標程式可以脫離編譯程式直接在計算機上多次使用,大部分軟體產品都是以目標程式形勢發行給使用者的,不僅便於直接執行,而且又使得他人難以盜用期中的技術!

1:編譯執行的語言因為要直接同cpu的指令集打交道,具有很強的指令依賴性和系統依賴性!

2:編譯後的程式是由機器語言指令構成的,但是使用不同硬體平台的計算機,它們的機器語言是不同的,使得便宜過的程式不 能順利從乙個計算機平台往另外乙個平台上移植,因此在不同的平台上往往需要重新編譯甚至重寫程式,這將會耗費大量的人力物力財力!

1:一般情況下,只要有相應版本的語言直譯器,解釋型語言所寫的程式可以幾乎不做任何修改地移植到其他平台上去,這相對於編譯型語言來說,是個極大的優勢!

2:解釋型語言所寫的程式是逐行進行翻譯執行命令的,因此當語句出現語法問題的時候,可以立即引起程式猿的注意,而程式猿在程式開發期間就能進行校正!

1:解釋型語言的實現中,翻譯器並不產生目標機器**,而是產生易於執行的中間**,但是這種中間**與機器**不同,中間**的解釋是由軟體支援的,不能直接使用硬體,軟體直譯器通常會導致執行效率較低,並且每執行一次就得再翻譯一次,不能像編譯型語言那樣,一次編譯,任意次使用,因而效率方便沒有編譯型的高!

對程式語言中的編譯與解釋的理解

相信學計算機的人都應該學過不止一種程式語言,很多時候,很可能是兩種,或者三種,甚至有人4種5種,當然,大部分人都知道它們是編譯型的或者是解釋型的,但是有多少人去了解過他們各自的優缺點?我也正如那大部分人一樣,知道這是什麼型別的語言,不過也很少去真正了解過它們!那麼什麼是解釋型語言?什麼是編譯型語言?...

C語言中對const的理解

const的作用是限定乙個變數不能被修改。對const的理解 1 int const a const int b 這兩句是相等的。2 const char p1 char const p2 const char const p3 第一句的意思是指標p1所指向的記憶體空間不能被修改,如 p1 1 a ...

對函式式程式語言的理解

1.什麼是函式式語言?函式式程式語言歷史 函式式程式設計中最古老的例子莫過於1958年被創造出來的lisp 了。函式式程式設計更加現代一些的例子包括clean clojure erlang haskell miranda scheme 等。雖然 演算 並非設計來於計算機上執行,但它可以被視作第乙個函...