2010-11-05 126 views
5

的去跟2009年PDF有評論,說明爲什麼他們想出了Go語言:「系統語言」是什麼意思?

 
No new major systems language in a decade. 

什麼是系統語言的含義是什麼?

  • 是否應該通過生成本地二進制文件在目標系統上運行的語言?
  • 它是一種可以自行構建操作系統的語言嗎?

我可以看到C#/ Java不是系統語言,而是C/C++。

回答

10

這是一個粗略的,非正式的區別,但其思想是有針對於開發收縮包裝業務應用程序的程序員的「應用程序編程語言」,以及針對編程其他程序員工具的程序員的「系統程序設計語言」編譯器等)以及低級別軟件(如操作系統內核,設備驅動程序等)。

簡而言之,大多數(最近發明的,無論如何)語言都是爲了更容易開發面向用戶的軟件來處理與一些非計算領域---金融,工程等。系統編程語言是那些,如C,FORTH,Go等,其打算或至少適合於計算領域中的編程。

這些經常(但並非總是)的特性編譯爲本機代碼,寬鬆類型系統允許通過指針或等效構造進行廣泛的「雙向」和非託管內存訪問。

+0

我當然不明白爲什麼非託管內存應該是這裏的一個功能。你可以管理內存和指針。 – 2010-11-09 13:50:38

+1

@ Matthieu M .:對,但這裏的關鍵特性是非託管內存訪問,而不是指針。認爲設備驅動程序,操作系統內核等 - 在某些時候,您需要讀寫任意內存位置的能力。此外,任何允許使用指針的內存管理語言(即代表內存位置的算術類型)都會執行一些主要的運行時檢查,這與大多數人在考慮「指針」時不一樣。 – 2010-11-09 14:04:05

3

Look here?對不起,如果這是一個扔掉的鏈接,但真的這應該是你需要的一切。除非你要求更具體的東西。

C#絕對不是一個系統語言的原因是它對.NET的依賴。

+0

如果[.NET的一個「系統編程」子集是內核的一部分(只是另一個引導步驟)? ;-)另外,在技術上,C#不需要.NET(C#只是一種語言規範:VS/.NET是一種實現 - 包括有用的庫 - 而Mono是一種競爭的編譯器/運行時)。 – 2010-11-05 19:44:59

+0

是的兩個好點 – 2010-11-05 19:53:22