網頁開發術語

3年前 (2017-10-29) Yosheng 程式設計 0評論 已收錄 383℃

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) 會讓開發人員使用該語言撰寫程式時,能簡化程式撰寫的量,以加速程式的開發工作。

引自 [Programming] 編譯 vs 直譯

Build Tool 建構工具

建構工具概念

你需要的就是一套工具,能把你自動化構建的需求表示成可執行的順序的任務(tasks),比如編譯源代碼,拷貝生成的class文件,組裝交付。每一個任務都是一個工作單元,任務的順序很重要,我們把任務和相互之間的依賴建模成一種有向無環圖,比如下面這個:


有向無環圖


包含兩個部分:
節點(node):一個工作單元,在這裏就是一個任務,比如編譯源代碼
邊(edge): 一個有方向的邊,表示相鄰節點之間的依賴關係,如果一個任務定義了依賴,這個依賴的任務要在這個任務之前執行。

構建工具的組成

1.Build File. 包含構建需要的配置,定義了項目的依賴關係,比如第三方庫的,以及以任務的形式存在的指令,定義了任務之間的先後順序。
2.Build inpus and outputs: 任務把輸入經過一系列步驟後產生輸出。


3.依賴管理。


博主

擅長使用 C# 和 Java 開發項目,全棧開發工程師,前端主要使用 Vue 其次 Angular ,目前正在學習分布式架構,運維研發兼具,平時愛好鑽研技術並應用於實務當中,常駐於上海。

相關推薦

相逢就是有緣,留下足跡吧!