Windows為什麼不用C#編寫,而是C++?它不配?看起來好像是的

也許很多人不理解為什麼Microsoft使用C ++而不是自己的C#編寫Windows?其實原因來說也算很簡單吧,首先Windows是在定義C#語言之前很久才開發的。即使當時可用,C#也不是用於實現作業系統的適當語言。

Windows為什麼不用C#編寫,而是C++?它不配?看起來好像是的

Windows桌面和伺服器作業系統的現代版本的程式碼庫始於1988年的NT專案,當時新的32位搶佔式多工作業系統的程式碼從零開始。選擇的程式語言主要是C,其中一些C ++用於GUI元件,以及一些組合語言。基於此程式碼的作業系統於1993年首次釋出,並帶有Windows NT Workstation和Windows NT Server的第一個版本。NT和2000的所有版本都基於此程式碼,Window Server的所有版本(1993年至今)以及從Windows XP開始的所有桌面Windows版本(2001年至今)都基於此程式碼。

Windows為什麼不用C#編寫,而是C++?它不配?看起來好像是的

Windows隨附的某些更高版本的使用者模式應用程式已用C#實現,但大多數系統仍使用C和C ++,並帶有一些組合語言。

在Windows NT專案啟動十二年後的2000年之前,還沒有完全定義C#語言。(嚴格來說,NT專案最初是NT OS / 2,但是當16位Windows 3進入市場時,該專案轉移到了以Windows為中心的焦點。)

C#通常不會編譯為本機程式碼。它被翻譯為中間CIL語言,然後在執行程式時進行解釋和或及時編譯。這種語言以及其他類似語言並不真正適合於實現作業系統,因為這些作業系統需要直接在硬體上執行,管理頁表,管理中斷等。C和C ++通常可編譯為高度最佳化的本機不需要執行時直譯器或即時編譯器的程式碼,更適合於實現作業系統。C#從未被設計為系統程式語言。在開發使用者模式應用程式和服務時,它的重點更多地放在安全性和生產率上。

Windows為什麼不用C#編寫,而是C++?它不配?看起來好像是的

順便說一句。NET Framework支援C#和其他語言,一部分以C#實現,一部分以C和C ++實現。它呼叫Windows作業系統提供的API。

即使今天有一個C#編譯器生成的高度最佳化的本機程式碼,但回過頭去重寫一個大型專案卻只是為了使其成為一種更新的程式語言,幾乎沒有任何意義。由於有成千上萬的程式碼行需要重寫和完全重新測試,因此成本和風險都很高,收益幾乎為零。做這樣的事情還沒有商業案例。只要現有語言得到完全支援並提供了出色的工具,實際上就沒有理由用“較新的”語言重寫程式碼。

Windows為什麼不用C#編寫,而是C++?它不配?看起來好像是的

最後,Microsoft從1975年的第一天起就從事程式語言業務。多年來,它的主要業務是為各種基於微處理器的系統開發程式語言直譯器,編譯器和彙編器。自1980年代以來,他們擁有自己的C和C ++編譯器以及其他語言(例如BASIC,FORTRAN等)。他們的C和C ++編譯器非常穩定和成熟,並且會不斷髮展,從而生成高度最佳化的機器程式碼。

Windows為什麼不用C#編寫,而是C++?它不配?看起來好像是的

也許很多人會懷疑我是機翻,然後呢,我想給大家說下,因為也會去看外國的一些文章,而這篇裡面有些理解是一位曾在Microsoft的Windows NT組工作的一位人員。所以很多時候,因為我自己的原因,翻譯的不好,所以還希望大家見諒。謝謝大家。