為什么使用C ++而不是C#編寫Windows?
也許很多人不理解為什么Microsoft使用C ++而不是自己的C#編寫Windows?其實原因來說也算很簡單吧,首先Windows是在定義C#語言之前很久才開發(fā)的。即使當(dāng)時可用,C#也不是用于實現(xiàn)操作系統(tǒng)的適當(dāng)語言。

Windows桌面和服務(wù)器操作系統(tǒng)的現(xiàn)代版本的代碼庫始于1988年的NT項目,當(dāng)時新的32位搶占式多任務(wù)操作系統(tǒng)的代碼從零開始。選擇的編程語言主要是C,其中一些C ++用于GUI組件,以及一些匯編語言。基于此代碼的操作系統(tǒng)于1993年首次發(fā)布,并帶有Windows NT Workstation和Windows NT Server的第一個版本。NT和2000的所有版本都基于此代碼,Window Server的所有版本(1993年至今)以及從Windows XP開始的所有桌面Windows版本(2001年至今)都基于此代碼。

Windows隨附的某些更高版本的用戶模式應(yīng)用程序已用C#實現(xiàn),但大多數(shù)系統(tǒng)仍使用C和C ++,并帶有一些匯編語言。
在Windows NT項目啟動十二年后的2000年之前,還沒有完全定義C#語言。(嚴(yán)格來說,NT項目最初是NT OS / 2,但是當(dāng)16位Windows 3進(jìn)入市場時,該項目轉(zhuǎn)移到了以Windows為中心的焦點。)
C#通常不會編譯為本機代碼。它被翻譯為中間CIL語言,然后在執(zhí)行程序時進(jìn)行解釋和或及時編譯。這種語言以及其他類似語言并不真正適合于實現(xiàn)操作系統(tǒng),因為這些操作系統(tǒng)需要直接在硬件上運行,管理頁表,管理中斷等。C和C ++通常可編譯為高度優(yōu)化的本機不需要運行時解釋器或即時編譯器的代碼,更適合于實現(xiàn)操作系統(tǒng)。C#從未被設(shè)計為系統(tǒng)編程語言。在開發(fā)用戶模式應(yīng)用程序和服務(wù)時,它的重點更多地放在安全性和生產(chǎn)率上。
順便說一句。NET Framework支持C#和其他語言,一部分以C#實現(xiàn),一部分以C和C ++實現(xiàn)。它調(diào)用Windows操作系統(tǒng)提供的API。
即使今天有一個C#編譯器生成的高度優(yōu)化的本機代碼,但回過頭去重寫一個大型項目卻只是為了使其成為一種更新的編程語言,幾乎沒有任何意義。由于有成千上萬的代碼行需要重寫和完全重新測試,因此成本和風(fēng)險都很高,收益幾乎為零。做這樣的事情還沒有商業(yè)案例。只要現(xiàn)有語言得到完全支持并提供了出色的工具,實際上就沒有理由用“較新的”語言重寫代碼。
最后,Microsoft從1975年的第一天起就從事編程語言業(yè)務(wù)。多年來,它的主要業(yè)務(wù)是為各種基于微處理器的系統(tǒng)開發(fā)編程語言解釋器,編譯器和匯編器。自1980年代以來,他們擁有自己的C和C ++編譯器以及其他語言(例如BASIC,F(xiàn)ORTRAN等)。他們的C和C ++編譯器非常穩(wěn)定和成熟,并且會不斷發(fā)展,從而生成高度優(yōu)化的機器代碼。

也許很多人會懷疑我是機翻,然后呢,我想給大家說下,因為也會去看外國的一些文章,而這篇里面有些理解是一位曾在Microsoft的Windows NT組工作的一位人員。