2010-12-03 155 views

回答

16

幾個因素應該在我的opinon都考慮

  1. 在你必須能夠達到低層次的東西,越來越接近現實世界的硬件系統程序設計語言。在應用程序語言中,有一種用語言設計的「虛擬世界」(希望更好,更容易互動),而且您只需要能夠應付這種情況。

  2. 在系統編程語言中,應該沒有性能方面的讓步。人們必須能夠編寫代碼來擠出硬件中的所有汁液。這不是應用程序編程語言中最大的問題,因爲實際編寫程序所需的時間起着更重要的作用。

  3. 因爲2系統編程語言可以自由地假定程序員沒有錯誤,所以不會有「運行時錯誤」警衛。例如,索引出陣列將意味着世界的盡頭,除非硬件免費提供這些檢查(但在這種情況下,您可以選擇更便宜或更快的硬件)。這個想法是,如果你認爲代碼是正確的,那麼爲檢查不可能的事情付出很小的代價是沒有意義的。另外一個系統編程語言不應該試圖阻止程序員做他/她有意做的事情......假設他/她知道這是正確的。在應用程序編程語言中,它被認爲很好地幫助程序員檢查代碼,並試圖強制代碼使用某些哲學模式。在應用程序編程語言中,例如執行速度,打字時間和代碼大小可能會被犧牲,試圖幫助程序員避免自己拍攝。

  4. 因爲3系統編程語言將更難通過實驗學習。從某種意義上說,它們是一種強大但危險的工具,應該仔細思考每一條語句,並且出於同樣的原因,它們是調試比較困難的語言。在應用程序編程語言中,相反,嘗試看看的方法可能是合理的(如果虛擬世界抽象不會泄漏太多),並且讓錯誤進入以後刪除它們被認爲是一個可行的選擇。

9

就像IT界很多東西一樣,這條線是模糊的。例如,C開始作爲一種系統編程語言(並且被用於實現Unix),但是它也被用於應用程序開發。儘管如此,顯然有一些語言比其他語言更適合於系統編程(例如,C/C++比COBOL/FORTRAN更適合系統編程)。同樣,有些語言更適合應用程序開發,而不是系統編程。 VB.NET。

上述示例中突出顯示的語言特性是系統編程語言(如C/C++)的低級功能(例如指針,位操作符等)。當然,這個老玩笑說C是一種「海」級語言(坐在集合層和「高」層之間)。

警告:我從OS開發人員/操作系統工具開發人員的角度來進行系統編程。

我認爲可以公平地說,儘管開發使用Java的操作系統的項目(雖然我相信大多數是本地編譯的,而不是字節代碼和JIT的/解釋),系統編程語言的目標是本機機器碼的目標平臺。因此,主要針對託管代碼/解釋代碼的語言不太可能用於系統編程。

無論如何,這確實是一個足以挑起無論是在支持和反對:)

5

這些都是不準確的概念,但在本質上一些評論,編程語言系統適用於編寫操作系統(讓他們有低級概念(如指針,與彙編器的集成,與內存相對應的數據類型和註冊組織),而應用程序編程語言更適合於編寫應用程序,因此它們通常使用更高級的概念來表示計算(例如OOP ,閉包,內置的複雜數據類型等)。

2

一般而言,系統編程語言的級別低於應用程序編程語言。但是,語言本身與它無關。它更多的是語言實現的細節。

例如,Pascal開始作爲教學語言的生活,並非常嚴格的應用程序..然而,它已演變成一種系統語言,並被用於創建早期版本的MacOS和Windows。

C#不是典型的系統語言,因爲它不能進行低級別的工作,儘管管理操作系統應運而生,但這條線是模糊的。

2

我不認爲這裏有最終答案。

Perl和Python來默認與幾乎所有的Linux發行版...都可以聯C ...都可以做的作業控制等「低層次」的任務......穿線等

任何語言,一組好的系統調用綁定和/或FFI應該像C或C++一樣具有基本的系統意識。

唯一的語言,我會打折爲系統語言是那些專門針對另一個平臺(JVM,CLR),並積極尋求防止本地交互