簡體   English   中英

系統編程語言與應用程序編程語言的區別

[英]Difference between Systems programming language and Application programming languages

systems programming languageApplication programming language之間有什么區別?

我的意見中應該考慮一些因素

  1. 在系統編程語言中,您必須能夠達到低級別的東西,接近真實的硬件世界。 在應用程序語言中,有一種“虛擬世界”(希望更好,更容易與之交互),它是用語言設計的,你只需要能夠應對這種情況。

  2. 在系統編程語言中,在性能方面不應該有任何讓步。 一個人必須能夠編寫能夠從硬件中擠出所有果汁的代碼。 這不是應用程序編程語言中最大的問題,實際編寫程序所需的時間起着更大的作用。

  3. 由於2,系統編程語言可以自由地假設程序員沒有錯誤,因此不存在“運行時錯誤”保護。 例如,從數組中索引將意味着世界末日,除非硬件免費提供這些檢查(但在這種情況下,您可能會選擇更便宜或更快的硬件)。 我們的想法是,如果你認為代碼是正確的,那么即使支付一小筆費用來檢查不可能的代碼也沒有意義。 系統編程語言也不應該試圖禁止程序員做他/她想做的事情......假設他/她知道這是正確的事情。 在應用程序編程語言中,它被認為可以幫助程序員檢查代碼並試圖強制代碼使用某些哲學模式。 在應用程序編程語言中,可以犧牲諸如執行速度,打字時間和代碼大小之類的東西來幫助程序員避免自己拍攝。

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

與IT中的許多事情一樣,這條線很模糊。 例如,C作為一種系統編程語言開始其生命(並用於實現Unix),但它也曾用於應用程序開發。

話雖如此,顯然有些語言比其他語言更適合系統編程(例如,C / C ++比COBOL / FORTRAN更適合系統編程)。 同樣,有些語言更適合應用程序開發而不是系統編程,例如。 VB.NET。

從上面的示例中脫穎而出的語言特性是系統編程語言(如C / C ++)的低級特性(例如指針,位操作運算符等)。 當然有一個老笑話,C是一種“海”級語言(位於匯編級別和“高級”級別之間)。

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

我認為可以公平地說,盡管開發使用Java的操作系統的項目(盡管我認為主要是本機編譯,而不是字節代碼和JIT /解釋),但系統編程語言針對其目標平台的本機機器代碼。 因此,主要針對托管代碼/解釋代碼的語言不太可能用於系統編程。

無論如何,這肯定足以激起支持和反對的一些評論:)

這些不是確切的概念,但實質上,系統編程語言適合編寫操作系統(因此它們具有低級概念,如指針,與匯編程序集成,數據類型對應於內存和寄存器組織),而應用程序編程語言更適合編寫應用程序,因此它們通常使用更高級別的概念來表示計算(例如OOP,閉包,內置的復雜數據類型等)。

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

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

C#不是,通常是一種系統語言,因為它無法進行低級別的工作,盡管隨着托管操作系統的出現,這條線也很模糊。

我不認為這里有最后的答案。

默認情況下,perl和python幾乎每個Linux發行版都有...兩者都可以內聯C ...都可以完成作業控制和其他“低級”任務......線程等

任何具有良好系統調用綁定和/或FFI的語言都應該像C或C ++一樣從根本上系統感知。

作為系統語言我唯一會打折的語言是那些專門針對另一個平台(jvm,clr)並積極尋求阻止本機交互的語言

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM