不屬於編譯程序組成的部分是什麼
㈠ 一個編譯程序有幾部分構成
作為一個功能完整、且強大的編譯器,一般來說包括如下幾個部分:詞法分析、語法分析、語義分析(因為語法上正確的,但是語義不一定正確。例如:老虎吃人、人吃老虎,語法是正確的,都是主謂賓格式,且詞性相同,但是從語義分析上講就是錯誤的)、中間代碼生成、直到生成可執行程序。
㈡ 編程語言有幾種,分別都是編什麼程序的
計算機語言孫培的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。
計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:
解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。
編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須則笑唯先修改源代碼,再重新編譯生成新的目標文件(*.OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如VisualC++、VisualFoxpro、Delphi等。
[NextPage]
學習編程,從何入手
如果您想學習編程,卻又不知從何入手,那麼您不妨看看下面的幾種學習方案,可能會給您一些啟示吧!
==============================================
方案一Basic語言&VisualBasic
優點
(1)Basic簡單易學,很容易上手。
(2)VisualBasic提供了強大的可視化編程能力,可以讓你輕松地做出漂亮的程序。
(3)眾多的控制項讓編程變得象壘積木一樣簡單。
(4)VisualBasic的全部漢化讓我們這些見了English就頭大的人喜不自禁。
缺點
(1)VisualBasic不是真正的面向對象的開發文具。
(2)VisualBasic的數據類型太少,而且不支持指針,這使得它的表達能力很有限。
(3)VisualBasic不是真正的編譯型語言,它產生的最終代碼不是可執行的,是一種偽代碼。它需要一個動態鏈接庫去解釋執行,這使得VisualBasic的編譯速度大大變慢。
綜述:方案一適合初涉編程的朋升團友,它對學習者的要求不高,幾乎每個人都可以在一個比較短的時間里學會vB編程,並用VB做出自己的作品。對於那些把編程當做游戲的朋友來說,VB是您最佳的選擇。
Basic/VisualBasic簡介
==============================================
方案二Pascal語言&Delphi
優點
(1)Pascal語言結構嚴謹,可以很好地培養一個人的編程思想。
(2)Delphi是一門真正的面向對象的開發工具,並且是完全的可視化。
(3)Delphi使用了真編譯,可以讓你的代碼編譯成為可執行的文件,而且編譯速度非常快。
(4)Delphi具有強大的資料庫開發能力,可以讓你輕松地開發資料庫。
缺點
Delphi幾乎可以說是完美的,只是Pascal語言的過於嚴謹讓人感覺有點煩。
綜述:方案二比較適合那些具有一定編程基礎並且學過Pascal語言的朋友。
Pascal語言簡介
Delphi簡介
==============================================
方案三C語言&VisualC++
優點
(1)C語言靈活性好,效率高,可以接觸到軟體開發比較底層的東西。
(2)微軟的MFC庫博大精深,學會它可以讓隨心所欲地進行編程。
(3)VC是微軟製作的產品,與操作系統的結合更加緊密。
缺點
對使用者的要求比較高,既要具備豐富的C語言編程經驗,又要具有一定的WINDOWS編程基礎,它的過於專業使得一般的編程愛好者學習起來會有不小的困難。
綜述:VC是程序員用的東西。如果你是一個永不滿足的人,而且可以在編程上投入很大的精力和時間,那麼學習VC你一定不會後悔的。
C語言簡介
==============================================
方案四C++語言&C++Builder
優點
(1)C++語言的優點全部得以繼承。
(2)完全的可是化。
(3)極強的兼容性,支持OWL、VCL和MFC三大類庫。
(4)編譯速度非常快。
缺點
由於推出的時間太短,關於它的各種資料還不太多。
綜述:我認為C++Builder是最好的編程工具。它既保持了C++語言編程的優點,又做到了完全的可視化。
C語言簡介
==============================================
方案五SQL語言&PowerBuilder
對於一些傳統的數據開發人員來說,Foxpro系列也許讓他們感到更加熟悉。但是對於初學者來說,PowerBuilder也許是最好的資料庫開發工具。各種各樣的控制項,功能強大的PowerBuilder語言都會幫助你開發出自己的資料庫應用程序。
[NextPage]
JSP簡介
在Sun正式發布JSP(JavaServerPages)之後,這種新的Web應用開發技術很快引起了人們的關注。JSP為創建高度動態的Web應用提供了一個獨特的開發環境。按照Sun的說法,JSP能夠適應市場上包括ApacheWebServer、IIS4.0在內的85%的伺服器產品。
JSP與ASP的簡單比較
JSP與Microsoft的ASP技術非常相似。兩者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。在ASP或JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁面只依賴於Web伺服器,而ASP和JSP頁面需要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被重新嵌入到HTML代碼中,然後一起發送給瀏覽器。ASP和JSP都是面向Web伺服器的技術,客戶端瀏覽器不需要任何附加的軟體支持。
ASP的編程語言是VBScript之類的腳本語言,JSP使用的是Java,這是兩者最明顯的區別。
此外,ASP與JSP還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執行;在JSP下,代碼被編譯成Servlet並由Java虛擬機執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。
運行環境
執行JSP代碼需要在伺服器上安裝JSP引擎。此處我們使用的是Sun的JavaServerWebDevelopmentKit(JSWDK)。為便於學習,這個軟體包提供了大量可供修改的示例。安裝JSWDK之後,只需執行startserver命令即可啟動伺服器。在默認配置下伺服器在埠8080監聽,使用p>
在運行JSP示例頁面之前,請注意一下安裝JSWDK的目錄,特別是"work"子目錄下的內容。執行示例頁面時,可以在這里看到JSP頁面如何被轉換成Java源文件,然後又被編譯成class文件(即Servlet)。JSWDK軟體包中的示例頁面分為兩類,它們或者是JSP文件,或者是包含一個表單的HTML文件,這些表單均由JSP代碼處理。與ASP一樣,JSP中的Java代碼均在伺服器端執行。因此,在瀏覽器中使用"查看源文件"菜單是無法看到JSP源代碼的,只能看到結果HTML代碼。所有示例的源代碼均通過一個單獨的"examples"頁面提供。
JavaServlet是一種開發Web應用的理想構架。JSP以Servlet技術為基礎,又在許多方面作了改進。JSP頁面看起來象普通HTML頁面,但它允許嵌入執行代碼,在這一點上,它和ASP技術非常相似。利用跨平台運行的JavaBean組件,JSP為分離處理邏輯與顯示樣式提供了卓越的解決方案。JSP必將成為ASP技術的有力競爭者。
[NextPage]
SQL語言簡介
SQL全稱是「結構化查詢語言(StructuredQueryLanguage)」,最早的是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEMR開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle,Sybase,Informix,SQLserver這些大型的資料庫管理系統,還是像VisualFoxporo,PowerBuilder這些微機上常用的資料庫開發系統,都支持SQL語言作為查詢語言。
StructuredQueryLanguage包含4個部分:
數據查詢語言DQL-DataQueryLanguageSELECT
數據操縱語言DQL-,UPDATE,DELETE
數據定義語言DQL-DataDefinitionLanguageCREATE,ALTER,DROP
數據控制語言DQL-DataControlLanguageCOMMITWORK,ROLLBACKWORK
SQL的歷史
在70年代初,
E.E.Codd
首先提出了關系模型。70年代中期,IBM公司在研製SYSTEMR關系資料庫管理系統中研製了SQL語言,最早的SQL語言(叫SEQUEL2)是在1976年11月的IBMJournalofR&D上公布的。1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS資料庫系統中也實現了SQL。
1986年10月,美國ANSI採用SQL作為關系資料庫管理系統的標准語言(ANSIX3.135-1986),後為國際標准化組織(ISO)採納為國際標准。
1989年,美國ANSI採納在ANSIX3.135-1989報告中定義的關系資料庫管理系統的SQL標准語言,稱為ANSISQL89,該標准替代ANSIX3.135-1986版本。該標准為下列組織所採納:
●國際標准化組織(ISO),為ISO9075-1989報告「」
●美國聯邦政府,發布在(FIPSPUB)127
目前,所有主要的關系資料庫管理系統支持某些形式的SQL語言,大部分資料庫打算遵守ANSISQL89標准。
SQL的優點
SQL廣泛地被採用正說明了它的優點。它使全部用戶,包括應用程序員、DBA管理員和終端用戶受益非淺。
(1)非過程化語言
SQL是一個非過程化的語言,因為它一次處理一個記錄,對數據提供自動導航。SQL允許用戶在高層的數據結構上工作,而不對單個記錄進行操作,可操作記錄集。所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。SQL不要求用戶指定對數據的存放方法。這種特性使用戶更易集中精力於要得到的結果。所有SQL語句使用查詢優化器,它是RDBMS的一部分,由它決定對指定數據存取的最快速度的手段。查詢優化器知道存在什麼索引,哪兒使用合適,而用戶從不需要知道表是否有索引,表有什麼類型的索引。
(2)統一的語言
SQL可用於所有用戶的DB活動模型,包括系統管理員、資料庫管理員、應用程序員、決策支持系統人員及許多其它類型的終端用戶。基本的SQL命令只需很少時間就能學會,最高級的命令在幾天內便可掌握。SQL為許多任務提供了命令,包括:
●查詢數據
●在表中插入、修改和刪除記錄
●建立、修改和刪除數據對象
●控制對數據和數據對象的存取
●保證資料庫一致性和完整性
以前的資料庫管理系統為上述各類操作提供單獨的語言,而SQL將全部任務統一在一種語言中。
(3)是所有關系資料庫的公共語言
由於所有主要的關系資料庫管理系統都支持SQL語言,用戶可將使用SQL的技能從一個RDBMS轉到另一個。所有用SQL編寫的程序都是可以移植的。
[NextPage]
Java語言簡介
一.Java的由來
當1995年SUN推出Java語言之後,全世界的目光都被這個神奇的語言所吸引。那麼Java到底有何神奇之處呢?
Java語言其實最是誕生於1991年,起初被稱為OAK語言,是SUN公司為一些消費性電子產品而設計的一個通用環境。他們最初的目的只是為了開發一種獨立於平台的軟體技術,而且在網路出現之前,OAK可以說是默默無聞,甚至差點夭折。但是,網路的出現改變了OAK的命運。
在Java出現以前。Internet上的信息內容都是一些乏味死板的HTML文檔。這對於那些迷戀於WEB瀏覽的人們來說簡直不可容忍。他們迫切希望能在WEN中看到一些互動式的內容,開發人員也極希望能夠在WEB上創建一類無需考慮軟硬體平台就可以執行的應用程序,當然這些程序還要有極大的安全保障。對於用戶的這種要求,傳統的編程語言顯得無能為力,面SUN的工程師敏銳地察覺到了這一點,從1994年起,他們開始將OAK技術應用於WEB上,並且開發出了HotJava的第一個版本。當SUN公司1995年正式以Java這個名字推出的時候,幾乎所有的WEB開發人員都想到:噢,這正是我想要的。於是Java成了一顆耀眼的明星,丑小鴨一下了變成了白天鵝。
二.Java的定義
Java是一種簡單的,面象對象的,分布式的,解釋的,鍵壯的安全的,結構的中立的,可移植的,性能很優異的多線程的,動態的語言。
Java的開發環境有不同的版本,如sun公司的JavaDevelopersKit,簡稱JDK。後來微軟公司推出了支持Java規范的MicrosoftVisualJ++Java開發環境,簡稱VJ++。
三.Java的特點
1.平台無關性
平台無關性是指Java能運行於不同的平台。Java引進虛擬機原理,並運行於虛擬機,實現不同平台的Java介面之間。使用Java編寫的程序能在世界范圍內共享。Java的數據類型與機器無關,Java虛擬機(JavaVirtualMachine)是建立在硬體和操作系統之上,實現Java二進制代碼的解釋執行功能,提供於不同平台的介面的。
2.安全性
Java的編程類似C++,學習過C++的讀者將很快掌握Java的精髓。Java舍棄了C++的指針對存儲器地址的直接操作,程序運行時,內存由操作系統分配,這樣可以避免病毒通過指針侵入系統。Java對程序提供了安全管理器,防止程序的非法訪問。
3.面向對象
Java吸取了C++面向對象的概念,將數據封裝於類中,利用類的優點,實現了程序的簡潔性和便於維護性。類的封裝性、繼承性等有關對象的特性,使程序代碼只需一次編譯,然後通過上述特性反復利用。程序員只需把主要精力用在類和介面的設計和應用上。Java提供了眾多的一般對象的類,通過繼承即可使用父類的方法。在Java中,類的繼承關系是單一的非多重的,一個子類只有一個父類,子類的父類又有一個父類。Java提供的Object類及其子類的繼承關系如同一棵倒立的樹形,根類為Object類,Object類功能強大,經常會使用到它及其它派生的子類。
4.分布式
Java建立在擴展TCP/IP網路平台上。庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。這使得程序員使用網路上的文件和使用本機文件一樣容易。
5.鍵壯性
Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自已操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能。這些功能特徵大大提高了開發Java應用程序的周期。Java提供:Null指針檢測、數組邊界檢測、異常出口、Bytecode校驗。
四.Java與C/C++語言
Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++被大家接受,所以Java設計成C++形式,讓大家很容易學習。
Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,並增加了一些很有用的功能,如自動收集碎片。
Java去掉了以下幾個C和C++功能:
指針運算
結構
typedefs
#define
需要釋放內存
這將減少了平常出錯的50%。而且,Java很小,整個解釋器只需215K的RAM。
面象對象:Java實現了C++的基本面象對象技術並有一些增強,(為了語言簡單,刪除了一些功能)。Java處理數據方式和用對象介面處理對象數據方式一樣。
五.Java與Internet
我們知道,早先的www僅可以傳送文本和圖片,Java的出現實現了互動的頁面,是一次偉大的革命。
Java並不是為Internet,WWW而設計的,它也可以用來編寫獨立的應用程序。Java是一種面向對象語言。Java語言類似於C++語言,所以已熟練掌握C++語言的編程人員,再學習Java語言就容易得多!Java程序需要編譯。實際上有兩種Java程序:一種Java應用程序是一個完整的程序,如Web瀏覽器。一種Java小應用程序是運行於Web瀏覽器中的一個程序.
Java程序和它的瀏覽器HotJava,提供了可讓你的瀏覽器運行程序的方法。你能從你的瀏覽器里直接播放聲音。你還能播放頁面里的動畫。Java還能告訴你的瀏覽器怎樣處理新的類型文件。當我們能在2400baud線上傳輸視頻圖象時,HotJava將能顯示這些視頻。
當今Internet的一大發展趨勢是電子商務,而Internet的安全問題是必須解決的問題,通常大的部門應設置防火牆,阻止非法侵入。
電子商務是當今的熱門話題,然而傳統的編程語言難以勝任電子商務系統,電子商務要求程序代碼具有基本的要求:安全、可靠、同時要求能與運行於不同平台的機器的全世界客戶開展業務。Java以其強安全性、平台無關性、硬體結構無關性、語言簡潔同時面向對象,在網路編程語言中占據無可比擬的優勢,成為實現電子商務系統的
㈢ 編譯程序分為哪幾個主要部分
1、詞法分析
詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程序進行掃描,產生一個個的單詞符號,把作為字元串的源程序改造成為單詞符號串的中間程序。執行詞法分析的程序稱為詞法分析程序或掃描器。
2、語法分析
編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。
3、中間代碼生成
中間代碼是源程序的一種內部表示,或稱中間語言。中間代碼的作用是可使編譯程序的結構在邏輯上更為簡單明確,特別是可使目標代碼的優化比較容易實現。中間代碼即為中間語言程序,中間語言的復雜性介於源程序語言和機器語言之間。
4、代碼優化
代碼優化是指對程序進行多種等價變換,使得從變換後的程序出發,能生成更有效的目標代碼。所謂等價,是指不改變程序的運行結果。所謂有效,主要指目標代碼運行時間較短,以及佔用的存儲空間較小。這種變換稱為優化。
5、目標代碼生成
目標代碼生成是編譯的最後一個階段。目標代碼生成器把語法分析後或優化後的中間代碼變換成目標代碼。
(3)不屬於編譯程序組成的部分是什麼擴展閱讀:
特點
數據結構分析和綜合時所用的主要數據結構,包括符號表、常數表和中間語言程序。符號表由源程序中所用的標識符連同它們的屬性組成。
其中屬性包括種類(如變數、數組、結構、函數、過程等)、類型(如整型、實型、字元串、復型、標號等),以及目標程序所需的其他信息。常數表由源程序中用的常數組成,其中包括常數的機內表示,以及分配給它們的目標程序地址。
分析部分源程序的分析是經過詞法分析、語法分析和語義分析三個步驟實現的。詞法分析由詞法分析程序(又稱為掃描程序)完成。
其任務是識別單詞(即標識符、常數、保留字,以及各種運算符、標點符號等)、造符號表和常數表,以及將源程序換碼為編譯程序易於分析和加工的內部形式。
㈣ 編譯程序有哪些主要構成成分
一個典型的編譯程序通常包含8個組成部分,它們是詞法分析程序、語法分析程序、語義分析程序、中間代碼生成程序、中間代碼優化程序、目標代碼生成程序、表格管理程序和錯誤處理程序。
http://wenku..com/link?url=0v8lInjgI_bwRat7uR65ijEnNq0lW2Kfm9__xhVlwB9e3qwwVF5EVslxs1IP5mJ5-bTutTLbS
㈤ 鏈変漢璁や負緙栬瘧紼嬪簭鐨5涓緇勬垚閮ㄥ垎緙轟竴涓嶅彲,榪欑嶇湅娉曟g『鍚
姝g『銆
緙栬瘧紼嬪簭鐨5涓闃舵典腑錛岃瘝娉曞垎鏋愶紝璇娉曞垎鏋愶紝璇涔夊垎鏋愬拰浠g爜鐢熸垚鐢熸垚鏄蹇呴』瀹屾垚鐨勩傝屼腑闂翠唬鐮佺敓鎴愬拰浠g爜浼樺寲騫朵笉鏄蹇呬笉鍙灝戠殑銆
浠庡姛鑳戒笂鐪嬶紝緙栬瘧紼嬪簭灝辨槸涓涓璇璦緲昏瘧紼嬪簭銆傝璦緲昏瘧紼嬪簭鎶婁竴縐嶈璦涔︼紙縐頒綔婧愯璦錛夊啓鐨勭▼搴忕炕璇戞垚鍙︿竴縐嶈璦銆