Skip to main content

REDMADMEDIA 網誌

回前頁
編譯語言與直譯語言 - 當下科技

編譯語言與直譯語言

· · 專欄: 當下科技

初學電腦程式語言時,最感到奇怪的,不是程式本身,這方面照跟就是了;但不同的電腦語言,會有不同的框架,譬如Android Studio,我常碰到的技術問題都在Gradle裏,但我根本不知Gradle 是甚麼,有何功能扮演?要了解這方面,就要明白甚麽叫編譯語言和直譯語言。

編譯語言(Complied Language)在程式執行時先會透過編譯器將你的程式編譯成電腦看得懂的機器碼,譬如C++所編譯好的檔案就是我們在Windows裏的.exe檔案,編譯語言多數是靜態語言。他們會事先定義變數類別和做類別檢查等等,典型的編譯語言除卻C++外,還有 C、Rust、Go、Visual Basic、Swift、Obj-C等等。

直譯語言(Interpreted Language)的執行器會將一行一行的程式碼直接編譯成機器碼,讓程式的類別檢測更靈活,但是緩慢的運行速度是直譯語言最大的壞處,最典型的直譯語言有Javascript和Python。

要注意的是,編譯語言的可執行檔(如C++的.exe 檔)通常是可以獨立運行的,但直譯語言則需要有一個適合的執行環境或者說是一個VM,才可以執行,例如Python3程式碼便需要在安裝了Python3的電腦中才可以運行,也就是說python3 程序不可能在舊python2電腦中運行了;又例如 JavaScript 只能使用瀏覽器提供的功能,它無法獨立執行 (看起來像獨立執行,實際上卻是系統自動在背後建立執行環境,如 Chrome 的V8這個JavaScript 執行引擎)。

反之,C++17雖然也只能在新電腦中編譯,但他的可執行檔甚至連不支援C++的電腦都可以運行。然而,編譯語言在使用Library/Modules的時候,除了下載下來,還需要用一個建構系統去連結不同的函式庫和你的不同程式檔,如在C++當中有CMake ,在Rust中則有Cargo,而Java 的其中一個建構系統就是Gradle。

程式師為了改善編譯語言以及直譯語言的缺點,因而發展出即時編譯的技術,這種技術混合了編譯語言與直譯語言的優點,如同編譯語言,會先把程式原始碼編譯成中介碼 (Bytecode)。到執行期時,再將中介碼(bytecode)直譯,之後執行。使用即時編譯技術的語言會比純編譯語言來得慢一些,但是卻又擁有直譯語言的特性,代表語言有 Java和C#。

還有一款叫組譯語言,對應粒CPU內核的基本指令集,是針對電腦的基作操作而已,不太重要囉,可以不理。

0 likes

推薦文章

從四川到韓國:一碗中國泡菜如何征服世界餐桌?

從四川到韓國:一碗中國泡菜如何征服世界餐桌?

在世界美食的舞台上,有一道看似平凡卻又極具魅力的佳餚,它跨越山海,從中國四川走向韓國,甚至征服了全球無數食客的味蕾,它就是泡菜。這碗小小的泡菜,不僅承載著千年傳統工藝的智慧,還蘊含著豐富的文化內涵與…

「一個榴槤三隻雞」,什麼人適合食用榴槤來進補和怎樣進食才是最好?那類人仕不適合食榴槤呢?- Mark 哥醫師

「一個榴槤三隻雞」,什麼人適合食用榴槤來進補和怎樣進食才是最好?那類人仕不適合食榴槤呢?- Mark 哥醫師

俗語「榴槤三隻雞」形象地比喻了榴槤的營養,價值極高,一般人甚至認為食一個榴槤的滋補效果勝過食三隻雞的滋補效果。筆者在這裡要告知讀者不要完全相信「俗話」,其實,能否食用榴槤進補是需要根據進食者的個人體…

櫻花優先的京都哲學之道

櫻花優先的京都哲學之道

不要被哲學之道這個滿有文氣的名字騙了,它只是一條鄰近京都大學的沿河小道,沿著琵琶湖疏水而建,從銀閣寺延伸至南禪寺,全長2公里。坦白說,如果你在冬天或夏天來訪,這處相對較單調,只有枯枝和綠意相伴。 …

留言 (0)

還沒有留言,成為第一個留言的人吧!

發表留言

您必須登入才能留言。