導航:首頁 > 源碼編譯 > 自編譯型

自編譯型

發布時間:2022-01-17 00:18:32

A. 解釋型語言跟編譯型語言的區別在哪裡

C是編譯型語言(執行速度快),VB是解釋型語言(執行速度慢)
計算機語言包括哪些?各自特點是什麼?

雖說C語言在內存管理方面存在嚴重的缺陷,不過它還是在某些應用領域里稱王稱霸。對於那些要求最高的效率,良好的實時性,或者與操作系統內核緊密關聯的程序來說,C仍然是很好的選擇。

C良好的可移植性也為它加了分。不過現在很多其他的語言可移植性越來越好,C在這方面的優勢可能會逐漸喪失。

現有的很多程序可以產生非常棒的C代碼,比如語法分析器、GUI Builder等,這時候C語言也是有吸引力的,因為你所需要編寫的代碼只是整個程序的一小部分。

再有,我們當然應該認識道,C語言對於程序員來說具有無可替代的價值。就我這里討論的每一種語言而論,只要你發掘的足夠深,到最後你會看到它們的內核都是用純正的、可移植的C寫成的。

到了今天這個時候,我們最好把C看成是UNIX虛擬機上的高級匯編語言。

就算是其他的高級語言完全可以滿足你的工作需要,抽出時間來學習C語言也仍然有益,它能幫助你在硬體體系的層次上思考問題。

即使到了今天,最好的C語言教程仍然是1988年出版的K&R第二版The C Programming Language.

總結:C最出色的地方在於其高效和貼近機器,最糟糕的地方在它的內存管理地獄。

C++

C++最初發布於1980年代中期,當時面向對象語言被認為是解決軟體復雜性問題的銀彈。C++的面向對象特性看相去使其全面超越了C,支持者認為C++將迅速把上一代語言擠到陳列館里去。

但是歷史並非如此。究其原因,至少有一部分歸咎於C++本身。為了與C兼容,C++被迫作出了很多重大的設計妥協,結果導致語言過分華麗,過分復雜。為了與C兼容,C++並沒有採用自動內存管理的策略,從而喪失了修正C最嚴重問題的機會。

另外一部分原因,恐怕要算到面向對象身上。看起來OO並沒有很好的達成人們當年的預期。我就這個問題調研過,我發現使用OO方法導致組件之間出現很厚的粘合層,並且帶來了嚴重的可維護性問題。今天讓我們來看看開放源碼社區,你會發現C++的應用還是集中在GUI,游戲和多媒體工具包這些方面,在其他地方很少用到。要知道,面向對象也只是在這些領域被證明非常成功,而開放源碼社區的選擇,很大程度上體現了程序員的自由意志,而不是公司管理層的胡亂指揮。

也許C++實現OO的方法有問題。有證據表明C++程序在整個生命周期的開銷高於相應的C, Fortran和Ada程序。不過,究竟這是否應該歸咎與C++的OO實現上,還不清楚。

最近幾年,C++加入了很多非OO的思想,其異常思想類似Lisp,STL的出現是非常了不起的。

其實C++最根本的問題在於,它基本上只不過是另一種傳統的語言。STL中的內存管理比先前的new/delete和C的方案要好的多,但是還是沒有解決問題。對於很多應用程序而言,其OO特性並不明顯,相比與C,除了增加復雜度之外沒有獲得很多好處。

總結:C++優點在於作為編譯型語言,把效率與泛型和面向對象特性結合起來,其缺點在於過於華麗復雜,傾向於鼓勵程過分復雜的設計。

Java

Java的設計很聰明,它採用了自動內存管理,這是最大的改進,支持OO設計帶來的好處雖然不那麼突出,不過也很值得贊賞,相比C++,其OO設計規模小而且簡單 。

相對於Python而言,Java有一些明顯的失誤。有些地方設計的還是太復雜,甚至有缺陷。Java的類可見性和隱式scoping規則太復雜了。Interface機制是為了避免多繼承帶來的問題而設計的,但是要理解和使用它還是挺難。內部類和匿名類導致令人困惑的代碼。缺乏有效的析構機制,使得除了內存之外的其他資源(比如互斥量和鎖)管理起來很困難。Java的線程不可靠,其I/O機制很強大,但是讀取一個文本文件卻非常繁瑣。

Java沒有管理庫版本的機制,從而形式上重蹈了了Windows DLL地獄的覆轍。在類似應用伺服器這樣的環境里,這引起了大量的問題。

總體而言,我們可以說除了系統編程和對效率要求極高的程序之外,Java在大部分領域優於C++。經驗表明,Java程序員似乎不太容易象C++程序員那樣構造過度的OO層,不過在Java中這仍然是個嚴重問題。

Java是否優於諸如Perl, Python這樣的語言?我們還不是很清楚,很大程度上似乎跟程序規模有關。其擅長的領域基本上於Python相似,在效率上無法跟C/C++相提並論,在小規模的、大量使用模式匹配和編輯的項目里也無法匹敵Perl。在小項目里,Java顯得過分強大了。我們猜測Python更適合小項目,而Java適合大項目,不過這一點並沒有得到有力的證明。

Python

Python是一種腳本語言,可以與C緊密整合。它可以與動態載入的C庫模塊交換數據,也可以作為內嵌腳本語言而從C中調用。其語法類似C和模塊化語言的雜合,不過有一個獨一無二的特徵,就是以縮進來確定語句塊。

Python語言非常干凈,設計優雅,具有出色的模塊化特性。它提供了面向對象能力,但不強迫用戶進行面向對象設計。其類型系統提供了強大的表達能力,類似Perl,具有匿名lambda表達式,這點又讓Lisp黑客們感到親切。Python依靠Tk提供方便的GUI界面開發能力。

在所有的解釋型語言里,Python和Java最適合多名程序員以漸進方式協同開發大型項目。在很多方面,Python比Java要簡單,它非常適合與構造快速原型,這一點使得它對於Java有獨特優勢:對於那些既不很復雜,又不要求高效率的程序,Python十分合適。

Python的速度沒法跟C/C++相比,不過在今天的高速CPU上,合理地使用混合語言編程策略使得Python的上述弱點被有效地彌補。事實上,Python幾乎被認為是主流腳本語言中最慢的一個,因為它提供了動態多態性。在大量使用正則表達式的小型項目,它遜於Perl。對於微型項目而言,shell和Tcl可能更好,Python顯得太過強大了。

總結:Python最出色的地方在於,它鼓勵清晰易讀的代碼,特別適合以漸進開發的方式構造大項目。其缺陷在於效率不高,太慢,不但跟編譯語言相比慢,就是跟其他腳本語言相比也顯得慢。

B. 編譯型和解釋型的區別&Java從編譯到執行的過

1、區別:

編譯型語言在程序執行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以後執行這個程序的時候,就不用再進行翻譯了。

解釋型語言,是在運行的時候將程序翻譯成機器語言,所以運行速度相對於編譯型語言要慢。

2、Java從編譯到執行的過程:


C. 解釋性語言和編譯型語言的區別與不同

前者由於程序執行速度快,同等條件下對系統要求較低,因此像開發操作系統、大型應用程序、資料庫系統等時都採用它,像C/C++、Pascal/ObjectPascal(Delphi)等都是編譯語言,而一些網頁腳本、伺服器腳本及輔助開發介面這樣的對速度要求不高、對不同系統平台間的兼容性有一定要求的程序則通常使用解釋性語言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB等等。但隨著硬體的升級和設計思想的變革,編譯型和解釋型語言越來越籠統,主要體現在一些新興的高級語言上,而解釋型語言的自身特點也使得編譯器廠商願意花費成本來優化解釋器,解釋型語言性能超過編譯型語言也是必然的。

D. 關於「編譯型語言」和「解釋性語言」的區別

1、程序控制權不同:

對於解釋性語言而言,程序運行時的控制權在解釋器(jre,.net)而不再用於程序。編譯型語言對於編譯器而言,運行時的控制權在用戶程序。

2、運行速度不同:

一些網頁腳本,伺服器腳本以及輔助開發介面這樣的對速度要求不高,對不同系統的兼容性有一定要求的程序則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、Matlab等等。

編譯語言由於程序執行速度快,同等條件下對系統的要求比較低,因此像開發操作系統、大型應用程序、資料庫系統等時都採用它,像C/C++,Pascal/Object Pascal(Delphi)等都是編譯型語言。

3、移植性不同:

解釋型語言,例如Java語言,Java程序首先通過編譯器編譯成class文件,如果在Windows平台上運行,則通過Windows平台上的Java虛擬機(VM)進行解釋。如果運行在Linux平台上,則通過Linux平台上的Java虛擬機進行解釋執行。

所以說能跨平台,前提是平台上必須要有相匹配的Java虛擬機。如果沒有Java虛擬機,則不能進行跨平台。

編譯型語言,例如C語言,用C語言開發程序後,需要通過編譯器把程序編譯成機器語言(即計算機可以識別的二進制文件,因為不同的操作系統識別的二進制文件是不同的),所以C語言程序進行移植後,需要重新編譯(如Windows編譯成ext文件,Linux編譯成erp文件)。

E. 解釋型語言的編譯型與解釋型,兩者各有利弊

前者由於程序執行速度快,同等條件下對系統要求較低,因此像開發操作系統、大型應用程序、資料庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網頁腳本、伺服器腳本及輔助開發介面這樣的對速度要求不高、對不同系統平台間的兼容性有一定要求的程序則通常使用解釋性語言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
但隨著硬體的升級和設計思想的變革,編譯型和解釋型語言越來越籠統,主要體現在一些新興的高級語言上,而解釋型語言的自身特點也使得編譯器廠商願意花費更多成本來優化解釋器,解釋型語言性能超過編譯型語言也是必然的。

F. Java是解釋型還是編譯型

它既不屬於傳統的編譯型語言也不屬於解釋型語言。它是先編譯成.CLASS位元組碼文件,然後再利用虛擬機解釋執行的.可以說先編譯後解釋吧。

G. 編譯型語言與解釋型語言各自的優缺點:

編譯型:優點:運行速度快,代碼效率高,編譯後的程序不可修改,保密性較好 缺點:代碼需要經過編譯方可運行,可移植性差,只能在兼容的操作系統上運行 解釋型:優點:可移植性較好,只要有解釋環境,可在不同的操作系統上運行 缺點:運行需要解釋環境,運行起來比編譯的要慢,佔用資源也要多一些,代碼效率低,代碼修改後就可運行,不需要編譯過程

H. 計算機高級語言裡面的編譯型和解釋型有什麼區別

高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可
將它們分為兩類:
1.解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由
相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不
能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可
以動態地調整、修改應用程序,典型的解釋型的高級語言有BASIC。
2.編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼
(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。
但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(*.OBJ)才
能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型
的,例如Visual C++、Delphi等。
高級語言里一個程序的編譯和執行大概是 下面的情況:

編譯器將高級語言從源代碼翻譯成與之等價的目標程序(就相當於從中文翻譯成中文),而後就隱退了。在隨後的某個時刻,用戶啟動目標程序由操作系統執行。實現高級語言的另外一種方式為解釋:

與編譯不同的是,解釋器在目標程序(其實根本就沒有目標程序,只是與編譯來對比)執行期間,解釋器一直隨之運行。這種執行過程完全由解釋器控制的。從效果上看,解釋器實現了一台「虛擬計算機」,其「機器語言」就是高級語言,解釋器一次讀入一條或多條語句,按照其自身規定的方式去執行相應的操作。一般說來,解釋比編譯有著很好的靈活性;編譯一般有著較好的性能。但是有些語言確是採用了兩者的混合形式:

書中的原文:」如果初始階段的翻譯器比較簡單,我們就說這個語言是「解釋的」。如果翻譯器很復雜,我們就說這一語言是「編譯的」。現在兩者的區分變得有些模糊了,因為「簡單」和「復雜」都是修飾性術語,也因為完全可能出現用一個編譯器(復雜的翻譯過程)生成代碼,而後又由一個復雜的虛擬機(解釋器)執行。對於最後這種情況,如果翻譯器對程序做了徹底的分析(而不是做某種「機械的」變換),而且有關的中間語言程序與源程序並沒有很強的相似性,我們還是說這個語言是編譯的。這兩種特性----徹底的分析和非平凡的變換-----是刻畫編譯方式的標志性特徵。「
根據以上標准,首先CSC只是對C#到IL做」機械「的翻譯,而且C#和IL之間有很強的相似性,因為兩者的程序代碼幾乎可以100%相互轉換(比如reflector可以將C#反編成IL,也可以將IL反編為C#)。您認為呢?
PS:再者某些人認為的ngen和cache程序集其實也是支持C#是解釋語言的結論,因為編譯型語言因為性能的天然因素是不需要這些手段的

應該是這個吧。。。。。。。

I. 常見的C語言編譯器是什麼

目前最流行的C語言編譯器有以下幾種:

1、GNU Compiler Collection 或稱GCC

GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開發的編程語言編譯器。它是以GPL許可證所發行的自由軟體,也是 GNU計劃的關鍵部分。

GCC原本作為GNU操作系統的官方編譯器,現已被大多數類Unix操作系統(如Linux、BSD、Mac OS X等)採納為標準的編譯器,GCC同樣適用於微軟的Windows。GCC是自由軟體過程發展中的著名例子,由自由軟體基金會以GPL協議發布。

2、Microsoft C 或稱 MS C

Microsoft C 是c語言的一種IDE(集成開發環境),常見的還有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C等等......

3、Borland Turbo C 或稱 Turbo C

Turbo C是美國Borland公司的產品,Borland公司是一家專門從事軟體開發、研製的大公司。該公司相繼推出了一套 Turbo系列軟體, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 這些軟體很受用戶歡迎。

(9)自編譯型擴展閱讀:

C編譯的整個過程很復雜,大致可以分為以下四個階段:

1、預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。

2、編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。

3、匯編階段將匯編語言翻譯成機器指令。

4、鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。

J. 編譯型語言和解釋型語言各自的優缺點是什麼

一、編譯型語言

優點:運行速度快,代碼效率高,編譯後的程序不可修改,保密性較好。

缺點:代碼需要經過編譯方可運行,可移植性差,只能在兼容的操作系統上運行 。

二、解釋型語言

優點:可移植性較好,只要有解釋環境,可在不同的操作系統上運行。

缺點:運行需要解釋環境,運行起來比編譯的要慢,佔用資源也要多一些,代碼效率低,代碼修改後就可運行,不需要編譯過程。

(10)自編譯型擴展閱讀:

編譯型語言:程序在執行之前需要一個專門的編譯過程,把程序編譯成 為機器語言的文件,運行時不需要重新翻譯,直接使用編譯的結果就行了。程序執行效率高,依賴編譯器,跨平台性差些。如C、C++、Delphi等。而相對的,解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。在發布程序時,看起來省了道編譯工序。但是在運行程序的時候,解釋性語言必須先解釋再運行。

閱讀全文

與自編譯型相關的資料

熱點內容
工作三年的大專程序員 瀏覽:728
java畢業設計文獻 瀏覽:143
籌碼集中度指標源碼 瀏覽:482
listsortjava 瀏覽:186
plc閃光電路編程實例 瀏覽:299
socket編程試題 瀏覽:206
華為的伺服器怎麼設置從光碟機啟動 瀏覽:871
程序員真的累嗎 瀏覽:328
學信網app為什麼刷臉不了 瀏覽:874
天蠍vs程序員 瀏覽:996
單片機下載口叫什麼 瀏覽:190
程序員的道 瀏覽:926
雲伺服器不實名違法嗎 瀏覽:558
怎樣查看文件夾圖片是否重復 瀏覽:995
文件怎麼導成pdf文件 瀏覽:808
打開sql表的命令 瀏覽:103
安卓手機如何面部支付 瀏覽:38
天元數學app為什麼登錄不上去 瀏覽:825
明日之後為什麼有些伺服器是四個字 瀏覽:104
安卓系統l1是什麼意思 瀏覽:26