原始碼(source code)→編譯器→中繼語言(MSIL)→CLR→電腦看得懂的語言(Native code)
C#是一個程式語言, .NET則是平台框架,目前有 Windows平台專屬的.NET Framework 與跨平台的 .NET Core 兩種。目前兩個框架的支援性差距逐漸縮小中。
※註1:程式語言有分為直譯式與編譯式兩種,直譯式語言執行時會將程式碼一行一行變為機器碼並執行,執行速度較慢,但除錯速度較快,不需要編譯成中間碼,不能獨立執行。編譯式由於已經先編譯過了,執行速度較快,但除錯速度較慢,需要編譯成中間碼,可以獨立執行。
※註2:非託管程式碼是指由C/C++較底層的語言寫出的程式碼,譬如指標...等,由於未託管給CLR,需要由Programer自行回收分配的記憶體。
※註3:即時編譯是建立在虛擬機上的一種動態編譯編譯的方式,先將程式編譯為中間碼,在執行期以一行一行去翻譯為機器碼,結合了編譯式與直譯式特色。
※註4:Garbage Collection:一種自動記憶體管理的機制,目標是回收不再使用的物件、釋出其記憶體空間,讓記憶體可供未來的配置使用。另外也可以確保某個物件無法使用另一個物件的內容,藉以提供記憶體安全性。
C# 語言和 .NET Framework 簡介
釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係
電腦只認01, 如何從01一路翻譯到接近人類語言的程式?
程式語言是怎麼製作出來,底層是什麼,是低偕語言寫的嗎?
我們寫的語言是透過那個翻譯器,而這個翻譯器又是怎麼製作出來,他如何將if switch一層一層轉成01,微軟寫的windows常常會一直更新,但像java c# javascript,他們要增加新功能或發現有bug又要如何更新,還是他們一出來就是百分之百正確