編譯原理第一章學習(習題解答)
編譯原理
第一章 引論
1.1
練習
1.編譯器和解釋器之間的區別是什麽?
首先,編譯器是一個軟件系統或者說是一個程序,解釋器是語言處理器。其次,編譯器是把程序翻譯成能被計算機執行的形式並報告翻譯過程中發現的源程序的錯誤,解釋器是直接利用用戶提供的輸入執行源程序中指定的操作。
2.編譯器相對於解釋器的優點是什麽?解釋器相對於編譯器的優點是什麽?
在把用戶輸入映射成為輸出的過程中,由一個編譯器產生的機器語言目標程序通常比一個解釋器快很多。然而,解釋器的錯誤診斷效果比編譯器更好,因為它是逐句翻譯源程序。
3.在一個語言處理系統中,編譯器產生匯編語言而不是機器語言的好處是什麽?
方便優化。容易輸出和調試。
方便優化,因為,編譯器也是工具,也是機器,畢竟是機器生成的程序,不可以非常 完美的,而匯編是機器指令的助記符,一個匯編指令就對應一條機器指令(特殊指令除外)調試起來肯定會比機器指令方便的方便,這樣優化起來也方便
4.把一種高級語言編譯成為另一種高級語言的編譯器稱為源到源的翻譯器。編譯器使用C語言作為目標語言有什麽好處?
C語言較為普及,各種平臺上都有對其實現的支持;相對於匯編語言,C的抽象更為高級,分離了更多具體的實現細節,可以避免在代碼在移植時由於具體機器架構,指令集的不同等其他問題而受到影響。
5.描述一下匯編器所要完成的一些任務
匯編器的主要任務是把匯編語言翻譯成機器語言。
1.3節練習
指出下面的術語:
1)強制式的 2)聲明式的 3)馮·諾伊曼式的 4)面向對象的
5)函數式的(非馮) 6)第三代 7)第四代 8)腳本語言
可以被用於描述下面的哪些語言:
1)C 2)C++ 3)Cobol 4)Fortran 5)Java
6)Lisp 7)ML 8)Perl 9)Python 10)VB
答:1)C :第三代、強制式的、馮·諾依曼式的、
2)C++ :第三代、強制式的、面向對象的、馮·諾依曼式的
3)Cobol:第三代
4)Fortran:第三代、馮·諾依曼式的、
5)Java:第三代、強制式的、面向對象的、馮·諾依曼式的
6)Lisp :第三代、函數式的
7)ML :函數式的、聲明式的
8)Perl :腳本語言
9)Python : 腳本語言
10)VB:面向對象的
編譯原理第一章學習(習題解答)