當前位置:首頁 » 編程軟體 » 前端編譯器鼻祖

前端編譯器鼻祖

發布時間: 2022-12-20 18:21:46

編譯器前端開發

編譯器粗略分為詞法分析,語法分析,類型檢查,中間代碼生成,代碼優化,目標代碼生成,目標代碼優化。把中間代碼生成及之前階段劃分問編譯器的前端,那麼後端與前端是獨立的。後端只需要一種中間代碼表示,可以是三地址代碼或四元式等,而這些都與前端生成的方式無關。也就是不論你前端是用fortran還是c/c++,只要生成了中間代碼表示就可以了,後端是不管你是用哪種語言生成的。

⑵ 現在比較好用的前端開發工具有哪些啊

1. node.js + npm, 這個是前端工具的一個平台,沒有他們就沒有以下的工具,建立開發環境,下載開發工具,運行開發工具的利器
2. bower, 庫依賴管理器,類似於npm,但針對瀏覽器JavaScript的依賴管理,減少尋找庫,下載庫和升級庫的煩惱
3.grunt,流程自動化管理工具,將你非編程的開發步驟減到最小,grunt watch+liveReload或者grunt connect,可以使得免除你F5無盡地獄,發布和開發各種無壓力。以下大部分開發工具,都有grunt的相對應的插件,也就是說他們都能利用grunt進行自動化運行
5. 本人用less比較多,因為基本無縫兼容歷史遺留系統中的css,(而Sass語法比較特殊,還沒有專門用過,應該開發新系統的css比較好),一套css預編譯語言,可以把less語法轉成css語法,lessc是less語言編譯器,配合grunt less,編寫大型css文檔毫無壓力。

6.Phantomjs,沒有界面的瀏覽器,用js腳本控制其操作網頁。測試,抓圖,網頁流程自動化利器。配合casperjs的語法簡化功能真強庫後,控制Phantomjs就更加容易了
7. grunt PhotoBox, 利用phantomjs抓圖功能和ImageMagick圖片比較功能,在利用live-reload即時刷新功能,可以讓你開發css的時候,快速對n多個頁面進行觀察,看其前後變化。不過缺點也比較明顯,就是速度慢。但比起手動對比來看,還是非常快的。值得css開發時擁有
8. phantomCSS,這個和grunt photobox類似,都用於css開發的,差別是photobox是全局觀察差別,而這個是單元組件觀察差別,它方便你就抓頁面中某一塊元素然後進行前後比較,更加註重細節上的差異,這個比較合適組件開發時候使用。
9. jshint,幫助你快速定位JavaScript的語法錯誤和潛在的跨瀏覽器兼容性問題。在部署你JS前,用jshint檢查一下是沒錯的 。
10.UglifyJS,壓縮JavaScript代碼,使你的JS代碼可以更加快速的載入。有grunt的插件
11. browserify允許你在瀏覽器裡面使用CMD標准模塊,但本人認為它的另外一個優勢是合並代碼,開發時候可以把代碼模塊化,分成很多很多小文件,然後有調理的放到相對應文件夾下,然後最後合成單一文件。本人曾經利用browserify開發greasemonkey代碼,大大簡化了greasemonkey的開發難度和增強了greasemonkey代碼的質量。browserify有grunt插件,這樣又減少的開發步驟。
12. Karma, google開發的一個單元測試運行器,這個自己本身不是一個單元測試框架,而是配合測試單元框架的一個工具。由於前端瀏覽器眾多,就算你有live-reload這樣自動化工具,但是還是要手動打開各種瀏覽器,手動把你的單元測試在各個瀏覽器都運行一遍。這個工具目的是目的就是讓電腦能自動化打開各種瀏覽器,然後把單元測試在各個瀏覽器中自動運行一遍,讓這個步驟也能自動化了。
13.clean-css (grunt cssmin), 我用的是grunt cssmin,但是grunt cssmin實際上背後使用的是clean-css工具,這個工具就是用來壓縮精簡css的,讓css文件大小更小。

⑶ 前端開發常用哪些工具軟體

前端開發的編譯器在選擇上還是很多的。在學校里,老師主要講三個前端開發軟體:

1、WebStorm

幫助編寫HTML、CSS、Less、Sass和Stylus代碼,並且支持Node.js和主流框架,如React、Angular、Vue.js、Meteor等。與IntelliJ IDEA同源,繼承了IntelliJ IDEA強大的JS部分的功能。但是付費軟體。

2、IntelliJ idea

頁面很簡單,乍一看像是一個記事本,它也確實可以當記事本用。有很多特色插件可以使用,支持多種編程語言的語法高亮顯示,具有代碼折疊功能。

2、HBuilderX

HBuilderX是DCloud(數字天堂)推出的一款支持HTML5的Web開發IDE。HBuilder的編寫用到了Java、C、Web和Ruby。HBuilder本身主體是由Java編寫。是HBuilder下一代版本,具有輕便、適合vue框架的特點。

⑷ 比較厲害的外國前端程序員有哪些

1. Jon Skeet

個人名望:程序技術問答網站Stack Overflow總排名第一的大神,每月的問答量保持在425個左右。

個人簡介/主要榮譽:谷歌軟體工程師,代表作有《深入理解C#(C# In Depth)》。

網路上對Jon Skeet的評價:

「他根本不需要調試器,只要他盯一下代碼,錯誤之處自會原形畢露。」
「如果他的代碼沒有通過編譯的時候,編譯器就會道歉。」
「他根本不需要什麼編程規范,他的代碼就是編程規范。」

2. Gennady Korotkevich

個人聲望:編程大賽神童

個人簡介/主要榮譽:年僅11歲時便參加國際信息學奧林比克競賽,創造了最年輕選手的記錄。在2007-2012年間,總共取得6枚奧賽金牌;2013年美國計算機協會編程比賽冠軍隊成員;2014年Facebook黑客杯冠軍得主。截止目前,穩居俄編程網站Codeforces聲望第一的寶座,在TopCoder演算法競賽中暫列榜眼位置。

網路上對Gennady Korotkevich的評價:

「一個編程神童。」
「他太令人驚訝了,他相當於我在白俄羅斯建立了一支強大的編程隊伍」
「徹底的編程天才」

3. Linus Torvalds

個人名望:linux之父

個人簡介/主要榮譽:

Linux和Git之父,一個開源的操作系統;
1998年EFF(電子前沿基金會)先鋒獎得主;
2000年英國計算機學會Lovelace獎章得主;
2012年千禧技術獎得主;
2014年IEEE(電氣和電子工程師協會)計算機學會先鋒獎得主;
2008年入選計算機歷史博物館名人堂;
2012年入選互聯網名人堂。

網路上對Linus Torvalds的評價:

「他簡直優秀得無與倫比。」

4. Jeff Dean

個人名望:谷歌搜索索引技術的幕後大腦。

個人簡介/主要榮譽:谷歌大規模分布式計算系統的設計師,例如:站點爬行,索引與搜索,在線廣告,MapRece,BigTable以及Spanner(分布式資料庫)。2009年進入美國國家工程院;2012年美國計算機協會SIGOPS Mark Weiser Award以及Infosys Foundation Award獎項得主。
網路上對Jeff Dean的評價:

「使數據挖掘取得了突破性發展。」
「能夠在各項工作都已安排得滿滿的情況下,仍能構思、創作、發布出MapRece以及BigTable這些令人贊嘆不已的工具。」

5. John Carmack

個人名望:第一人稱射擊游戲經典師祖《Doom》(毀滅戰士)之父

個人簡介/主要榮譽:id Software公司聯合創始人,製作了很多膾炙人口的游戲,如:《德軍司令部》(Wolfenstein 3D,又名《刺殺希特勒》)、《Doom》(毀滅戰士)、《Quake》(雷神之錘)。引領了很多計算機顯示領域的新技術,包括:adaptive tile refresh(切片適配更新)、binary space partitioning(二元空間分割)、surface caching(平面緩存);2001年進入互動藝術與科學學院名人堂;2010年收獲游戲開發者精選獎終身成就獎殊榮。

網路上對John Carmack的評價:

「製作了很多革命性的第一人稱射擊游戲,影響了一代又一代的游戲設計者。」
「他能在一周內就完成任何的基礎設計工作。」
「他是會編程的莫扎特。」

⑸ web前端和C++哪個更好

對大多數互聯網產品項目來說,僅僅是因為其它語言在開發成本和運行速度間平衡地更好。然鵝,C/C++並不是絕對的不適合Web開發。對計算量大又想高效的前後端應用,C/C++可能更合適。
從後端來看,完全可以用C/C++來開發。Google的很多後端業務仍然用的C++。C++的web開發工具和框架雖沒有PHP、Node.js、Ruby on Rail等豐富,但也有Wt(webtoolkit.eu),CppCMS等框架可供選擇。如果C++玩了幾十年,爐火純青,使用C++和各種庫可能比上手一個新的語言生態更高效。也可以僅使用C++寫一個模塊通過Node.js調用。總之,在Web後端上C/C++相對其它語言並沒什麼劣勢,只是其它語言的學習成本有時低一些罷了。從前端來看,由於瀏覽器使用JavaScript作為腳本語言,C/C++無法直接在瀏覽器里運行。並且,經過20多年的積攢,JS已經形成了一個完整的生態環境和開源社區。各種JS框架給苦逼的碼農們省下了不少頭發和把妹撩漢的時間,如果有對象的話
先別急著懟我,等我說完這段再懟。今年Web Assembly已經全面落戶最新的Chrome、Firefox、Edge、Safari等主流瀏覽器。可以將C/C++源碼編譯成wasm二進制文件直接在瀏覽器里高速運行(使用Emscripten編譯更加便捷)。對很多前端應用來說,使用C/C++加速可能並沒有必要。但是如果想要在前端產品中加入機器視覺,自然語言處理,機器學習等模塊,WebAssembly將成為一個極好的選擇。
十年前,各大瀏覽器優化加速JS引擎促進了JS前端直到全棧開發的發展。相信Web Assembly將強大的C/C++性能和幾十年歷史積淀的生態帶入Web,會在之後的幾年裡掀起又一輪Web應用的創新浪潮

⑹ Dev-C++的歷史發展

C++是從C語言中發展而來的。C語言是1972年由美國貝爾實驗室(AT&TBell)的D.M.Ritchie研製成功的。它不是為了初學者設計的,而是為計算機專業人員設計的。最初它是作為寫UNIX操作系統的一種工具,在貝爾實驗室內部使用。後來C語言不斷改進,人們發現它功能豐富、表達能力強、使用靈活方便、應用面廣、目標程序效率高、可移植性好,既具有高級語言的優點,又具有低級語言的許多優點,特別適合於寫系統軟體,因此C語言從實驗室走向美國,從美國走向世界。到20世紀70年代,它已風靡全世界。無論是在中國還是在外國,C語言都成為了計算機開發人員的基本功。
但是隨著軟體規模的增大,用C語言編寫程序漸漸顯得有些吃力了。C語言是結構化和模塊化的語言,它是面向過程的。在處理較小規模的程序時,程序員用C語言還是比較得心應手。但是當問題比較復雜、程序的規模比較大時,結構化程序的設計方法就顯出它的不足。
為了解決軟體設計的危機,在20世紀80年代,人們提出了面向對象的程序設計(object oriented programming,OOP),需要設計出能支持面向對象的程序設計方法的新的語言。在實踐中,人們發現由於C語言是如此的深入人心,使用如此廣泛,面對程序設計方法的革命,最好的辦法不是另外發明一種語言去代替它,而是在它原有的基礎上加以發展。在這種形式下,C++應運而生。C++是由貝爾實驗室(AT&TBell)的Bjarne Stroustrup博士及其同事於20世紀80年代初在C語言的基礎上開發成功的。
AT&TBell發布的第一個Dev-C++編譯系統實際上是一個預編譯器(前端編譯器),真正的Dev-C++程序是在1988年誕生的。
C++中提供豐富的STL模板庫,不僅適合演算法競賽,同樣適合軟體開發。

⑺ 編譯器的發展史

編譯器
編譯器,是將便於人編寫,閱讀,維護的高級計算機語言翻譯為計算機能識別,運行的低級機器語言的程序。編譯器將源程序(Source program)作為輸入,翻譯產生使用目標語言(Target language)的等價程序。源程序一般為高級語言(High-level language),如Pascal,C++等,而目標語言則是匯編語言或目標機器的目標代碼(Object code),有時也稱作機器代碼(Machine code)。

一個現代編譯器的主要工作流程如下:

源程序(source code)→預處理器(preprocessor)→編譯器(compiler)→匯編程序(assembler)→目標程序(object code)→連接器(鏈接器,Linker)→可執行程序(executables)
目錄 [隱藏]
1 工作原理
2 編譯器種類
3 預處理器(preprocessor)
4 編譯器前端(frontend)
5 編譯器後端(backend)
6 編譯語言與解釋語言對比
7 歷史
8 參見

工作原理
翻譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器言)。然而,也存在從低級語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。

典型的編譯器輸出是由包含入口點的名字和地址以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的可執行程序。

編譯器種類
編譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平台)相同的環境下運行的目標代碼,這種編譯器又叫做「本地」編譯器。另外,編譯器也可以生成用來在其它平台上運行的目標代碼,這種編譯器又叫做交叉編譯器。交叉編譯器在生成新的硬體平台時非常有用。「源碼到源碼編譯器」是指用一種高級語言作為輸入,輸出也是高級語言的編譯器。例如: 自動並行化編譯器經常採用一種高級語言作為輸入,轉換其中的代碼,並用並行代碼注釋對它進行注釋(如OpenMP)或者用語言構造進行注釋(如FORTRAN的DOALL指令)。

預處理器(preprocessor)
作用是通過代入預定義等程序段將源程序補充完整。

編譯器前端(frontend)
前端主要負責解析(parse)輸入的源程序,由詞法分析器和語法分析器協同工作。詞法分析器負責把源程序中的『單詞』(Token)找出來,語法分析器把這些分散的單詞按預先定義好的語法組裝成有意義的表達式,語句 ,函數等等。 例如「a = b + c;」前端詞法分析器看到的是「a, =, b , +, c;」,語法分析器按定義的語法,先把他們組裝成表達式「b + c」,再組裝成「a = b + c」的語句。 前端還負責語義(semantic checking)的檢查,例如檢測參與運算的變數是否是同一類型的,簡單的錯誤處理。最終的結果常常是一個抽象的語法樹(abstract syntax tree,或 AST),這樣後端可以在此基礎上進一步優化,處理。

編譯器後端(backend)
編譯器後端主要負責分析,優化中間代碼(Intermediate representation)以及生成機器代碼(Code Generation)。

一般說來所有的編譯器分析,優化,變型都可以分成兩大類: 函數內(intraproceral)還是函數之間(interproceral)進行。很明顯,函數間的分析,優化更准確,但需要更長的時間來完成。

編譯器分析(compiler analysis)的對象是前端生成並傳遞過來的中間代碼,現代的優化型編譯器(optimizing compiler)常常用好幾種層次的中間代碼來表示程序,高層的中間代碼(high level IR)接近輸入的源程序的格式,與輸入語言相關(language dependent),包含更多的全局性的信息,和源程序的結構;中層的中間代碼(middle level IR)與輸入語言無關,低層的中間代碼(Low level IR)與機器語言類似。 不同的分析,優化發生在最適合的那一層中間代碼上。

常見的編譯分析有函數調用樹(call tree),控制流程圖(Control flow graph),以及在此基礎上的 變數定義-使用,使用-定義鏈(define-use/use-define or u-d/d-u chain),變數別名分析(alias analysis),指針分析(pointer analysis),數據依賴分析(data dependence analysis)等等。

上述的程序分析結果是編譯器優化(compiler optimization)和程序變形(compiler transformation)的前提條件。常見的優化和變新有:函數內嵌(inlining),無用代碼刪除(Dead code elimination),標准化循環結構(loop normalization),循環體展開(loop unrolling),循環體合並,分裂(loop fusion,loop fission),數組填充(array padding),等等。 優化和變形的目的是減少代碼的長度,提高內存(memory),緩存(cache)的使用率,減少讀寫磁碟,訪問網路數據的頻率。更高級的優化甚至可以把序列化的代碼(serial code)變成並行運算,多線程的代碼(parallelized,multi-threaded code)。

機器代碼的生成是優化變型後的中間代碼轉換成機器指令的過程。現代編譯器主要採用生成匯編代碼(assembly code)的策略,而不直接生成二進制的目標代碼(binary object code)。即使在代碼生成階段,高級編譯器仍然要做很多分析,優化,變形的工作。例如如何分配寄存器(register allocatioin),如何選擇合適的機器指令(instruction selection),如何合並幾句代碼成一句等等。

編譯語言與解釋語言對比
許多人將高級程序語言分為兩類: 編譯型語言 和 解釋型語言 。然而,實際上,這些語言中的大多數既可用編譯型實現也可用解釋型實現,分類實際上反映的是那種語言常見的實現方式。(但是,某些解釋型語言,很難用編譯型實現。比如那些允許 在線代碼更改 的解釋型語言。)

歷史
上世紀50年代,IBM的John Backus帶領一個研究小組對FORTRAN語言及其編譯器進行開發。但由於當時人們對編譯理論了解不多,開發工作變得既復雜又艱苦。與此同時,Noam Chomsky開始了他對自然語言結構的研究。他的發現最終使得編譯器的結構異常簡單,甚至還帶有了一些自動化。Chomsky的研究導致了根據語言文法的難易程度以及識別它們所需要的演算法來對語言分類。正如現在所稱的Chomsky架構(Chomsky Hierarchy),它包括了文法的四個層次:0型文法、1型文法、2型文法和3型文法,且其中的每一個都是其前者的特殊情況。2型文法(或上下文無關文法)被證明是程序設計語言中最有用的,而且今天它已代表著程序設計語言結構的標准方式。分析問題(parsing problem,用於上下文無關文法識別的有效演算法)的研究是在60年代和70年代,它相當完善的解決了這個問題。現在它已是編譯原理中的一個標准部分。

有限狀態自動機(Finite Automaton)和正則表達式(Regular Expression)同上下文無關文法緊密相關,它們與Chomsky的3型文法相對應。對它們的研究與Chomsky的研究幾乎同時開始,並且引出了表示程序設計語言的單詞的符號方式。

人們接著又深化了生成有效目標代碼的方法,這就是最初的編譯器,它們被一直使用至今。人們通常將其稱為優化技術(Optimization Technique),但因其從未真正地得到過被優化了的目標代碼而僅僅改進了它的有效性,因此實際上應稱作代碼改進技術(Code Improvement Technique)。

當分析問題變得好懂起來時,人們就在開發程序上花費了很大的功夫來研究這一部分的編譯器自動構造。這些程序最初被稱為編譯器的編譯器(Compiler-compiler),但更確切地應稱為分析程序生成器(Parser Generator),這是因為它們僅僅能夠自動處理編譯的一部分。這些程序中最著名的是Yacc(Yet Another Compiler-compiler),它是由Steve Johnson在1975年為Unix系統編寫的。類似的,有限狀態自動機的研究也發展了一種稱為掃描程序生成器(Scanner Generator)的工具,Lex(與Yacc同時,由Mike Lesk為Unix系統開發)是這其中的佼佼者。

在70年代後期和80年代早期,大量的項目都貫注於編譯器其它部分的生成自動化,這其中就包括了代碼生成。這些嘗試並未取得多少成功,這大概是因為操作太復雜而人們又對其不甚了解。

編譯器設計最近的發展包括:首先,編譯器包括了更加復雜演算法的應用程序它用於推斷或簡化程序中的信息;這又與更為復雜的程序設計語言的發展結合在一起。其中典型的有用於函數語言編譯的Hindley-Milner類型檢查的統一演算法。其次,編譯器已越來越成為基於窗口的交互開發環境(Interactive Development Environment,IDE)的一部分,它包括了編輯器、連接程序、調試程序以及項目管理程序。這樣的IDE標准並沒有多少,但是對標準的窗口環境進行開發已成為方向。另一方面,盡管近年來在編譯原理領域進行了大量的研究,但是基本的編譯器設計原理在近20年中都沒有多大的改變,它現在正迅速地成為計算機科學課程中的中心環節。

在九十年代,作為GNU項目或其它開放源代碼項目的一部分,許多免費編譯器和編譯器開發工具被開發出來。這些工具可用來編譯所有的計算機程序語言。它們中的一些項目被認為是高質量的,而且對現代編譯理論感性趣的人可以很容易的得到它們的免費源代碼。

大約在1999年,SGI公布了他們的一個工業化的並行化優化編譯器Pro64的源代碼,後被全世界多個編譯器研究小組用來做研究平台,並命名為Open64。Open64的設計結構好,分析優化全面,是編譯器高級研究的理想平台。

編譯器是一種特殊的程序,它可以把以特定編程語言寫成的程序變為機器可以運行的機器碼。我們把一個程序寫好,這時我們利用的環境是文本編輯器。這時我程序把程序稱為源程序。在此以後程序員可以運行相應的編譯器,通過指定需要編譯的文件的名稱就可以把相應的源文件(通過一個復雜的過程)轉化為機器碼了。

編譯器工作方法
首先編譯器進行語法分析,也就是要把那些字元串分離出來。然後進行語義分析,就是把各個由語法分析分析出的語法單元的意義搞清楚。最後生成的是目標文件,我們也稱為obj文件。再經過鏈接器的鏈接就可以生成最後的可執行代碼了。有些時候我們需要把多個文件產生的目標文件進行鏈接,產生最後的代碼。我們把一過程稱為交叉鏈接。

⑻ 開篇:XLA是什麼

XLA (Accelerated Linear Algebra)是專用於機器學習的編譯器,機器學習的運算中99%都是向量乘以矩陣、矩陣乘以矩陣的計算,XLA是專門用來優化這些計算的。

舉個例子,運行在GPU上的 model_fn 函數會順序調用 multiply 、 add 和 rece_sum 這三個op,而且 multiply ,也就是 y * z 的計算結果會先從GPU拷貝回host,再拷貝到device作為 add 的input,同樣的,add的計算結果也會以相同的方式傳遞給下一個op。

顯然,對於整個函數來說,將中間變數在host和device間來回倒騰是沒有意義的。因此,如果把函數看作一個op,那在計算中產生的中間結果就不必返回到host,少了數據傳輸的時間開銷,就可以大幅提升運算效率。

這種將多個op融合成一個op的方法就稱為 fuse ,當前fuse的技術路線有:

XLA的優化當然不只是fuse,還有對計算圖的優化,包括刪除無效指令、減少內存佔用、替換復雜指令等優化。下圖是官方提供的性能報告,經XLA優化過後,Tensorflow BERT MLPerf的訓練性能提升了~7倍。除了Tensorflow外,XLA還支持 JAX 、 Julia 、 PyTorch 和 Nx 等前端。

jit 是指在首次運行時將函數編譯成二進製程序,後續再調用該函數時直接運行先前編譯好的程序而非python code。 @tf.funciton 修飾的函數(包括它的子函數)會做 jit 。除非signature發生了變化,也就是input的shape或dtype和編譯時不同,否則 get_MSE 是不需要重復編譯的。

@tf.function 將函數內的ops替換成一組( XlaCompile , XlaRun ) ops,在運行時前者負責編譯,並將編譯結果-- executable 保存到cache,後者負責運行executable。如果cache里已經有編譯好的程序就不需要編譯了,例如 get_MSE(tf.constant(3.0), tf.constant(4.0)) 。

XLA編譯器支持的語言(IR)是HLO(High Level Operations),顧名思義這些語言是由一個個op組成,因此,我們在編譯前需要先從python code中提取出所有ops,再將它們轉換成HLO。

JAX通過tracing的方式,從 @jax.jit 修飾的函數中提取ops,這些ops通過 jaxpr 來表示。然後再通過XLA client提供的API為ops生成相應的HLO。PyTorch/XLA也是採用類似的方法來生成HLO。

Tensorflow的 tf2xla 為每個 Op 創建了一個同名的 XlaOp 用於生成HLO, XlaOp 派生於 Op ,使用相同的注冊機制,因此,只要把要編譯的子圖根據拓撲排序運行一遍就能生成它的HLO。

HLO先經過一系列 pass 優化後再將HLO lowering成ISA,最後將編譯好的二進制封裝到 executable 。

除了二進製程序,它還包含運行該程序所需要的infos和options。調用 executable.run() 就可以執行計算圖。

⑼ 目前主流的C語言編譯軟體是什麼

C語言相比其他很多新興的、復雜的語言,語法還是簡單一些,較好實現的。

所以在C語言幾十年的發展中出現了各式各樣的編譯器,還有一些容易被誤解為編譯器的IDE。


這里列舉幾個主流的:

  1. GCC

    毫無疑問,GCC幾乎是unix及linux系統中最通用的編譯器套件,幾乎所有的linux發行版都預裝了GCC作為C語言的默認編譯器。除了對C語言的支持,GCC還支持C++、Objective-C等多種語言。GCC早在1987就由Richard Stallman作為GNU計劃的一部分發布。

  2. Clang

    Clang是近幾年新興的C/C++以及Objective-C的編譯器,Apple是其主要投資者,其最初的開發者已加盟Apple。雖說是新興,但其對C/C++標準的支持不亞於GCC等老牌編譯器,並且外部介面和GCC完全兼容,並且因其模塊化、錯誤提示完善等優點已經越來越受到重視。一些如FreeBSD等項目已將clang作為默認編譯器。

    其實Clang並不是一個完整的編譯器,而是作為同一批開發者開發的另一個備受關注的虛擬機(類似於JVM)的llvm的一個前端開發,只是負責將C語言源碼編譯為llvm IR的中間語言,再由llvm編譯為目標代碼,這樣做可以讓其可移植性更好。

  3. Microsoft Visual C++

    作為擁有可視化集成編程系統的編譯器,VC被很多使用Windows作為開發環境的初學者使用。詳見網路的介紹

    http://ke..com/view/2070966.htm?fromtitle=vc&fromid=7792954&type=syn#viewPageContent


⑽ 程序猿專用十大在線編譯器(IDE)整理

1. CodeSandbox(基於 React 的在線代碼沙盒平台) 我常用的

① 主流的腳手架都支持,比如在線create-react-app,vue-cli等(在線 fork 修改),支持 github 登錄(項目導入),也支持 cli 上傳例子,例子可以在線訪問和下載,當然也支持內嵌到其他博客等網頁中。

② 地址:https://codesandbox.io/

③ 圖示

2. CodePen(前端代碼編輯運行的網站)

① CodePen 是一個完全免費的前端代碼託管服務,主要功能有:

② 地址:https://codepen.io/

③ 圖示

3. JSRUN(支持手機端的在線JS編輯器)

① jsrun是一款支持手機端的在線JS編輯器, HTML/CSS/Javascript在線代碼運行工具,js代碼在線測試調試,是runjs的升級版支持vue.js/angular.js的在線編輯器

② 地址:http://jsrun.net/

③ 圖示

4. jsFiddle(前端代碼編輯運行的網站)

① jsFiddle 是一個Web開發人員的練習場,可在線編輯和測試 HTML、CSS、JavaScript代碼片段。在 jsFiddle 編輯的代碼,可以保存,也可分享給其他人,還可嵌入到其他網頁

② 地址:https://jsfiddle.net/

③ 圖示

5. Ideone(C和C++的在線編譯和調試工具,支持其他的60種語言) 我常用

① Ideone是C和C++的在線編譯和調試工具,支持其他的60種語言。這個工具提供許多強大的功能,允許程序員快速高效的編譯源代碼

② 地址:https://www.ideone.com/

③ 圖示

6. Codechef(C,C ++和Java的在線編譯工具)

① 它支持C,C ++和Java,非常接近真正的桌面IDE。這是超快速和易於使用。適合於課堂和作業的學生,練習面試問題。

② 地址:https://www.codechef.com/ide

③ 圖示

7. JDoodle (C,C ++和Java的在線IDE)

① 支持協作代碼。它只是從一個簡單的文本區域開始,您可以粘貼代碼,然後單擊運行。您可以更改命令行參數並在運行該程序之前設置stdin。最適合新的在線編輯器不支持的許多舊語言。

② 地址:https://www.codechef.com/ide

③ 圖示

8. OnlineGDB (在線C,C ++,Java,PHP編譯器) 我常用

① 它支持C,C ++,PHP和Java編譯器。OnlineGDB的獨特功能是,您可以逐步調試您的代碼。一旦代碼被寫入,它可以很容易地格式化,使其看起來不錯。

② 地址:https://www.onlinegdb.com/

③ 圖示

9. GCC資源管理器

① GCC編譯器資源管理器是一個互動式在線編譯器,它顯示編譯後的C++、RISE、GO(以及更多)代碼的匯編輸出。

② 地址:https://gcc.godbolt.org/

③ 圖示

10. plnkr edit在線編輯器

① js的在線編輯器。

② 地址:http://plnkr.co/edit/

③ 圖示

熱點內容
天龍八部自動挖礦腳本怎麼寫 發布:2025-07-15 07:42:01 瀏覽:645
本地編譯器怎麼運行 發布:2025-07-15 07:42:00 瀏覽:993
加密狗會壞嗎 發布:2025-07-15 07:38:32 瀏覽:562
jdbc讀取資料庫 發布:2025-07-15 07:38:23 瀏覽:319
華為手機如何設置隱私密碼鎖 發布:2025-07-15 07:36:09 瀏覽:979
java怎麼導入jar 發布:2025-07-15 07:22:02 瀏覽:394
雷蛇鍵盤配置文件怎麼設置完整視頻 發布:2025-07-15 07:20:31 瀏覽:409
存儲器1b 發布:2025-07-15 07:09:03 瀏覽:975
雷電共享存儲 發布:2025-07-15 07:09:02 瀏覽:59
威綸通反編譯後字體變大了 發布:2025-07-15 07:08:56 瀏覽:713