⑴ c++編譯器的分類
Cygwin
Mingw32
DJGPP
Dev-C++(Mingw32)
還有正宗的GNU GCC 2.95.5~3.0.0.4版本
GNU C++
g++是一個開源的C++編譯器,GCC3.3對標准化C++的支持達96.15%。
值得一提的是,gcc是gnu c的編譯器, g++是gnu c++的編譯器, 而egcs(Enhanced GNU Compiler Suite)可以認為是gcc的改進版。目前gcc已經改名,從原來代表GNU C Compiler改變為代表GNU Compiler Collection。而MinGW或Cgywin,是在windows平台上的gnu c/c++編譯器,以及庫文件,運行環境的集合。
在GCC家族中GNU GCC是根本,其它的編譯器版本都是從它導出的。其中,Cygwin和Mingw32都是WIN32平台下的編譯器,DJGPP是DOS下的32位編譯器。大家所熟知的DEV-C++充其量只是GCC的一個外殼,它所自帶的編譯器就是Mingw32的一個版本。這些GCC的版本中,Cygwin是最大的,它與其說是一個編譯器,倒不如說是一套編程工具。它不僅有編譯器,還有其它很多的工具。其實,它就是一個UNIX系統在WIN32平台上的實現。實現了大多常用的UNIX工具,最近的版本中連Apache這樣的「工具」都集成進來的。不過,Cygwin雖然功能強大,但它卻不是很易用(和UNIX相似,熟悉UNIX的人用它可以很快上手),因為太多其它的工具分散了人們的注意力。相比之下Mingw32就要好用得多,它只有最基本的幾個編程工具(只可惜它不自帶GDB)。GCC中並不只是C/C++編譯器,其中還有很多其它的編譯器如JAVA,Fortran,ADA等。它是一個編譯器集合,不過有些編譯器只能在UNIX系統上用。 MSC 5.0、6.0、7.0
MSQC 1.0、2.5
MSVC 1.0、4.2、6.0、7.0
Visual C++
VC++6.0對標准化C++的兼容僅達83.43%。
它是Visual Studio、Visual Studio.net 2002、Visual Studio.net 2003、Visual Studio.net 2005的後台C++編譯器。隨著Stanley Lippman等編譯器設計大師的加盟,它變得非常成熟可靠了。Visual C++ 7.1對標准C++的兼容性達到98.22%。 TC 1.0、2.0
TC++ 1.01、3.0
BC 3.0、3.1、4.0、4.5、5.0、5.02
BCB 3.0、5.0、6.0
Borland C++
該編譯以速度快、空間效率高而著稱。它的5.5版本對標准化C++的支持達92.73%,而官方稱100%符合ANSI/ISO的C++標准和C99標准。
它是Borland公司開發的,是Borland C++ Builder和Borland C++ Builder X這兩種IDE的後台編譯器。 Intel C/C++ 5.0
Watcom C/C++ 11.0、11.0c
VectorC 1.3.3
IBM VisualAge for C++
DigitalMars C/C++
KAI C/C++ 4.03f for RedHat 7.2
Lcc4.1
LCC-WIN32 2001-09-25~2002-04-28日版
Small C
CC386
Pacific C
Intel C/C++大家一看名稱就知道是Intel的東西,它和VC6完全兼容,不過要掛在VC6下才能用。Watcom C/C++是早先編譯器四國大戰中的一員,原本是很不錯的東西,可惜戰略不對,現在已不見聲息了。倒是以它為基礎的一個OpenWatcom現在還在奮戰。VectorC是我近日才發現的一個好東東,它是個純C的編譯器。IBM的VisualAge for C++原本是IBM想用來淌C++編譯器這片渾水的東西,不過IBM的戰略改了,它就被放棄了。DigitalMars C/C++的前身的Symantec C++(它也是編譯器四國大戰中的一員),不過現在Symantec不做了,於是它的作者就把它改成了DigitalMars C/C++開放給大家使用。以上這些都是WIN32平台上的東西。KAI C/C++是個很強大的C/C++編譯器,它是個多平台的編譯器。不過現在被INTEL收購了,已經停止開發了。Lcc4.1是個純C的編譯器它是開放源代碼的。不過不怎麼好用。LCC-WIN32是一個在LCC基礎上開發的C語言的集成開發環境,很好用,而且有很詳細的資料,FREE!Pacific C是一個純DOS的C的集成開發環境,就不多說了。Small C CC386都是開放源代碼的編譯器,它們都很簡單,應用來給大家學習編譯器的。 Quincy
Eic
CINT
Quincy Eic CINT都是C的解釋器,是用來讓大家學習C語言的其中CINT的功能很強大,還支持一些C++的特性。
⑵ 編譯原理課程講什麼內容
《編譯原理》課程介紹編譯器構造的一般原理和基本實現方法,主要介紹編譯器的各個階段:詞法分析、語法分析、語義分析、中間代碼生成、代碼優化和目標代碼生成。本課程在介紹命令式程序設計語言實現技術的同時,強調一些相關的理論知識,如形式語言和自動機理論、語法制導的定義和屬性文法、類型論等。它們是計算機專業理論知識的重要一部分,在本書中結合應用來介紹這些知識,有助於學生較快領會和掌握。本課程強調形式化描述技術,並以語法制導定義作為翻譯的主要描述工具。本課程強調對編譯原理和技術在宏觀上的理解,作為原理性的教學,本課程主要介紹基本的理論和方法,不偏向於某種源語言或目標機器。
⑶ windows的pc端編譯器有哪些
Windows的pc端編譯器有:
1) Visual Studio
Windows 下首先推薦大家使用微軟開發的 Visual Studio(簡稱 VS),它是 Windows 下的標准 IDE,實際開發中大家也都在使用。為了適應最新的 Windows 操作系統,微軟每隔一段時間(一般是一兩年)就會對 VS 進行升級。VS 的不同版本以發布年份命名,例如 VS2010 是微軟於 2010 年發布的,VS2017 是微軟於 2017 年發布的。
不過 VS 有點龐大,安裝包有 2~3G,下載不方便,而且會安裝很多暫時用不到的工具,安裝時間在半個小時左右。
對於初學者,我推薦使用 VS2015。最好不用使用 VS2017,有點坑初學者。
2) DevC++
如果你討厭 VS 的復雜性,那麼可以使用 Dev C++。Dev C++ 是一款免費開源的 C/C++ IDE,內嵌GCC編譯器(Linux GCC 編譯器的 Windows 移植版),是 NOI、NOIP等比賽的指定工具。Dev C++ 的優點是體積小(只有幾十兆)、安裝卸載方便、學習成本低,缺點是調試功能弱。
NOI 是National Olympiad in Informatics的縮寫,譯為「全國青少年信息學奧林匹克競賽」;NOIP 是National Olympiad in informatics in Provinces的縮寫,譯為「全國青少年信息學奧林匹克聯賽」。NOI、NOIP 都是奧林匹克競賽的一種,參加者多為高中生,獲獎者將被保送到名牌大學或者得到高考加分資格。
3) Visual C++ 6.0
Visual C++ 6.0(簡稱VC 6.0)是微軟開發的一款經典的 IDE,很多高校都以 VC 6.0 為教學工具來講解C和C++。但VC 6.0是1998年的產品,很古老了,在 Win7、Win8、Win10 下會有各種各樣的兼容性問題,甚至根本不能運行,所以不推薦使用。
VC 6.0 早就該扔進垃圾桶了,可是依然有很多大學把它作為教學工具,並且選用的教材也以 VC 6.0 為基礎來講解C語言和 C++,可見教學體制的極端落後,課程體系的更新遠遠跟不上技術的進步。
4) 其它 IDE
除了上面提到的三款 IDE,Windows 平台下還有很多其他的 IDE,它們各有特點,例如:
Code::Blocks 是一款開源、跨平台、免費的 C/C++ IDE,它和 Dev C++ 非常類似,小巧靈活,易於安裝和卸載,不過它的界面要比 Dev C++ 復雜一些,不如 Dev C++ 來得清爽。
Turbo C 是一款古老的、DOS 年代的C語言開發工具,程序員只能使用鍵盤來操作 Turbo C,不能使用滑鼠,所以非常不方便。但是 Turbo C 集成了一套圖形庫,可以在控制台程序中畫圖,看起來非常炫酷,所以至今仍然有人在使用。
C-Free 是一款國產的 Windows 下的C/C++ IDE,最新版本是 5.0,整個軟體才 14M,非常輕巧,安裝也簡單,界面也比 Dev C++ 漂亮。C-Free 的缺點也是調試功能弱。可惜的是,C-Free 已經多年不更新了,組件都老了,只能在 XP、Win7 下運行,在 Win8、Win10 下可能會存在兼容性問題。
⑷ C++的編譯器都有哪些
kDevelop、Anjuta、Code Blocks、Visual Mingw、Ideone、Eclipse CDT、Compilr、Code Lite、Netbeans C++、DevC++。
⑸ 編譯原理學了有什麼用
對大多數人來說,學過編譯原理,應該可以知道對於很多代碼的優化,編譯器其實可以做好,不需要自己寫代碼的時候杞人憂天。在通用、局部的優化上,甚至編譯器往往做得比程序員好。
大概率會意識到編譯原理背後的故事,也許會沉迷在某個方向,也許還會樂於看一些奇妙的parser構建方式。
大概還可能會去學習類型系統,發現形式化的故事似乎在很多方面都有對應的版本,而後,他們也許會嘗試走向研究,去挑戰目前都沒有好好解決的代碼優化問題,也許會走向應用,用起LLVM,在上面加個target,支持一些新硬體,做個新語言的前端等。
編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 編譯原理是計算機專業設置的一門重要的專業課程。
編譯原理課程是計算機相關專業學生的必修課程和高等學校培養計算機專業人才的基礎及核心課程,同時也是計算機專業課程中最難及最挑戰學習能力的課程之一。編譯原理課程內容主要是原理性質,高度抽象。
編譯可以分為五個基本步驟:詞法分析、語法分析、語義分析及中間代碼的生成、優化、目標代碼的生成。這是每個編譯器都必須的基本步驟和流程, 從源頭輸入高級語言源程序輸出目標語言代碼。
1、詞法分析
詞法分析器是通過詞法分析程序對構成源程序的字元串從左到右的掃描, 逐個字元地讀, 識別出每個單詞符號, 識別出的符號一般以二元式形式輸出, 即包含符號種類的編碼和該符號的值。
詞法分析器一般以函數的形式存在, 供語法分析器調用。當然也可以一個獨立的詞法分析器程序存在。完成詞法分析任務的程序稱為詞法分析程序或詞法分析器或掃描器。
2、語法分析
語法分析是編譯過程的第二個階段。這階段的任務是在詞法分析的基礎上將識別出的單詞符號序列組合成各類語法短語, 如「語句」, 「表達式」等.語法分析程序的主要步驟是判斷源程序語句是否符合定義的語法規則, 在語法結構上是否正確。
而一個語法規則又稱為文法, 喬姆斯基將文法根據施加不同的限制分為0型、1型、2型、3型文法, 0型文法又稱短語文法, 1型稱為上下文有關文法, 2型稱為上下文無關文法, 3型文法稱為正規文法, 限制條件依次遞增。
3、語義分析
詞法分析注重的是每個單詞是否合法, 以及這個單詞屬於語言中的哪些部分。語法分析的上下文無關文法注重的是輸入語句是否可以依據文法匹配產生式。
那麼, 語義分析就是要了解各個語法單位之間的關系是否合法。實際應用中就是對結構上正確的源程序進行上下文有關性質的審查, 進行類型審查等。
4、中間代碼生成與優化
在進行了語法分析和語義分析階段的工作之後, 有的編譯程序將源程序變成一種內部表示形式, 這種內部表示形式叫做中間語言或中間表示或中間代碼。
所謂「中間代碼」是一種結構簡單、含義明確的記號系統, 這種記號系統復雜性介於源程序語言和機器語言之間, 容易將它翻譯成目標代碼。另外, 還可以在中間代碼一級進行與機器無關的優化。
5、目標代碼的生成
根據優化後的中間代碼, 可生成有效的目標代碼。而通常編譯器將其翻譯為匯編代碼, 此時還需要將匯編代碼經匯編器匯編為目標機器的機器語言。
6、出錯處理
編譯的各個階段都有可能發現源碼中的錯誤, 尤其是語法分析階段可能會發現大量的錯誤, 因此編譯器需要做出錯處理, 報告錯誤類型及錯誤位置等信息。
⑹ 常見的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, 這些軟體很受用戶歡迎。
(6)課程中的編譯器擴展閱讀:
C編譯的整個過程很復雜,大致可以分為以下四個階段:
1、預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。
2、編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。
3、匯編階段將匯編語言翻譯成機器指令。
4、鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。
⑺ 編譯原理與什麼課程有聯系
與人工智慧、機器學習、操作系統、編譯器等都有關系,屬於計算機專業的核心課程,需要扎實掌握;
⑻ 編譯器的邏輯階段可以怎樣分組
編譯器的邏輯階段通常可以分為以下幾個部分:
詞法分析(Lexical Analysis):將源代碼轉換為單詞序列,也稱為詞法單元或記號。詞法分析器將源代碼字元流掃描,邊掃描邊識別記號,然後將這些記號作為輸出傳遞給下一個階段。識別出的詞法單元通常是關鍵字、標識符、運算符、界符、常量等。
語法分析(Syntax Analysis):將單詞序列轉換為語法分析樹,也稱為語法樹。語法分析器通過詞法分析器輸出的記號序列構建出語法樹,檢查代碼是否符合語法規則。如果發現不符合語法規則的語句,會生成一個錯誤消息。
語義分析(Semantic Analysis):對語法樹進行語義檢查。語義分析器會檢查語法樹中的語法單元是否符合語義規則,例如變數是否已聲明,數據類型是否匹配,函數參數是否正確等。如果發現不符合語義規則的語句,會生成一個錯誤消息。
中間代碼生成(Intermediate Code Generation):將語法樹轉換為中間代碼。中間代碼是一種與源代碼無關的代碼形式,通常使用一種類似於匯編語言的中間表示形式如伍蠢。
代碼優化(Code Optimization):對中間代碼進行優化,以提高程序的性能和效率。代碼優化器會應用一些優化技術,例如常量折疊、死代碼消除、循環展開等。
目標代碼生成(Code Generation):將中間代碼橘配轉換為機器碼或目標代碼。代碼生成器會將中間代碼轉換為目標機器的機器碼或匯編代碼,以便可執行程序的生成。
符號表管理(Symbol Table Management):維護變數、函數等符號的信息。符號表管理器會記錄符號的類型、作用域、存儲位置等信息,並提供符號的查找、插入、刪除等操作。
以上是編譯器的典型邏輯階段,不同的編譯器可能會渣陪有所不同,但通常都會包含以上階段的一部分或全部。
⑼ 學習編程都要用到哪些軟體啊
學習編程的時候選擇適當的軟體是非常重要的,那麼學習編程時用什麼軟體好呢?下面小編給大家分享一下。
操作方法
01
Notepad
對於編程的初學者來說,用Notepad這樣的記事本編輯器即可實現初期的大部分功能
02
Sumlime Text
當進入到編程學習的中級階段的時候,就可以用一些靈活可擴展的編輯軟體了,Sublime Text就是這樣的軟體
03
Eclipse
接下來進入編程的熟練階段以後就可以運用集成開發環境了,Eclipse是一款比較不錯的集成開發軟體