我从来不明白系统编程是什么意思。通常给出的定义是"...doing一些接近Os的东西或扩展Os特性.“。
直接使用Windows而不是某些库来表示do文件i/o使其成为系统编程吗?是在编写Android操作系统编程吗?如果我写的东西可以通过控制台公开linux内核,比如Android上的应用程序,我是在做系统编程吗?如果我正在编写软件来控制洗衣机,我是在编写系统编程吗?
我是一个程序初学者,这让我困惑不已。请解释它与“应用程序编程”的对比。
发布于 2012-06-05 14:47:06
我个人喜欢维基百科的定义:
系统编程(或系统编程)是对系统软件进行编程的活动。与应用程序编程相比,系统编程的主要区别在于,应用程序编程的目的是生产向用户提供服务的软件(例如字处理器),而系统编程的目的是生产向计算机硬件(例如磁盘碎片整理器)提供服务的软件。它需要更高程度的硬件意识。
发布于 2012-06-05 13:31:33
有几个问题,你可以问自己,以获得实践,在决定这个问题。
troff已经移植到几乎没有什么变化的任何系统上,所以它们是应用程序,尽管它们位于人们通常使用的工具链的底部。TeX将其输出写入的文件系统(例如UFS或VFAT )是一个边框。如果一个文件系统非常棒,你可以将它移植到不同的操作系统上,但通常人们只会接受一些很棒的想法,并为自己的操作系统编写自己的文件系统。这使得文件系统软件。对于您的问题,编写Android操作系统绝对是系统编程。编写使用Windows调用的程序是应用程序编程。它不像使用跨平台库(如SDL或OpenGL )那样可移植,但原则上可以移植,它是第三方代码,并且在用户空间中运行。一个公开Linux内核状态的控制台应用程序是一个有趣的思考实验。我肯定地说,它涉及到系统编程,因为您必须了解Linux的结构(请注意,"Linux“只是内核,而不是发行版)才能编写,甚至可能使用它!
发布于 2012-06-05 14:51:11
简而言之:编写扩展或增强OS功能的软件,比如驱动程序、系统实用程序更新到OS‘OS,甚至是全新的OS’OS。
它主要涉及内存管理;最广泛意义上的I/O操作,如网络、文件访问和设备管理;进程管理(多任务处理、进程管理等);用户<->系统交互方法(包括进出)和用户管理。基本上,所有不是应用程序的操作系统的一部分都是系统编程。
https://softwareengineering.stackexchange.com/questions/151610
复制相似问题