所有程序員都為計算機編寫可執行代碼,但使系統程序員與應用程序程序員不同的是他們編寫的軟件的目的。應用程序編程產生的軟件使計算機的硬件為用戶生成某種東西,無論是電子表格還是游戲的圖形。系統編程產生的軟件可以...
所有程序員都為計算機編寫可執行代碼,但使系統程序員與應用程序程序員不同的是他們編寫的軟件的目的。應用程序編程產生的軟件使計算機的硬件為用戶生成某種東西,無論是電子表格還是游戲的圖形。系統編程產生的軟件可以訪問和控制計算機硬件和操作系統的內部工作。

系統程序員關心的是硬件組件(如硬盤驅動器)的功能。
應用程序編程通常包括發出系統命令,以利用計算機硬件和操作系統的基本功能,例如將特定數據存儲在計算機的物理內存或硬盤驅動器上的文件中程序不關心硬盤或物理內存如何工作的細節。相反,系統程序員關心的是操作系統和硬件組件如何工作的細節。這使他們能夠構建軟件,對硬盤進行碎片整理并檢查計算機物理內存的完整性。

軟件工程師了解操作系統。
除了能夠構建這些工具之外,系統程序員通常是操作系統核心功能的專家。所有程序員都熟悉系統調用、線程管理和輸入/輸出處理,但是系統編程要求軟件工程師能夠操作這些操作系統機制,這使得系統程序員能夠執行專門的安裝和自動化系統維護任務
為了在特定硬件配置上最大限度地提高應用程序的性能,還需要了解操作系統的核心。例如,非常繁忙的在線零售商需要他們的網站和交易處理系統能夠高效、可靠地運行,盡可能的。利用他或她關于操作系統和硬件組件的內部機制的知識,例如如何使特定的操作系統優化其線程處理,或者哪些算法在哪些硬件組件上運行最快,系統程序員可以幫助微調應用程序的性能。
這種對硬件和操作系統組件內部工作原理的詳細訪問要求系統編程使用允許這種低級硬件訪問的語言完成。如Java?、Python等語言?,或Ruby on Rails?是程序員稱之為高級語言的東西。這意味著它們使應用程序編程更容易,因為它不讓程序員處理硬件管理的細節。系統編程恰恰需要這種訪問方式,因此系統程序員使用低級別的語言如C++或C++。。