導航:首頁 > 源碼編譯 > 起源編譯器適用第二款應用

起源編譯器適用第二款應用

發布時間:2023-03-24 04:45:10

A. 起源引擎的引擎沿革

Troika游戲公司最早宣布他們的游戲《吸血鬼:避世血族》將使用起源引擎,它們也是第一個獲得使用許可的公司。Valve之後宣布Arkane Studios(製作第一人稱角色扮演游戲《魔法門之黑暗彌賽亞》的公司)和Smiling Gator Proctions也獲得了使用許可。
Ritual Entertainment在2005年7月4日宣布他們的新游戲獲得了使用起源引擎和Steam系統的許可。這證明,起源引擎的效果再次讓大家接受。
引擎原理 【著色器】
最高性能的著色器為基礎的渲染提供給游戲開發商可以迅速簡單的開發,哪怕是最復雜的場景。起源渲染。多核心處理和SIMD,以及通過DirectX的最新圖形處理器的功能,先進的處理器技術,使自己的夢想世界成真。
渲染庫。使用Valve的資料庫或用自己的演算法擴大現有的著色。現有的技術包括所有從非
實感渲染(NPR)即《軍團要塞2(即卡通樣式游戲)》到《半條命2》集都在同一個引擎超現實的復雜燈光效果。
LOD模型。目前是世界上LOD模型的最高水平(所有幾何判定都是引擎自主完成的。)
亮度(阿爾法)覆蓋。啟用高超的動態渲染和抗鋸齒α測試,如樹葉,柵欄和花格。
無限解析度掩蔽。使用距離式編碼亮度以無限解析度的紋理掩蔽,阿爾法測定在不同狀況下不同。
【動態照明和陰影】
輻射照明。世界的任意幾何頂點光藏匿與輻射照明。用編碼信息製作真實的光照效果,使照明與自然相結合的凹凸地圖,更精確的照明表現細節的地方,包括自我造成的陰影。輻射照明是使用分布計算求解的輻射度(vrad),他可以快速的實現光影的效果。
高動態范圍(HDR)照明。所有照明燈,包括地圖數據,地圖和現場環境的動態燈光均由HDR計算。高動態范圍照明支持在DirectX 9級別的硬體上,起源依然支持,同時還可以打開抗鋸齒和景深。
輻射傳輸/間接照明。動態對象和世界中的所有反射光合並在一起進行計算。 更加真實的體現人物的所有動態反光效果。
高解析動態陰影。所有與陰影投射物體或動態物體附近的光源對其照射的角度、距離、明度和光源亮度排列順序都會進行計算,達到真實的光照陰影效果。
Rim照明
突出模型的邊緣照射效果,非常震撼,有些類似於閃電,《求生之路2》和《軍團要塞2》均有體現。
先進材料繪制。擁有彌漫、鏡面、細節、發光、閃光和其他特殊效果。
【影響】
范圍作用。包括顆粒,物體,煙霧體積,火花,血液和環境影響,像霧一樣的雨
粒子影響。起源的先進的粒子系統可以發出魔法或火災的逼真模型,爆炸,雪,等等。多核圖形
優化改進粒子渲染性能
粒子編輯。游戲編輯和創建粒子系統和其完全互動的能力,系統預覽可立即看到剛才的編輯。
軟粒配雹灶子。設定粒子的軟硬度來以此模擬物體的反彈、跌落受傷程度,並且這一系統無需耗費過多的資源
運動模糊。運動時攝像機會產生有規律的模糊,完全像人的眼睛。
水。可以生成逼真生動的效果和菲涅爾水面反射和折射的效果。
【材料】
材培扮料系統。起源定義,指定教材套的對象是怎樣製成的對象為該使用和紋理。指定的材料如何將一個對象斷裂破碎時,它會聽起來像是發生時或跨越另一面拖,哪些該對象的質量和浮力的。該系統是遠遠超過其他質地的只基於系統的靈活性。自陰影凹凸映射創建預先計算的輻射度燈光柔和陰影以及環境與動態和閉塞。來源呈現自陰影對當前和老一代圖形硬體凹凸映射。
褶皺貼圖(*Wrinkle Maps)。特別有用的拉伸面部皺紋和衣服,更多的紋理貼圖,並在模型的混合壓縮到提供動態的表面細節的地方。
細節貼圖。結合高頻低頻質感與細節,以節省顯存,同時保持明顯的質地密度。
多功能多紋理混合。定義邊緣融合變肆虧化鋸齒,使用多種不同的紋理相結合的模式,校正表面顏色。
動態色彩校正。互動式編輯偏色和對比度的場景,以配合設計者想要的藝術風格。 高兼容,與流行的圖形和3D建模軟體兼容可以創作出具有高度風格化的人物、武器
、車輛-起源合並工具組。一套強大的工具幫助高效地編輯、拓展動畫,並定義的文字和對象范圍內的廣泛的物理交互作用。
數碼肌肉效果。模擬肌肉組織的項目性質的情緒,言語和身體語言。 球型的眼睛真實地反映情況和家。集中對象上,而不是一直朝某個方向。
獨立語言系統(*Language independent speech)。特徵准確和自然的唇在任何語言上同步。
改善人類皮膚著色。皮膚呈現包括自然的人體皮膚著色,包括查看相關的菲涅爾現實影響。
模型及材料編譯器。集成用Studiomdl和Vtex編譯模型和材料工具。
模型查看器。在線框預覽模式中查看陰影、紋理或視圖模式。設立擊中范圍(HitBox),播放的動畫,並微調物理限制。 骨骼動畫系統。復雜的運動模型與關節是使用Valve的專有骨骼動畫系統。
臉部動畫系統。Valve的專有面部動畫系統和運動完美結合成一個范圍廣泛的語音驅動的自然面部表情和感情。40多個不同的臉部「肌肉」,可以讓玩家體會到游戲中人物的充沛的感情。
程序動畫工具。調整布娃娃物理、骨骼動畫追隨、場景物理和自定義的程序控制器
動畫融合。姿態的無縫融合創造連續運動或製作添加任何命令的情況。分層動畫的融合,可合成成多種有趣的動畫 VALVE編輯器,起源的地圖製作工具,是一個直觀的「所見即所得的」建築設計和環境建設水準(幾何,紋理,照明)。配售的腳本模型、實體和NPC,以及編譯和運行游戲的水準。包括了VMPI工具,大大降低了地圖建立時由多台計算機之間分配的編譯時間。
曲面位移(*Displacement Surfaces)。可自由創建各種造型的自然山丘、山谷、溝渠、坡地,利用隧道位移幾何刷表面。用刷子和頂點工具變換和剪輯位移表面。
實體刷工具(*Brush Entities)。Valve獨創的屬性。用刷子定義對象如何與世界全面的交互,包括障礙物、門、觸發器、地區入口、背景音等等。
環境映射(*Skyboxes.)。立邊體和環境映射(skyboxing)擴展了視野,增加了對遙遠的物體的視差。
照明預覽。輕松地查看一個內部光的水平影響源。 起源有高度可擴展的網路功能的物理系統,重視處理器和帶寬效率。靈敏構建的物理反應,世界裡人物互動與身體人工智慧對象的模擬,以及聲音和圖像都遵循從物理學。起源的物理特性可以控制最高水平的設計
機械。構建與運作機制的相同的機械,可以有齒輪、皮帶和滑輪
車輛。任何情況下,在多人游戲中,所有玩家可以一起乘坐一輛汽車,每一個現實的汽車功能根據表面材料不同而不同像是彈簧懸架和滑橇表面。獨立可調的參數包括馬力、傳動裝置、最大速度、轉彎速度、輪胎材料、輪胎摩擦、彈簧張力/抑制等等。依靠完全真實的數據來模擬最真實的駕駛體驗。
對象變形(*Deformable Objects)。用娃娃物理與預定義的動畫,以物理為基礎的動畫模擬靈活的頭發、混紡布衣服。比如繩索和電纜可以按風或運動水平動態搖擺。
互動約束系統(*Constraint System Manager)。約束骨骼的所有效果,設定所有的情況並自由運算,其搭配幾率可謂無限。反轉動力學(*Inverse Kinematics)確保人物的肢體對環境地形有正確的反應,如周圍障礙物移動的不平衡及調整。 起源引擎的標志在於玩家之間的隨機交流和非玩家角色的互動。人工智慧系統可以讓NPC跟隨玩家,並根據情況選擇加入戰斗。人工智慧可以移動、飛行、跳躍、蹲、爬樓梯進入洞穴或地下。
調諧系統。先進的導航系統擁有本地路徑搜索迴避功能,以幫助周圍的NPC進行導航;比如路線調諧統,和充滿活力的關卡設計師設計的道路相連接。在該系統的控制下,他們可以提前知道類似於死路,並自動進行道路的計算和修正前進路線。人工智慧可以模擬人類的感官,視覺、聽覺,甚至用味道來跟蹤和識別物體。調諧系統可以用於幾乎任何事物的判斷。
互動人工智慧。設置玩家或NPC的關系,單個NPC,大量NPC,單個玩家(或更多)用實體進行危險度判斷,以此確立對其的感情,如仇恨、喜歡或恐懼。
戰斗人工智慧。人工智慧的小隊可以分享敵人數據或共同操作物品。 一個隊員前去突擊,其他的火力掩護。對目標的感知,感知其他人的移動或更換子彈。
I / O系統。靈活的I / O系統帶來的前所未有的代碼設計。 完全應用於C++中,起源引擎的架構考慮到拓展性、靈活性和性能。Valve用起源引擎的代碼來建立屢獲殊榮的游戲,無需單獨開發。這使您的開發人員把時間花在實現有趣的游戲設計,而不是從頭開始。
多平台兼容(*Multi-platform)。兼容PC和Xbox360平台,從2005開始年代碼庫統一使用Microsof Visual Studio。
多核處理(*Multi-core)。起源引擎游戲利用PC和Xbox 360的多核心處理器均能夠提供高性能的游戲體驗。
代碼克隆(*Code Reuse)。容易和迅速建立新的游戲路線、人工智慧行為、游戲對象,更以此作為Valve出發點的測試的基礎程式。
完全控制(*Complete Control)。被授權人可以獲得起源引擎代碼庫中的任意部分。
效率計算。以Valve發展的產品優勢和自身優化。
監控(*Profiling)。利用Valve的現有的有用的工具進行視頻監控,網路、游戲整體的業績。
演示。Valve的GUI模仿Windows的控制界面,但其效果和起源引擎代碼用途一致。 起源引擎包括一個功能強大的數字音頻技術套件,創造游戲世界內充滿活力的音樂。無縫地混合音效、對話,並加以配合襯託身臨其境的超越現實的音樂效果。
螺紋聲音引擎(*Threaded Sound Engine)。可以單獨在多核系統的核心運行混音處理。
內存管理。可以非同步載入聲音、流媒體,緩存到一個固定的文件夾或預載文件。
環繞聲。支持立體聲、耳機、四聲道和5.1甚至是7.1環繞聲混音。
三維空間化。計算閉塞和阻塞的影響,依照距離和環境,使用自定義的三維空間化混響計演算法。
數字信號處理器(*DSP)。一個可預設堆疊的用途廣泛的DSP濾波器,包括混響、
合聲、ADSR、低頻振盪(低頻振盪器),低通道、高通道、全通道濾波器。自定義或預設的DSP效果可以觸發游戲中基礎的聲音環境。
音頻格式壓縮。起源支持無損預讀取ADPCM、MP3播放*(*需要Miles音響系統)與XMA。這樣可以不用創立音效文件,直接使用外來音效文件。
先進的預處理效果。聲音設計師可以定製多普勒效應,頻移、距離和其他多聲道效果。16位44kHz,支持立體聲和波形文件的所有功能。
波形文件實時拼接。一個簡單的腳本系統可以讓音頻設計人員排出恰當的聲音序列,利用波形文件製造宏大的聲音場景。
整體組合控制(*Overall Mix Control)。音頻設計師可以使用建立的幾個整體混合腳本以便游戲可以動態切換混音。以便突出對話場景的設置等其他動作。
聲音腳本環境系統。VAudio設計者可以自定義腳本環境的事件隨機、循環,以及基於玩家的空間位置觸發的DSP效果。這也可以修改游戲邏輯的動態效果。
基礎材料影響(*Material-based Effects)。音頻設計師可以定義腳本來確立材料的具體影響,DSP參數可以設定物體摩擦、腳步聲以及空間聲音自動反射效果(*EXA)。 起源的多人游戲全世界都有百萬家在同時測試,每月全世界多人游戲超過90億分鍾。 起源多人連接提供方便的伺服器查看和朋友即時信息。可以預先查看所有在線伺服器的流量和延遲,以及好友的所有動態,減少不必要的連接方面的麻煩。
伺服器瀏覽器。顯示所有活動的游戲伺服器,並允許家選擇參加哪一個。玩家可以過濾和排序伺服器列表,以加快顯示和選擇伺服器。
好友即時信息。允許玩家之間進行游戲,添加好友和與現在的好友進行游戲。好友間共享游戲信息。沒有什麼伺服器可玩時可以選擇和朋友聊天,管理系統讓列表不會那麼混亂。 起源提供了一個次世代的理想的游戲機發展環境平台,包括主流的Xbox 360。
資源轉換(*Asset Conversion)。自定義工具,轉換PC資源(地圖,模型,貼圖)到XBOX360兼容格式。
使用特殊裝載機(*Xbox 360 Specific Loaders)。專有工具編寫游戲數據轉換成
定製格式,下載速度快、讀取時間短。
跨平台游戲。多重網路的設計,讓PC機和360平台可同台競技,此外還可以簡化平台的開發和測試環境中的問題。
集成Xbox LIVE代碼。有豐富的兼容、界面和日誌。 引擎的第一個特點是模塊化,帶來可極高度的擴展性和簡易的開發難度,可以輕松的製作各種類型的游戲。第二個特點是開發者優化待遇(得到即可用)。自2004年以來,起源引擎開始面向第三方開發商。這是一種新的開發機制,開發商只需付一次授權費用,就可以獲得起源引擎的最新版本及其後的所有更新,而不必二次付費。第三,系統還專為第一人稱和第三人稱戰斗游戲優化,不過也對任何的視角、任何的游戲類型提供支持。第四,提供了對人物動畫和AI的高級支持,這些AI擁有業界最先進的人工智慧,帶來令人喜愛、刁鑽又有趣的盟友和敵人。第五,擁有專利的渲染系統。可以創造美麗的世界、精密的物理和強大的音效,讓玩家沉浸其中。這使開發人員不用在糾結於編程方面的問題,專注於內容的創新,「起源」讓游戲業開啟了全新游戲風格創作的大門。
聯機性能
「起源」的多人游戲平台——Steam支持世界上最大規模的聯機游戲,包括《勝利之日:起源》、《反恐精英:起源》和《軍團要塞2》,也是世界上最大的網上游戲文化聚集地之一。「起源引擎」所製作的游戲原生支持強大的網路連接和多人游戲功能,包括支持高達64名玩家區域網和互聯網游戲。引擎已集成伺服器瀏覽器、語音通話和文字信息發送,開發者無需二次開發。

B. 編譯器的發展史

編譯器
編譯器,是將便於人編寫,閱讀,維護的高級計算機語言翻譯為計算機能識別,運行的低級機器語言的程序。編譯器將源程序(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文件。再經過鏈接器的鏈接就可以生成最後的可執行代碼了。有些時候我們需要把多個文件產生的目標文件進行鏈接,產生最後的代碼。我們把一過程稱為交叉鏈接。

C. 請問,編譯軟體最早是由誰發明出來的

Grave of Grace

後記

Grace Hopper是個非常amazing的人 (常被稱為Amazing Grace),崇拜她的人相當多。雖然她的事跡很多,但是還有很多有類似事跡的人並沒有像她這樣受到眾人的崇拜。由其中一點我們可以看出來:從1947年開始 (二戰結束後第二年),她獲得了第一個榮譽博士學位 (賓州大學),從那以後,她先後被40多所大學授予榮譽博士學位,其中包括芝加哥大學、華盛頓大學、馬里蘭大學等知名學府。各種婦女社會團體和學術組織都曾授予Grace各種稱號和獎勵。1991年,布希總統在白宮授予她的「美國國家技術獎」 (National Medal of Technology) 是其中的最高獎項,她也是至今惟一獲此殊榮的美國女性。她的名言有很多,她自己最喜歡的,也是她最喜歡對所謂的「年輕人」說的 (在她年老時,她所謂的年輕人就是「年齡不到我的一半的人就叫做年輕人」),這句話是:

「A ship in port is safe, but that is not what ships are built for.」

語錄

下面Grace的語錄中有幾句比較有意思的話。

D. linux系統和windowsXP,Visita有什麼不同啊

1.Linux的操作比較復雜,windows的比較簡單.
Linux速度比較快,安全性比windows好
但是有很多軟體只能在windows里運行
與Linux兼容的軟體正在開發中.
Linux適用在網路方面.

2. 什麼是Linux?
簡單地說, Linux是一套免費使用和自由傳播的類 Unix操作系統,它主要用於基

於 Intel x86系列 CPU的計算機上。這個系統是由世界各地的成千上萬的程序員

設計和實現的。其目的是建立不受任何商品化軟體的版權制約的、全世界都能自

由使用的 Unix兼容產品。 Linux的出現,最早開始於一位名叫 Linus Torvalds

的計算機業余愛好者,當時他是芬蘭赫爾辛基大學的學生。他的目的是想設計一

個代替 Minix(是由一位名叫 Andrew Tannebaum的計算機教授編寫的一個操作系

統示教程序)的操作系統,這個操作系統可用於 386、 486或奔騰處理器的個人

計算機上,並且具有 Unix操作系統的全部功能,因而開始了 Linux雛形的設計。

Linux以它的高效性和靈活性著稱。它能夠在 PC計算機上實現全部的 Unix特性,

具有多任務、多用戶的能力。 Linux是在 GNU公共許可許可權下免費獲得的,是一

個符合 POSIX標準的操作系統。 Linux操作系統軟體包不僅包括完整的 Linux操

作系統,而且還包括了文本編輯器、高級語言編譯器等應用軟體。它還包括帶有

多個窗口管理器的 X-Windows圖形用戶界面,如同我們使用 Windows NT一樣,允

許我們使用窗口、圖標和菜單對系統進行操作。
Linux與其他操作系統有什麼區別:
Linux可以與 MS-DOS、 OS/2、 Windows等其他操作系統共存於同一台機器上。它

們均為操作系統,具有一些共性,但是互相之間各有特色,有所區別。
目前運行在 PC機上的操作系統主要有雀掘Microsoft的 MS-DOS、 Windows、 Windows

NT、 IBM的 OS/2等。早期的 PC機用戶普遍使用 MS-DOS,因為這種操作系統對機

器的硬體配置要求不高,而隨著計算機硬體技術的飛速發展,硬體設備價格越來

越碧雹低,人們可以相對容易地提高計算機的硬體配置,於是開始使用

Windows、Windows NT等具有圖形界面的操作系統。 Linux是新近被人們所關注的

操作系統,它正在逐漸為 PC機的用戶所接受。那麼, Linux與其他操作系統的主

要區別是什麼呢?下面從兩個方面加以論述。
首先看一下Linux與 MS- DOS之間的區別。 在同一系統上運行 Linux和 MS-DOS

已很普遍,就發揮處理器功能來說, MS-DOS沒有完全實現 x86處理器的功悔歲帆能,而

Linux完全在處理器保護模式下運行,並且開發了處理器的所有特性。 Linux可以

直接訪問計算機內的所有可用內存,提供完整的 Unix介面。而 MS-DOS只支持部

分 Unix的介面。
就使用費用而言, Linux和 MS-DOS是兩種完全不同的實體。與其他商業操作系統

相比, MS-DOS價格比較便宜,而且在 PC機用戶中有很大的佔有率,任何其他 PC

機操作系統都很難達到 MS-DOS的普及程度,因為其他操作系統的費用對大多數

PC機用戶來說都是一個不小的負擔。 Linux是免費的,用戶可以從 internet上或

者其他途徑獲得它的版本,而且可以任意使用,不用考慮費用問題。 就操作系統

的功能來說, MS-DOS是單任務的操作系統,一旦用戶運行了一個 MS-DOS的應用

程序,它就獨佔了系統的資源,用戶不可能再同時運行其他應用程序。而 Linux

是多任務的操作系統,用戶可以同時運行多個應用程序。 再看一下 Linux與

OS/2、 Windows、 Windows NT之間的區別。
從發展的背景看, Linux與其他操作系統的區別是, Linux是從一個比較成熟的

操作系統發展而來的,而其他操作系統,如 Windows NT等,都是自成體系,無對

應的相依託的操作系統。這一區別使得 Linux的用戶能大大地從 Unix團體貢獻中

獲利。因為 Unix是世界上使用最普遍、發展最成熟的操作系統之一,它是七十年

代中期發展起來的微機和巨型機的多任務系統,雖然有時介面比較混亂,並缺少

相對集中的標准,但還是發展壯大成為了最廣泛使用的操作系統之一。無論是

Unix的作者還是 Unix的用戶,都認為只有 Unix才是一個真正的操作系統。

3. 首先你需要明白,Linux不是windows,它不是一個由一家商業公司維護的軟體


只有一個包裝。Linux是可以任意包裝自由配置的東西。任何一個人,一家公司
都可以按照自己的想法,比如加一點功能,加中文支持,作一個Linux出來。這些
Linux雖然核心部分都一樣,但是他們所帶的各種軟體,預設的配置都不一樣。區


是用一種Linux 發布 (不同的Linux我們叫做不同的發布)也許硬體很好配置,
各種軟體也好安裝,用另外一種也許速度快,再一種也許支持中文比較好。總之
沒有白吃的午餐,在windows下想當然的東西在linux下也許需要你熬夜才能得到


所以從一開始選擇distribution就必須非常小心,否則因為自己剛好隨某個雜志
得到一個Linux發布就以為所有的都一樣就開始安裝,等硬碟數據毀了,
或者網路哭天蹌地也配不出來的時候,就晚了。不是開玩笑,我知道windows下
安裝驅動程序就是滑鼠點幾下,可是在Linux下,為了驅動一個網卡,折騰一夜
是不希奇的 -- 當然,我覺得這是值得的。

所以,面對那麼多Linux distribution,你應當選擇哪個呢?

比較著名的Linux distribution有:
RedHat:最新版本6.2, 7.0beta。由於RedHat公司已經上市,獲得了很多
商業的支持,所以它在硬體軟體兼容性上很好。實際上它已經是Linux的
工業標准。想像一下如果你是一個比如Oracle這樣廠商的老闆,你需要為
Linux開發一個版本,而不同的Linux dist需要單獨開發維護,為成本考慮你
自然會只認准一個Linux。

Slackware(7.1)。很早就有的Linux,有很多老的忠實用戶,但現在越來越不行了



SuSe Linux,德國人做的,在歐洲很流行,有一些驅動上的優勢。

另外還有Debian,CorelLinux等dist,不一一介紹了。

還有你會看到國內媒體上吹捧的各種「中文Linux」,他們的優勢主要是有
中文處理。但是如前一篇文章提到的,想用中文,用windows 2000最好。實際上
我覺得一個老7字班的前輩跟我說的一句話很好:「(對我們來說)在計算機上看


中文本身就是一件很古怪的事情」。如果你是抱著學習計算機的目的而來,那麼
你不可能避免閱讀英文文檔。即使是microsoft的文檔,有關編程的文檔,最新的


全是英文。當然,要上BBS,看中文網頁等,用英文的dist一樣能做到

4. Linux和Windows的區別

和Linux 一樣,Windows系列是完全的多任務操作系統。它們支持同樣的用戶介面

、網路和安全性。但是,Linux和Windows的真正區別在於,Linux 事實上是Unix

的一種版本,而且來自Unix的貢獻非常巨大。是什麼使得Unix如此重要?不僅在

於對多用戶機器來說,Unix是最流行的操作系統,而且在於它是免費軟體的基礎

。在Internet上,大量免費軟體都是針對Unix系統編寫的。由於有眾多的Unix廠

商,所以Unix也有許多實現方法。沒有一個單獨的組織負責Unix的分發。現在,

存在一股巨大的力量推動Unix社團以開放系統的形式走向標准化。另一方面Windo

ws系列是專用系統,由開發操作系統的公司控制介面和設計。在這個意義上這種

公司利潤很高,因為它對程序設計和用戶介面設計建立了嚴格的標准,和那些開

放系統社團完全不一樣。一些組織正在試圖完成標准化Unix程序設計介面的任務

。特別要指出的是,Linux完全兼容POSIX.1標准。

安全問題對於IT管理員來說是需要長期關注的。主管們需要一套框架來對操作系

統的安全性進行合理的評估,包括:基本安全、網路安全和協議,應用協議、發

布與操作、確信度、可信計算、開放標准。在本文中,我們將按照這七個類別比

較微軟Windows和Linux的安全性。最終的定性結論是:目前為止,Linux提供了相

對於Windows更好的安全性能,只有一個方面例外(確信度)。

無論按照什麼標准對Windows和Linux進行評估,都存在一定的問題:每個操作系

統都不止一個版本。微軟的操作系統有Windows98、 Windows NT、 Windows 2000

、 Windows 2003 Server和Windows

CE,而Linux的發行版由於內核(基於2.2、2.4、2.6)的不同和軟體包的不同也

有較大的差異。我們本文所使用的操作系統,都是目前的技術而不是那些"古老"

的解決方案。

用戶需要記住:Linux和Windows在設計上就存在哲學性的區別。Windows操作系統

傾向於將更多的功能集成到操作系統內部,並將程序與內核相結合;而Linux不同

於Windows,它的內核空間與用戶空間有明顯的界限。根據設計架構的不同,兩者

都可以使操作系統更加安全。

Linux和Windows安全性的基本改變

對於用戶來說,Linux和Windows的不斷更新引發了兩者之間的競爭。用戶可以有

自己喜歡的系統,同時也在關注競爭的發展。微軟的主動性似乎更高一些――這

是由於業界"冷嘲熱諷"的"激勵"與Linux的不斷發展。微軟將在下幾個月對Window

s安全進行改觀,屆時微軟會發布Windows XP的WindowsXP Service Pack 2。這一

服務包增強了Windows的安全性,關閉了原先默認開放的許多服務,也提供了新的

補丁管理工具,例如:為了避免受到過多無用的信息,警告服務和信使服務都被

關閉。大多數情況下,關閉這些特性對於增強系統安全性是有好處的,不過很難

在安全性與軟體的功能性、靈活性之間作出折衷。

最顯著的表現是:微軟更加關注改進可用性的同時增強系統的安全性。比如:200

3年許多針對微軟的漏洞攻擊程序都使用可執行文件作為電子郵件的附件(例如My

Doom)。Service Pack2包括一個附件執行服務,為Outlook/Exchange、 Windows

Messenger和Internet Explorer提供了統一的環境。這樣就能降低用戶運行可執

行文件時感染病毒或者蠕蟲的威脅性。另外,禁止數據頁的可執行性也會限制潛

在的緩沖區溢出的威脅。不過,微軟在WindowsXP Service Pack

2中並沒有修改Windows有問題的架構以及安全傳輸的部分,而是將這部分重擔交

給了用戶。

微軟的重點顯然是支持應用程序的安全性。WindowsXP Service Pack 2中增強的

許多方面都是以Outlook/Exchange和Internet

Explorer作為對象的。例如:Internet Explorer中有一個智能的MIME類型檢查,

會對目標的內容類型進行檢查,用戶可以獲悉該內容中是否存在潛在的有害程序

。不過這一軟體是不是能將病毒與同事的電子數據表區分開來呢?

WindowsXP Service Pack 2的另一個新特性是能夠卸載瀏覽器的多餘插件,這需

要終端用戶檢查並判斷需要卸載哪些插件。Outlook/Exchange可以預覽電子郵件

消息,因此用戶可以在打開之前就將電子郵件刪除。另一個應用安全的增強,防

火牆在網路協議棧之前啟動。對於軟體開發者來說,遠方過程調用中許可權的改變

,使得安全性差的代碼難以工作正常。

WindowsXP Service Pack 2也為Windows用戶提供了許多華麗的新特性,但是問題

仍然存在:這些特性會不會對管理員甚至是終端用戶造成負擔?是不是在增加了W

indows操作系統代碼安全性的同時讓系統變得更加復雜?

Linux 與 Windows 的不同
雖然有一些類似之處,但Windows和Linux的工作方式還是存在一些根本的區別。

這些區別只有在您對兩者都很熟悉以後才能體會到,但它們卻是 Linux 思想的核

心。

Linux 的應用目標是網路而不是列印

Windows最初出現的時候,這個世界還是一個紙張的世界。Windows的偉大成就之

一在於您的工作成果可以方便地看到並列印出來。這樣一個開端影響了 Windows

的後期發展。

同樣,Linux 也受到了其起源的影響。Linux 的設計定位於網路操作系統。它的

設計靈感來自於 Unix 操作系統,因此它的命令的設計比較簡單,或者說是比較

簡潔。由於純文本可以非常好地跨網路工作,所以 Linux 配置文件和數據都以文

本為基礎。

對那些熟悉圖形環境的人來說,Linux伺服器初看可能比較原始。但是Linux開發

更多關注的是它的內在功能而不是表面上的東西。即使是在純文本的環境中,Lin

ux同樣擁有非常先進的網路、腳本和安全能力。執行一些任務所需的某些表面上

看起來比較奇怪的步驟是令人費解的,除非您認識到 Linux 是期望在網路上與其

他 Linux系統協同執行這些任務。Linux的自動執行能力也很強,只需要設計批處

理文件就可以讓系統自動完成非常詳細的任務。Linux 的這種能力來自於其基於

文本的本質。

可選的 GUI

Linux有圖形組件。Linux支持高端的圖形適配器和顯示器,完全勝任圖形相關的

工作。現在,許多數字效果藝術家在Linux工作站上來進行他們的設計工作,而以

前這些工作需要使用IRIX系統來完成。但是,圖形環境並沒有集成到 Linux 中,

而是運行於系統之上的單獨一層。這意味著您可以只運行 GUI,或者在需要時才

運行 GUI。如果您的系統主要任務是提供Web應用,那麼您可以停掉圖形界面,而

將其所用的內存和CPU資源用於您的服務。如果您需要在 GUI 環境下做一些工作

,可以再打開它,工作完成後再將其關閉。

Linux 有圖形化的管理工具,以及日常辦公的工具,比如電子郵件、網路瀏覽器

和文檔處理工具等。不過,在 Linux 中,圖形化的管理工具通常是控制台 (命令

行) 工具的擴展。也就是說,用圖形化工具能完成的所有工作,用控制台命令同

樣可以完成。同樣,使用圖形化工具並不妨礙您對配置文件進行手工修改。其實

際意義可能並不是特別顯而易見,但是,如果在圖形化管理工具中所做的任何工

作都可以以命令行的方式完成,這就表示那些工作也可以由一個腳本來實現。腳

本化的命令可以成為自動執行的任務。Linux 同時支持這兩種方式,並不要求您

只用文本或者只用 GUI。您可以根據您的需要選擇最好的方法。

Linux 中的配置文件是人類可讀的文本文件,這與過去的 Windows 中的 INI 文

件類似,但與 Windows 的注冊表機制在思路上有本質的區別。每一個應用程序都

有其自己的配置文件,而且通常不與其他的配置文件放在一起。不過,大部分的

配置文件都存放於一個目錄樹 (/etc) 下的單個地方,所以看起來它們在邏輯上

是在一起。文本文件的配置方式使得不通過特殊的系統工具就可以完成配置文件

的備份、檢查和編輯工作。

文件名擴展

Linux不使用文件名擴展來識別文件的類型。相反,Linux根據文件的頭內容來識

別其類型。為了提高人類可讀性您仍可以使用文件名擴展,但這對 Linux 系統來

說沒有任何作用。不過,有一些應用程序,比如 Web 伺服器,可能使用命名約定

來識別文件類型,但這只是特定的應用程序的要求而不是 Linux 系統本身的要求



Linux通過文件訪問許可權來判斷文件是否為可執行文件。任何一個文件都可以賦予

可執行許可權,這樣程序和腳本的創建者或管理員可以將它們識別為可執行文件。

這樣做有利於安全。保存到系統上的可執行的文件不能自動執行,這樣就可以防

止許多腳本病毒。

重新引導是最後的手段

如果您使用Windows已經很長時間了,您可能已經習慣出於各種原因(從軟體安裝

到糾正服務故障)而重新引導系統。在Linux思想中您的這一習慣需要改變。Linu

x在本質上更遵循「牛頓運動定律」。一旦開始運行,它將保持運行狀態,直到受

到外來因素的影響,比如硬體的故障。實際上,Linux系統的設計使得應用程序不

會導致內核的崩潰,因此不必經常重新引導(與Windows系統的設計相對而言)。

所以除了Linux內核之外,其他軟體的安裝、啟動、停止和重新配置都不用重新引

導系統。

如果您確實重新引導了 Linux 系統,問題很可能得不到解決,而且還會使問題更

加惡化。學習並掌握 Linux 服務和運行級別是成功解決問題的關鍵。學習 Linux

最困難的就是克服重新引導系統的習慣。

另外,您可以遠程地完成Linux中的很多工作。只要有一些基本的網路服務在運行

,您就可以進入到那個系統。而且,如果系統中一個特定的服務出現了問題,您

可以在進行故障診斷的同時讓其他服務繼續運行。當您在一個系統上同時運行多

個服務的時候,這種管理方式非常重要。

命令區分大小寫

所有的 Linux 命令和選項都區分大小寫。例如, -R 與 -r 不同,會去做不同的

事情。控制台命令幾乎都是小寫的。我們將在「 第 2 部分. 控制台速成班」中

對命令進行更詳細的介紹。

廣泛的硬體支持可能是任何流行操作系統最基本的要求,也是可伸縮性的一個重要方面。Windows操作系統在這個方面做得的確非常出色:一方面, Windows的廣泛使用使得任何硬體廠商在推出新的硬體時都會把Windows當作標準的平台加以支持,並且不斷為新的Windows版本更新驅動程序;另一方面,大量的硬體支持又反過來推動了Windows平台的進一步普及。
Linux的硬體驅動程序通常都是由那些需要這些硬體的用戶自己來開發的. Linux的共享性能夠很快地給那些常用的硬體提供驅動程序,這些驅動程序需要後續的支持和幫助,來克服潛在的不穩定性。至於一些尚未普及的組件,如各式各樣的USB設備,其驅動程序的開發將需要更多的支持,來滿足不同用戶的需要。
SMP(對稱多處理器)支持
CPU是計算機系統的核心部分,是否具有良好的SMP支持將直接影響大型應用下的性能。
Windows 2000 Advanced Server的零售版本最多支持四路SMP,OEM版可以支持最多達32路的SMP。對CPU的支持級別和Windows 4.0相比沒有什麼變化,但是對SMP的實現代碼進行了改進,使得高性能的縮放可以更為「線性」地進行。Windows NT Server 4.0企業版已經實現了創紀錄的性能價格水平,隨著對SMP縮放的改進,這一趨勢將在Windows 2000 Advanced Server和Datacenter Server中得到延續。在採用八路設計或者多於八路設計的系統中,性能的提高最為明顯。
而Linux正致力於解決核心部分中的SMP支持,以提高Linux在大型應用下的性能。盡管Linux不是為SMP而設計的,Linux Torvalds也曾經說過Linux的SMP評測表現很差,但是我們期望這些問題能夠在2.4版本內核中得到解決,使更多的學校或者企業可以使用經過考驗的Linux來實現他們的核心程序。
對群集的支持
Windows 2000 Server具有強大的群集功能。Compaq最近之所以能在TPC-C比賽中傲視群雄,擊敗所有對手,靠的就是一個巨大的有著12個節點,96個處理器的群集,而它們運行的是Windows 2000 Server。
盡管Linux沒有在高端系統中運行關鍵性應用程序方面有出色記錄,但最近Linux在群集項目也發布了不少東西,希望Linux的開發者大軍可以開發出更完善的群集功能
對特定計算環境的支持
使每一個系統都有適合於自己的工作場合,這就是系統對特定計算環境的支持。
微軟開發了不同的操作系統來完成不同類型的任務。Windows CE適用於小型的手持式電腦和筆記本電腦,Windows 95/98和Windows 2000 Professional適用於桌面計算機,而Windows NT 4.0和Windows 2000 Server則適用於大型伺服器應用程序。作為一個系列操作系統家族,Windows對各種不同的工作環境提供了良好的伸縮性支持。
由於Linux大部分可用的平台處於開發的初始階段,對於各種不同計算環境的支持將是Linux系統的下一步目標。
文檔編制
眾所周知,隨著系統變得越來越復雜,功能越來越強大,編制一個好的文檔是非常重要的。這有助於用戶對系統的理解和管理。詳盡的文檔說明,有助於我們熟練地掌握它所有的功能和特性。
微軟通常為其產品提供了深入細致的文檔說明,在文檔的本地化方面也做得很好。Linux產品的文檔說明需要進一步的規范。
回答者:可愛的小剛絲 - 試用期 一級 9-6 13:12

1、從系統構成上來說,linux是開源軟體,而windows不是。那就意味著,如果你喜歡你可以對linux系統做你想做的任何改動。而這點對於windows來說,是想也不要想的。
2、從運行的穩定性來說。各有利弊。但linux的任何程序都是相對獨立的,哪怕gnome和kde(圖形界面)也是獨立的。而軟體的崩潰只是軟體的崩潰,很少造成系統的癱瘓(死機)。只有重新運行程序就好了。windows嗎,就不用說了,沒見過windows死機的人,我沒見過。
3、從多用戶來說,linux是真正的多用戶系統。可以多個用戶真正登錄,這對於windows來說,雖然也有了雛形,但太兒戲化了,擺設而已。
4、對於中文的支持來說。windows的多個版本對於windows的支持是很強的。字體也很漂亮。而linux雖然也支持中文,但要完全支持中文是要手動做很多設置的,不過就算做的再好。總有機會看到中文亂碼的(因為幾乎每個軟體都要設置字體和字元編碼的)。而且中文的字體比較煩,不是很好看。(好看的基本都不是開源的。ps:如果你都不想為操作系統花錢,還會去買幾個字體嗎。當然也有盜版@不是用linux的初衷了。)
5、對於系統更新來說,apt是目前linux不二的選擇了,快捷普遍、簡單。而且無什麼正版驗證之虞的。windows也不錯,可以漏洞總比補丁來的快,更何況我沒用過正版的呢。
6、從安全性來說。其實上一條也說過這個問題了。我們用windows時,殺毒軟體、防火牆、防垃圾軟體、防間諜軟體佔去了大部分的系統資源。可這樣還是防不勝防的。有誰沒中過毒或木馬、流氓軟體呢?
linux?不用這些煩人的東西。
7、從應用軟體來說,雖然linux下的軟體有很多,但和windows來說,真的沒辦法比的。誰讓windows幾乎成了操作系統的代名了呢。
8、從易用性來說,我自我的感覺,在常用的windows、mac、linux中,無論界面、滑鼠操作、文件格式,windows都是相當容易上手的。其他的操作系統,幾乎都要是摸索中探索的。更何況linux的很多配置都是基於文檔的,也就是要手工的修改一些配置文件。對於想我這樣的老人來說,厄長的代碼,明天還能記得否?
windows幾乎一支滑鼠就能解決所有問題。呵呵
9、綜述:當然各種的優缺點遠不至就這些,就不過說了。
如果要出於個人應用的話,還是用windows吧。學習容易,資料好早。
如果出於學習的話,還是用用linux吧,但你要做好不厭其煩的心理准備!對於混亂的linux版本來說,你要記得同樣的問題,可以有n種解決辦法,但可能只有一種合適你的。網上資料相對比較匱乏,比較單一,而且抄襲嚴重。
linux我推薦用新華linux,中文化很好了(少煩很多神的),論壇也做的不錯。

E. 我想自學C++編程,請問需要給電腦安裝什麼軟體

1、gcc

GCC(GNU Compiler Collection,GNU編譯器套件)是由GNU開發的編程語言譯器。GNU編譯器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go語言前端,也包括了這些語言的庫(如libstdc++,libgcj等。)

GCC的初衷是為GNU操作系統專門編寫的一款編譯器。GNU系統是徹底的自由軟體。此處,「自由」的含義是它尊重用戶的自由。

2、llvm+Clang

LLVM是構架編譯器(compiler)的框架系統,以C++編寫而成,用於優化以任意程序語言編寫的程序的編譯時間(compile-time)、鏈接時間(link-time)、運行時間(run-time)以及空閑時間(idle-time),對開發者保持開放,並兼容已有腳本。

LLVM計劃啟動於2000年,最初由University of Illinois at Urbana-Champaign的Chris Lattner主持開展。2006年Chris Lattner加盟Apple Inc.並致力於LLVM在Apple開發體系中的應用。Apple也是LLVM計劃的主要資助者。

3、Watcom C/C++

Watcom C/C++ 編譯器、Watch Fortran 編譯器 經已在不其先前所屬公司Sybase售賣, 而被 SciTech 軟體公司 作為 Open Watcom 開源包 發行。類似於其他的 開源編譯器(例如 [GCC])項目,Watcom C代碼小而便攜, 其編譯器後端(代碼生成器)的目標碼可變。

該編譯器可在DOS、OS/2、Windows等操作系統上運行,並生成各種可運行的(不必是該操作系統的)代碼。該編譯器支持Novell NetWare的 NLM 目標碼。目前正進行 為 Linux、modern BSD (例如FreeBSD) 操作系統 重定目標碼,以便在 x86、PowerPC 及其它處理器上運行。

Open Watcom C/C++ 的1.4版於2005年12月發行,採用 Linux x86 為實驗目標, 支持NT、OS/2等host平台曾有某被棄置的QNX版本,但其編譯所須的庫並未開源發行。當前最近的穩定版是1.9版,在2010年6月發行。

4、Digital Mars

DigitalMars是一款高性能的編譯器,功能包含,快速編譯/鏈接時、強大的優化技術、Contract設計、完整的資源庫、瀏覽HTML文檔,反匯編、庫、資源編譯器等。命令行及GUI版本、教程、代碼示例、在線更新、標准模板庫等等。

5、MSVC系列

與Visual Studio集成發布,微軟自己的編譯器,VS是一個基本完整的開發工具集,它包括了整個軟體生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發環境(IDE)等等。

所寫的目標代碼適用於微軟支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。

F. PPC是什麼意思

PPC是巴黎和會。巴黎和會是一戰結束後的1919年,勝利的協約國集團為解決戰爭所造成的問題以及奠定戰後的和平而召開的會議。這個和會是勝利國舉行的和會,又是個大國操縱的和會,德國等戰敗國和蘇俄被排斥在會議之外。

(6)起源編譯器適用第二款應用擴展閱讀:

美、英、法三國最高領導人主導了和會的進行。和會上簽訂了處置德國的《凡爾賽和約》,同時還分別同奧、匈、土等國簽訂了一系列和約。它們構成了凡爾賽體系,確立了一戰後由美、英、法等主要戰勝國主導的國際政治格局。

1914年奧地利王儲斐迪南大公夫婦遇刺,這件事情改變了全世界命運。當年7月28日,奧匈帝國對塞爾維亞宣戰。隨即,這兩個國家背後的德意志帝國與沙皇俄國宣戰,至英德兩國宣戰後,意味歐洲戰區全面開打。"唐啟華介紹,就在百年前的8月7日,中國對所有交戰國宣布保持局外中立。

G. 學C語言現在最好用的編程軟體

GNU編譯器套裝
開發 The GNU Project
最新版本 4.4.2 / 2009-10-15(2個月前)
操作系統 跨平台
類型 編譯器
許可協議 GPL
網站 gcc.gnu.org

GCC(GNU Compiler Collection,GNU編譯器套裝),是一套由GNU開發的編程語言編譯器。它是一套以GPL及LGPL許可證所發行的自由軟體,也是GNU計劃的關鍵部分,亦是自由的類Unix及蘋果計算機Mac OS X 操作系統的標准編譯器。GCC(特別是其中的C語言編譯器)也常被認為是跨平台編譯器的事實標准。

GCC原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴展,變得可處理C++。之後也變得可處理Fortran、Pascal、Objective-C、Java,以及Ada與其他語言。
目錄
[隱藏]

* 1 概觀
* 2 目前支持的語言
o 2.1 內嵌OpenMP支持
* 3 支持的處理器架構
* 4 結構
o 4.1 前端介面
o 4.2 中介介面
o 4.3 後端介面
* 5 替GCC程序除錯
* 6 參考書目及注釋
* 7 參閱
* 8 更多閱讀
* 9 外部鏈接

[編輯] 概觀

GCC是由理查德·馬修·斯托曼在1985年開始的。他首先擴增一個舊有的編譯器,使它能編譯C,這個編譯器一開始是以Pastel語言所寫的。Pastel是一個不可移植的Pascal語言特殊版,這個編譯器也只能編譯Pastel語言。為了讓自由軟體有一個編譯器,後來此編譯器由斯托曼和Len Tower在1987年[1]以C語言重寫[2]並成為GNU項目的編譯器。GCC的建立者由自由軟體基金會直接管理[3]。

在1997年,一群不滿GCC緩慢且封閉的創作環境者,組織了一個名為EGCS《Experimental/Enhanced GNU Compiler System》的項目,此項目匯整了數項實驗性的分支進入某個GCC項目的分支中。EGCS比起GCC的建構環境更有活力,且EGCS最終也在1999年四月成為GCC的官方版本。

GCC目前由世界各地不同的數個程序設計師小組維護。它是移植到中央處理器架構以及操作系統最多的編譯器。

由於GCC已成為GNU系統的官方編譯器(包括GNU/Linux家族),它也成為編譯與建立其他操作系統的主要編譯器,包括BSD家族、Mac OS X、NeXTSTEP與BeOS。

GCC通常是跨平台軟體的編譯器首選。有別於一般局限於特定系統與運行環境的編譯器,GCC在所有平台上都使用同一個前端處理程序,產生一樣的中介碼,因此此中介碼在各個其他平台上使用GCC編譯,有很大的機會可得到正確無誤的輸出程序。
[編輯] 目前支持的語言

以2006年5月24日釋出的4.1.1版為准,本編譯器版本可處理下列語言:

* Ada 《GNAT》
* C 《GCC》
* C++(G++)
* Fortran 《Fortran 77: G77,Fortran 90: GFORTRAN》

* Java 《編譯器:GCJ;解釋器:GIJ》
* Objective-C 《GOBJC》
* Objective-C++

先前版本納入的CHILL前端由於缺乏維護而被廢棄。

Fortran前端在4.0版之前是G77,此前端僅支持Fortran 77。在本版本中,G77被廢棄而採用更新的GFortran,因為此前端支持Fortran 95。

下列前端依然存在:

* Mola-2
* Mola-3
* Pascal
* PL/I

* D語言
* Mercury
* VHDL

[編輯] 內嵌OpenMP支持

OpenMP是一種跨語言的對稱多處理器(SMP)多線程並行程序的編程工具,也非常適合當今越來越流行的單CPU多核硬體環境,因此從gcc4.2開始,OpenMP成為其內嵌支持的並行編程規范,可以直接編譯內嵌 OpenMP語句的C/C++/Fortran95的源代碼。gcc4.2之前如果想在C/C++/Fortran中嵌入OpenMP語句的話,需要額外安裝庫和預處理器才能識別和正確處理這些語句。

* gcc 4.2.0開始支持OpenMP v2.5
* gcc 4.4.0開始支持OpenMP v2.5及v3.0

參見GNU的GOMP計劃
[編輯] 支持的處理器架構

GCC目前支持下列處理器架構(以4.1版為准):

* Alpha
* ARM
* Atmel AVR
* Blackfin
* H8/300
* IA-32(x86)與x86-64
* IA-64例如:Itanium

* MorphoSys家族
* Motorola 68000
* Motorola 88000
* MIPS
* PA-RISC
* PDP-11
* PowerPC

* System/370,System/390
* SuperH
* HC12
* SPARC
* VAX
* Renesas R8C/M16C/M32C家族

較不知名的處理器架構也在官方釋出版本中支持:

* A29K
* ARC
* C4x
* CRIS
* D30V
* DSP16xx
* FR-30
* FR-V

* Intel i960
* IP2000
* M32R
* 68HC11
* MCORE
* MMIX

* MN10200
* MN10300
* NS32K
* ROMP
* Stormy16
* V850
* Xtensa

由FSF個別維護的GCC處理器架構:

* D10V
* MicroBlaze

* PDP-10
* MSP430

* Z8000

當GCC需要移植到一個新平台上,通常使用此平台固有的語言來撰寫其初始階段。
[編輯] 結構

GCC的外部介面長得像一個標準的Unix編譯器。用戶在命令行下鍵入gcc之程序名,以及一些命令參數,以便決定每個輸入文件使用的個別語言編譯器,並為輸出代碼使用適合此硬體平台的匯編語言編譯器,並且選擇性地運行連接器以製造可運行的程序。

每個語言編譯器都是獨立程序,此程序可處理輸入的源代碼,並輸出匯編語言碼。全部的語言編譯器都擁有共通的中介架構:一個前端解析符合此語言的源代碼,並產生一抽象語法樹,以及一翻譯此語法樹成為GCC的寄存器轉換語言《RTL》的後端。編譯器優化與靜態代碼解析技術(例如FORTIFY_SOURCE[1],一個試圖發現緩存溢出《buffer overflow》的編譯器)在此階段應用於代碼上。最後,適用於此硬體架構的匯編語言代碼以Jack Davidson與Chris Fraser發明的演算法產出。

幾乎全部的GCC都由C寫成,除了Ada前端大部分以Ada寫成。
[編輯] 前端介面

前端的功能在於產生一個可讓後端處理之語法樹。此語法解析器是手寫之遞回語法解析器。

直到最近,程序的語法樹結構尚無法與欲產出的處理器架構脫鉤。而語法樹的規則有時在不同的語言前端也不一樣,有些前端會提供它們特別的語法樹規則。

在2005年,兩種與語言脫鉤的新型態語法樹納入GCC中。它們稱為GENERIC與GIMPLE。語法解析變成產生與語言相關的暫時語法樹,再將它們轉成GENERIC。之後再使用"gimplifier"技術降低GENERIC的復雜結構,成為一較簡單的靜態唯一形式(Static Single Assignment form,SSA)基礎的GIMPLE形式。此形式是一個與語言和處理器架構脫鉤的全局優化通用語言,適用於大多數的現代編程語言。
[編輯] 中介介面

一般編譯器作者會將語法樹的優化放在前端,但其實此步驟並不看語言的種類而有不同,且不需要用到語法解析器。因此GCC作者們將此步驟歸入通稱為中介階段的部分里。此類的優化包括消解死碼、消解重復計算與全局數值重編碼等。許多優化技巧也正在實現中。
[編輯] 後端介面

GCC後端的行為因不同的前處理器宏和特定架構的功能而不同,例如不同的字元尺寸、調用方式與大小尾序等。後端介面的前半部利用這些消息決定其RTL的生成形式,因此雖然GCC的RTL理論上不受處理器影響,但在此階段其抽象指令已被轉換成目標架構的格式。

GCC的優化技巧依其釋出版本而有很大不同,但都包含了標準的優化演算法,例如循環優化、線程跳躍、共通程序子句消減、指令調度等等。而RTL的優化由於可用的情形較少,且缺乏較高級的信息,因此比較起近來增加的GIMPLE語法樹形式[2],便顯得比較不重要。

後端經由一重讀取步驟後,利用描述目標處理器的指令集時所取得的信息,將抽象寄存器替換成處理器的真實寄存器。此階段非常復雜,因為它必須關照所有GCC可移植平台的處理器指令集的規格與技術細節。

後端的最後步驟相當公式化,僅僅將前一階段得到的匯編語言碼藉由簡單的副函數轉換其寄存器與存儲器位置成相對應的機器碼。
[編輯] 替GCC程序除錯

為GCC除錯的首選工具當然是GNU除錯器。其他特殊用途的除錯工具是Valgrind,用以發現存儲器泄漏 (Memory leak)。而GNU測量器(gprof)可以得知程序中某些函數花費多少時間,以及其調用頻率;此功能需要用戶在編譯時選定測量《profiling》選項。
[編輯] 參考書目及注釋

* Richard M. Stallman:Using and Porting the GNU Compiler Collection, Free Software Foundation,ISBN 0-595-10035-X
* Richard M. Stallman: Using Gcc: The Gnu Compiler Collection Reference, Free Software Foundation, ISBN 1-882114-39-6
* Brian J. Gough:An Introction to GCC, Network Theory Ltd., ISBN 0-9541617-9-3

1. ^ Tower, Leonard (1987) "GNU C編譯器beta測試版釋出" comp.lang.misc USENET新聞組;參閱http://gcc.gnu.org/releases.html#timeline
2. ^ Stallman, Richard M.(1986年2月1日).GNU狀態.GNU的公告版,1(1).自由軟體基金會.
3. ^ Stallman, Richard M. (2001) "GCC貢獻者名單"於使用及移植GCC 2.95版(Cambridge, Mass.: Free Software Foundation)

[編輯] 參閱
[[File:|36x32px|自由軟體主題]] 自由軟體主題首頁

GCC目前包含了Boehm GC,一個為C/C++ 所設計的垃圾回收器。

* distcc - 為分布式編譯所設計的軟體,以GCC為協同軟體。
* LLVM - 低層虛擬機編譯器架構。
* MinGW - 將GNU開發工具移植到Win32平台下的計劃
* Cygwin - 在Windows上運行GNU程序的模擬軟體。
* GCC Summit
* OpenWatcom - 另一個開放原碼的C++/Fortran編譯器。
* Code Sourcery - 一個GCC顧問公司。
* ggcc - 全球化GCC項目。

[編輯] 更多閱讀

* Arthur Griffith, GCC: The Complete Reference. McGrawHill/Osborne. ISBN 0-07-222405-3.
* Kerner, Sean Michael.Open Source GCC 4.0: Older, Faster,internetnews.com,2005年4月22日.
* Kerner, Sean Michael.New GCC Heavy on Optimization,internetnews.com,2006年3月2日.

[編輯] 外部鏈接

* GCC官方網站
* GCC Forum - 由Nabble維持,整理所有gcc通信討論串,並集成入一個可搜索介面中。

H. 常見的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, 這些軟體很受用戶歡迎。

(8)起源編譯器適用第二款應用擴展閱讀:

C編譯的整個過程很復雜,大致可以分為以下四個階段:

1、預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。

2、編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。

3、匯編階段將匯編語言翻譯成機器指令。

4、鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。

I. python的編輯器有哪些

1、Sublime Text
Sublime Text輕量級的代碼編輯器,跨平台,支持幾十種編程語言,包括Python,Java,C/C++等,小巧靈活,運行輕快,支持代碼高亮、自動補全、語法提示,插件擴展豐富,是一個很不錯的代碼編輯器,配置相關文件後,可直接運行Python程序。Sublime Text 是開發者中最流行的編輯器之一,多功能,支持多種語言,而且在開發者社區非常受歡迎。Sublime 有自己的包管理器,開發者可以使用TA來安裝組件,插件和額外的樣式,所有這些都能提升你的編碼體驗。
2、VS Code
這是微軟開發的一個跨平台的代碼編輯器,支持常見的編程語言開發,插件拓展豐富,不僅智能補全、語法檢查、代碼高亮,還支持git功能,運行流暢,是一個很不錯的代碼編輯器,安裝相關插件後,可直接運行Python程序。
3、Atom
這是github專門為程序員開發的一個代碼編輯器,也是款平台的,界面簡潔直觀,使用起來非常方便,自動補全、代碼高亮、語法提示,啟動運行速度較快,對於初學者來說,是一個很不錯的代碼編輯器。
4、PyCharm:
這是一個專門用於Python開發的IDE,常見的代碼補全、智能提示、語法檢查,這個軟體都支持,除此之外,還集成了版本控制、單元測試、git功能,可以快速創建Django,Flask等Python Web框架,使用起來非常不錯,在開發大型項目中經常會用到,唯一的缺點就是,啟動起來有些卡,還不是免費的,不過可以下載社區免費版的。PyCharm是 JetBrains 開發的 Python IDE。PyCharm用於一般IDE具備的功能,比如, 調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制……另外,PyCharm還提供了一些很好的功能用於Django開發,同時支持Google App Engine,更酷的是,PyCharm支持IronPython。
5、Vim
Vim可以說是Python最好的IDE。Vim是高級文本編輯器,旨在提供實際的Unix編輯器『Vi』功能,支持更多更完善的特性集。Vim不需要花費太多的學習時間,一旦你需要一個無縫的編程體驗,那麼就會把Vim集成到你的工作流中。
6、Eclipse with PyDev
Eclipse是非常流行的IDE,而且已經有了很久的歷史。Eclipse with Pydev允許開發者創建有用和互動式的Web應用。PyDev是Eclipse開發Python的IDE,支持Python,Jython和IronPython的開發。
7、Emacs
GNU Emacs是可擴展,自定義的文本編輯器,甚至是更多的功能。Emacs的核心是Emacs Lisp解析器,但是支持文本編輯。如果你已經使用過Vim,可以嘗試一下Emacs。
8、Komodo Edit
Komodo Edit 是非常干凈專業的Python IDE。
9、Wing
Wingware的Python IDE兼容Python 2.x和3.x,可以結合Django, matplotlib, Zope, Plone, App Engine, PyQt, PySide, wxPython, PyGTK, Tkinter, mod_wsgi, pygame, Maya, MotionBuilder, NUKE, Blender 和其他 Python 框架使用。Wing支持測試驅動開發,集成了單元測試,nose和Django框架的執行和調試功能。Wing IDE啟動和運行的速度都非常快,支持 Windows, Linux, OS X和Python versi。
10、PyScripter
PyScripter是款免費開源的Python集成開發環境(IDE)。
11、The Eric Python IDE
Eric是全功能的Python和Ruby編輯器和IDE,是使用Python 編寫的。Eric基於跨平台的GUI工具包Qt,集成了高度靈活的Scintilla 編輯器控制項。Eric包括一個插件系統,允許簡單的對IDE進行功能性擴展。
12、Interactive Editor for Python
IEP是跨平台的Python IDE,旨在提供簡單高效的Python開發環境。包括兩個重要的組件:編輯器和Shell,並且提供插件工具集從各個方面來提高開發人員的效率。
以上就是我總結的好用的12款Python編輯器。因每個人的操作習慣不同,適合自己使用的才是好用的Python編輯器。

J. c語言編譯軟體有哪些

6款好用的C語言編譯器推薦

一些剛開始接觸C語言編譯的網友想下載一款C語言編譯器來使用,不過,網路上有不少C語言編譯器相關的軟體,讓人很難抉擇。那麼,C語言編譯器哪個好?今天的文章里,小編給大家整理了6款好用的C語言編譯器推薦給大家,需要C語言編譯器的網友,不妨了解一下!

一、Dev-C++

Visual Studio(VS) 是一套非常完備的工具和服務,可幫助您為 Microsoft 平台和其他平台創建各種各樣的應用程序。Visual Studio 還可將您所有的項目、團隊和利益干係人聯系在一起。現在您的團隊可以從任何位置以虛擬方式進行更為敏捷的合作,無論他們採用何種開發工具。

功能介紹

可以通過強大的集成開發環境構建面向 Windows、Android、iOS 以及 Web 的出色應用。使用任何 IDE 或編輯器在雲中進行版本控制、敏捷、持續交付、應用程序分析協作。

適用於所有操作系統的編輯器使用可在 Windows、OS X 或 Linux 上運行的免費代碼編輯器構建和調試現代 Web 和雲應用程序。

閱讀全文

與起源編譯器適用第二款應用相關的資料

熱點內容
python協程線程 瀏覽:293
周立功單片機資料 瀏覽:327
程序員大神級演講 瀏覽:286
飛思卡爾單片機培訓 瀏覽:403
解壓神器音樂盒秘密 瀏覽:542
韓國電影愛情推理片劇情 瀏覽:185
江西調度伺服器掛式雲空間 瀏覽:13
vip韓國電視劇李鍾碩 瀏覽:934
stc15單片機驅動步進電機 瀏覽:122
一個壞媽媽金珠 瀏覽:806
申請農業銀行信用卡用什麼app 瀏覽:187
在線看的網站 瀏覽:696
金碟專業版的伺服器如何啟動 瀏覽:404
谷輪壓縮機上海 瀏覽:726
兩對情侶互換的電影 瀏覽:347
linux的解壓gz命令 瀏覽:377
排序演算法的測試用例 瀏覽:411
linux終端編碼 瀏覽:141
程序員決定去擺攤 瀏覽:213
戰術手語圖解命令手語 瀏覽:58