① 用於高級語言的編譯程序有哪兩種
用於高級語言的編譯程序有兩種:編譯程序和鏈接程序。
以C語言為例,編譯器是cc,可能鏈接程序就是link。
二者作用是不同的,編譯器是把源程序翻譯成符號語言,鏈接程序把來自不同源文件的多個程序整合起來,形成最終的可執行程序。
C++的編譯系統沿用了C語言。其他語種,如PASCAL,DELPHI,C#,OBJECT-C,本質上沒發生變化
高級語言本身分成兩類,編譯型和解釋性的,編譯型的就是上面的類型,解釋型的,如BASIC,JAVA,
PHP,
PYTHON等,是不需要編譯的,可以直接根據源代碼(或中間代碼)直接翻譯到操作系統上。
② 高級語言程序的編譯執行方式是< >
是C啊樓上真是誤導人,樓主也信了
③ 高級語言採用解釋方式時的執行速度與採用編譯方式時的執行速度相比,下列____是正確的。 A、相等 B、前者
編譯方式比解釋方式執行速度來的快
編譯是把源代碼全部轉換為可以直接執行的指令,從而程序運行速度比較快。
解釋是把當前行的代碼轉換為可以直接執行的指令,執行完畢,就要解釋下一句代碼,邊解釋,邊執行,速度慢。
可以看下我貼的參考資料。希望對你有幫助
④ 計算機高級語言裡面的編譯型和解釋型有什麼區別
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可
將它們分為兩類:
1.解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由
相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不
能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可
以動態地調整、修改應用程序,典型的解釋型的高級語言有BASIC。
2.編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼
(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。
但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(*.OBJ)才
能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型
的,例如Visual C++、Delphi等。
高級語言里一個程序的編譯和執行大概是 下面的情況:
編譯器將高級語言從源代碼翻譯成與之等價的目標程序(就相當於從中文翻譯成中文),而後就隱退了。在隨後的某個時刻,用戶啟動目標程序由操作系統執行。實現高級語言的另外一種方式為解釋:
與編譯不同的是,解釋器在目標程序(其實根本就沒有目標程序,只是與編譯來對比)執行期間,解釋器一直隨之運行。這種執行過程完全由解釋器控制的。從效果上看,解釋器實現了一台「虛擬計算機」,其「機器語言」就是高級語言,解釋器一次讀入一條或多條語句,按照其自身規定的方式去執行相應的操作。一般說來,解釋比編譯有著很好的靈活性;編譯一般有著較好的性能。但是有些語言確是採用了兩者的混合形式:
書中的原文:」如果初始階段的翻譯器比較簡單,我們就說這個語言是「解釋的」。如果翻譯器很復雜,我們就說這一語言是「編譯的」。現在兩者的區分變得有些模糊了,因為「簡單」和「復雜」都是修飾性術語,也因為完全可能出現用一個編譯器(復雜的翻譯過程)生成代碼,而後又由一個復雜的虛擬機(解釋器)執行。對於最後這種情況,如果翻譯器對程序做了徹底的分析(而不是做某種「機械的」變換),而且有關的中間語言程序與源程序並沒有很強的相似性,我們還是說這個語言是編譯的。這兩種特性----徹底的分析和非平凡的變換-----是刻畫編譯方式的標志性特徵。「
根據以上標准,首先CSC只是對C#到IL做」機械「的翻譯,而且C#和IL之間有很強的相似性,因為兩者的程序代碼幾乎可以100%相互轉換(比如reflector可以將C#反編成IL,也可以將IL反編為C#)。您認為呢?
PS:再者某些人認為的ngen和cache程序集其實也是支持C#是解釋語言的結論,因為編譯型語言因為性能的天然因素是不需要這些手段的
應該是這個吧。。。。。。。
⑤ 計算機語言的種類
機器語言(二進制代碼)
匯編語言(面向機器的程序設計語言)
高級語言(按轉換方式可分兩類:
1、編譯型語言; 2、解釋型語言)
||按照客觀系統的描述可分兩類:
1、面向過程語言;
2、面向對象語言 ||
按照編程范型可分四類:
1、命令式語言;2、函數式語言;3、邏輯式語言;4、面向對象語言)
三種語言的優缺點
機器語言:可讀性、可移植性差,編程繁雜。直接執行,速度快,資源佔用少。匯編語言:不同的處理器有不同的匯編語言語法和編譯器,編譯的程序無法在不同的處理器上執行,缺乏可移植性,難於從匯編語言代碼上理解程序設計意圖,可維護性差,即使是完成簡單的工作也需要大量的匯編語言代碼,很容易產生bug,難於調試,使用匯編語言必須對某種處理器非常了解,而且只能針對特定的體系結構和處理器進行優化,開發效率很低,周期長且單調。能夠保持機器語言的一致性,直接、簡捷,並能像機器指令一樣訪問、控制計算機的各種硬體設備,如磁碟、存儲器、CPU、I/O埠等。使用匯編語言,可以訪問所有能夠被訪問的軟、硬體資源,目標代碼簡短,佔用內存少,執行速度快。高級語言:運行速度基本上比直接用匯編寫的慢,速度和程序大小與編譯軟體有關。高級語言接近演算法語言,易學、易掌握,級語言為程序員提供了結構化程序設計的環境和工具,使得設計出來的程序可讀性好,可維護性強,可靠性高;高級語言遠離機器語言,與具體的計算機硬體關系不大,可移植性好,重用率高;由於把繁雜瑣碎的事務交給了編譯程序去做,所以自動化程度高,開發周期短,且程序員得到解脫,可以集中時間和精力去從事對於他們來說更為重要的創造性勞動,以提高程序的質量。
高級語言的分類
按轉換方式可分為兩類:1、編譯型語言;2、解釋型語言
編譯型語言:編譯性語言寫的程序在被執行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,比如exe文件,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高。解釋型語言:解釋性語言的程序不需要編譯,在運行程序的時候才翻譯,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就需要逐行翻譯一次,效率比較低。 現代解釋性語言通常把源程序編譯成中間代碼,然後用解釋器把中間代碼一條條翻譯成目標機器代碼,一條條執行。 關於腳本語言: 腳本語言是一種解釋性的語言,腳本語言是為了縮短傳統的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創建的計算機編程語言。腳本語言一般都 有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。一個腳本通常是解釋運行而非編譯。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程序員快速完成程序的編寫工作。而宏語言則可視為腳本語言的分支,兩者也有實質上的相同之處。腳本語言一般都是以文本形式存在,類似於一種命令。
解釋性語言:Java、Java、Perl、Python、Ruby、MATLAB 等。 編譯性語言: C/C++、Pascal/Object Pascal(Delphi) 腳本語言:Python、Java,ASP,PHP,Perl等
解釋性語言:Java、Java、Perl、Python、Ruby、MATLAB 等。 編譯性語言: C/C++、Pascal/Object Pascal(Delphi) 腳本語言:Python、Java,ASP,PHP,Perl等
按照客觀系統的描述可分為兩類:1.面向過程語言; 2.面向對象語言
面向過程語言:面向過程語言是以過程或函數為基礎的,這種語言對底層硬體,內存等操作比較方便,但是寫代碼和調試維護等會很麻煩。例如:c語言面向對象語言:面向對象語言(Object-Oriented Language)是一類以對象作為基本程序結構單位的程序設計語言,指用於描述的設計是以對象為核心,而對象是程序運行時刻的基本成分。語言中提供了類、繼承等成分。 面向對象語言的發展有兩個方向:一種是純面向對象語言,如Smalltalk、EIFFEL等;另一種是混合型面向對象語言,即在過程式語言及其它語言中加入類、繼承等成分,如C++、Objective-C等
按照編程范型可分為:1.命令式語言; 2.函數式語言; 3.邏輯式語言; 4.面向對象語言
命令式語言: 命令式程序設計語言是基於動作的語言,以馮諾依曼計算機體系結構為背景。機器語言及匯編語言是最早的命令式語言。在這種語言中,計算機被看做是動作的序列,程序就是用語言提供的操作命令書寫的一個操作序列。用命令式程序設計語言編寫程序,就是描述解題過程中每一步的過程,程序的運行過程就是問題的求解過程,因此也稱為過程式語言。Fortran、ALGOL、COBOL、C、Ada、Pascal等都是命令式程序設計語言。函數式語言: 函數式編程是種編程典範,它將電腦運算視為函數的計算。函數編程語言最重要的基礎是 λ 演算(lambda calculus)。而且λ演算的函數可以接受函數當作輸入(參數)和輸出(返回值)。和指令式編程相比,函數式編程強調函數的計算比指令的執行重要。和過程化編程相比,函數式編程里,函數的計算可隨時調用。這種語言的語義基礎是基於數學函數概念的值映射的λ運算元可計算模型。這種語言非常適合於進行人工智慧等工作的計算。典型的函數式語言如 Lisp、Haskell、ML、Scheme 、F#等。邏輯式語言: 這種語言的語義基礎是基於一組已知規則的形式邏輯系統。這種語言主要用在專家系統的實現中。最著名的邏輯式語言是 Prolog。面向對象語言: 現代語言中的大多數都提供面向對象的支持,但有些語言是直接建立在面向對象基本模型上的,語言的語法形式的語義就是基本對象操作。主要的純面向對象語言是 Smalltalk。
⑥ 百戰程序員:計算機編程的分類有哪些
計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。
目前通用的編程語言有兩種形式:匯編語言和高級語言。
⑦ 高級語言按照計算機執行方式不同可以分為哪兩類它們的執行方式有什麼不同,請進行概要說明。
計算機高級語言按程序的執行方式可分為:編譯型和解釋型。
編譯型的語言之使用專門的編譯器、針對特定平台將某種高級語言源代碼一次性「翻譯」成課被該平台硬體執行的機器嗎(包括機器指令和操作數),並包裝成該平台所能識別的可執行性程序的格式,這個轉換過程成為編譯(Compile)。編譯生成的可執行性程序可以脫離開發環境,在特定的平台上獨立運行。有些程序編譯結束後,還可能需要對其他編譯好的目標代碼進行鏈接,級組裝兩個以上的目標代碼模塊生成最終的可執行性程序,通過這種方式實現低層次的代碼復用。因為編譯性慾眼十一磁性的編譯成機器碼,所以可以脫離開發環境獨立運行,且通常運行效率較高;但要移植,則必須將源碼復制到特定平台上,針對特定平台進行修改,至少重新編譯。
解釋型語言是指使用專門的解釋其隊員城西逐行解釋成特定平台的機器嗎並立即執行的語言,解釋型語言通常不會進行整體性的編譯和鏈接處理,解釋型語言相當與把編譯型語言中的編譯和解釋過程混合到了一起同時完成。可以認為:每次執行解釋型語言的程序都需要進行一次編譯,因此解釋型語言的程序運行效率通常較低,而且不能脫離解釋其獨立運行。其優勢在於跨平台容易,只需提供特定平台的解釋其即可。
除此外還有一種偽編譯型語言。如Visual Basic,可以成成可執行性的EXE文件,實際上這個文件中,既有程序的啟動代碼,也有鏈接解釋程序的代碼,而這部分代碼負責啟動Vsuial Basic 解釋程序,再對Vsuial Basic代碼進行解釋並執行。
⑧ 用高級語言編寫的程序必須經過( )翻譯成機器語言程序,計算機才能執行。急急急急!
編譯程序。
編譯程序的最終目標是將源程序編譯成目標程序。編譯程序是把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。
編譯程序屬於採用生成性實現途徑實現的翻譯程序,以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。
(8)高級語言編譯型採用哪種模式執行擴展閱讀:
注意事項:
不要只為了解決問題而隨意把代碼都寫在Main()函數里。
一個函數應該只解決一個功能或問題。
單個函數的代碼行數最好不要超過20行。
要給每一個函數起一個好名稱,做到見名知義的程度方便對程序整體的快速理解。
要給函數作注意語句,寫代碼不只是給用戶看的,一個好的代碼也應該讓別人能容易理解。
⑨ 用高級語言編寫的源程序必須經過__ ___轉化為等價的二進制代碼程序,才能夠在計算機中運行。
編譯和鏈接。
編譯:
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
(9)高級語言編譯型採用哪種模式執行擴展閱讀
源程序中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那麼對這個單詞符號,種別編碼就完全代表它自身的值了。若一個種別含有許多個單詞符號,那麼,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。
詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。
⑩ 高級語言的編譯過程,經過哪幾個步驟
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
(10)高級語言編譯型採用哪種模式執行擴展閱讀:
將C語言代碼分為程序的幾個階段:
1、首先,對源代碼文件進行測試。以及相關的頭文件,比如Stdio。H.CPP預處理為。我的文件。預編譯。該文件不包含任何宏定義,因為所有宏都已展開,且包含的文件已插入。我提起。
2、編譯過程是對預處理後的文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程通常是整個程序的核心部分,也是最復雜的過程之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可運行的可執行程序。也就是說,您需要鏈接到大量文件以獲得最終可執行文件「a.out」。
4、在鏈接過程中,其他目標文件中定義的函數調用指令需要重新調整,而其他目標文件中定義的變數也存在同樣的問題。