所有程序员都为计算机编写可执行代码,但使系统程序员与应用程序程序员不同的是他们编写的软件的目的。应用程序编程产生的软件使计算机的硬件为用户生成某种东西,无论是电子表格还是游戏的图形。系统编程产生的软件可以...
所有程序员都为计算机编写可执行代码,但使系统程序员与应用程序程序员不同的是他们编写的软件的目的。应用程序编程产生的软件使计算机的硬件为用户生成某种东西,无论是电子表格还是游戏的图形。系统编程产生的软件可以访问和控制计算机硬件和操作系统的内部工作。

系统程序员关心的是硬件组件(如硬盘驱动器)的功能。
应用程序编程通常包括发出系统命令,以利用计算机硬件和操作系统的基本功能,例如将特定数据存储在计算机的物理内存或硬盘驱动器上的文件中程序不关心硬盘或物理内存如何工作的细节。相反,系统程序员关心的是操作系统和硬件组件如何工作的细节。这使他们能够构建软件,对硬盘进行碎片整理并检查计算机物理内存的完整性。

软件工程师了解操作系统。
除了能够构建这些工具之外,系统程序员通常是操作系统核心功能的专家。所有程序员都熟悉系统调用、线程管理和输入/输出处理,但是系统编程要求软件工程师能够操作这些操作系统机制,这使得系统程序员能够执行专门的安装和自动化系统维护任务
为了在特定硬件配置上最大限度地提高应用程序的性能,还需要了解操作系统的核心。例如,非常繁忙的在线零售商需要他们的网站和交易处理系统能够高效、可靠地运行,尽可能的。利用他或她关于操作系统和硬件组件的内部机制的知识,例如如何使特定的操作系统优化其线程处理,或者哪些算法在哪些硬件组件上运行最快,系统程序员可以帮助微调应用程序的性能。
这种对硬件和操作系统组件内部工作原理的详细访问要求系统编程使用允许这种低级硬件访问的语言完成。如Java®、Python等语言™,或Ruby on Rails®是程序员称之为高级语言的东西。这意味着它们使应用程序编程更容易,因为它不让程序员处理硬件管理的细节。系统编程恰恰需要这种访问方式,因此系统程序员使用低级别的语言如C++或C++。。