共计 2159 个字符,预计需要花费 6 分钟才能阅读完成。
Integrated Development Environment 整合開發環境
整合開發環境(Integrated Development Environment,簡稱 IDE,也稱為 Integration Design Environment、Integration Debugging Environment)是一種輔助程式開發人員開發軟體的應用軟體,在開發工具內部就可以輔助編寫原始碼文字、並編譯打包成為可用的程式,有些甚至可以設計圖形介面。
IDE 通常包括程式語言編輯器、自動構建工具、通常還包括除錯器。有些 IDE 包含編譯器/直譯器,如微軟的 Microsoft Visual Studio,有些則不包含,如 Eclipse、SharpDevelop 等,這些 IDE 是通過呼叫第三方編譯器來實現代碼的編譯工作的。有時 IDE 還會包含版本控制系統和一些可以設計圖形用戶介面的工具。許多支援物件導向的現代化 IDE 還包括了類別瀏覽器、物件檢視器、物件結構圖。雖然目前有一些 IDE 支援多種程式語言(例如 Eclipse、NetBeans、Microsoft Visual Studio),但是一般而言,IDE 主要還是針對特定的程式語言而量身打造(例如 Visual Basic)。
引自 維基百科
編譯 vs 直譯
所謂的編譯,是指原始的程式碼 (source code) 會經由編譯器 (compiler) 轉換成目的碼 (object code) 後,再由連結器 (linker) 轉換成可執行的二進位碼,使用編譯器的語言稱為編譯式語言,C 和 C++ 就是編譯式語言的代表作。以及像是 C# , LISP, Pascal, VB, Delphi 等需要編譯器才能轉換成可執行碼 (executable code) 的語言。編譯式語言多半會是靜態語言 (static language),它們擁有事先定義的型別,型別檢查 (type check) 與高效能的執行速度等特性。
所謂的直譯,是指原始的程式碼只要經過直譯器 (Interpreter) 即可轉換成可執行碼,由於它們不需要經由編譯器,而是在執行時才會將原始碼直譯成執行碼,所以速度上會比編譯與連結器產生的執行碼要慢,效能會有一部份取決於直譯器的速度,而直譯式語言多半以動態語言 (dynamic language) 為主,具有靈活的型別處理 (鬆散型別),動態生成與程式彈性,但速度會比編譯式的要慢一些,像是 JavaScript, Python, Ruby, PHP, ASP 等等,都是直譯式語言。
使用編譯式語言產生的程式幾乎都是可獨立執行的,因為它們都是由 Compiler 進行型別/語意等檢查,以及經過連結器的處理,程式碼幾乎可以直接存取系統服務 (system service) 與 APIs,所以執行效率會特別好;直譯式語言則是必須依賴一個執行環境 (execution context),語言可用的功能由這個執行環境提供,例如 JavaScript 只能使用瀏覽器提供的功能,而 PHP 只能使用 php.exe 實作的功能一樣,它們無法獨立執行 (或是看起來像獨立,實際上卻是系統自動在背後建立執行環境,如 HTML Application)。
.NET Framework 本身的語言則是包含兩種成份 (Java 也是),一開始 .NET Framework 內的編譯器 (csc.exe, vbc.exe) 是扮演編譯器的角色,它會將程式編譯成中介碼 (Intermediate Code, Java 則是 bytecode),而在執行時,由 CLR (JVM) 進行即時編譯 (JIT Compilation),將中介碼轉換成機器碼 (Machine code),才可以在作業平台上執行,所以 CLR (JVM) 扮演的是直譯器的角色,而其執行環境則是整個作業系統,它亦有編譯式語言的特性,但速度會比純種的編譯式語言 (C/C++) 要慢一些,原因是在 JIT Compilation 在第一次執行時會啟動,以將程式轉成機器碼,而純種的編譯式語言則在編譯連結完成時就已經是機器碼,故不需要 JIT 處理。
編譯器通常也會被廠商利用來做一些特殊功能,例如 .NET 的 var, dynamic, LINQ, anonymous type, Lambda Expression, … 等等,編譯器魔術 (compiler magic) 會讓開發人員使用該語言撰寫程式時,能簡化程式撰寫的量,以加速程式的開發工作。
Build Tool 建構工具
建構工具概念
你需要的就是一套工具,能把你自動化構建的需求表示成可執行的順序的任務 (tasks),比如編譯源代碼,拷貝生成的 class 文件,組裝交付。每一個任務都是一個工作單元,任務的順序很重要,我們把任務和相互之間的依賴建模成一種有向無環圖,比如下面這個:
有向無環圖
包含兩個部分:
節點 (node):一個工作單元,在這裏就是一個任務,比如編譯源代碼
邊 (edge): 一個有方向的邊,表示相鄰節點之間的依賴關係,如果一個任務定義了依賴,這個依賴的任務要在這個任務之前執行。
構建工具的組成
1.Build File. 包含構建需要的配置,定義了項目的依賴關係,比如第三方庫的,以及以任務的形式存在的指令,定義了任務之間的先後順序。
2.Build inpus and outputs: 任務把輸入經過一系列步驟後產生輸出。
3. 依賴管理。