03-为什么要学习系统编程
1.1.1 为什么要学习系统编程
最近10年,不管是Web开发(如JavaScript)还是托管代码(如Java),应用编程的趋势都是逐渐远离系统级编程向高级开发发展。然而,这种开发趋势并非意味着系统编程的终结。实际上,依然需要有人来开发JavaScript解释器和Java虚拟机,这本身就是系统编程。此外,Python、Ruby或Scala程序员还是可以从系统编程中受益的,因为深入了解计算机灵魂的程序员在任何层次都能够编写出更好的代码。
虽然应用编程的趋势是逐渐远离系统级编程,绝大部分的UNIX和Linux代码还是属于系统级编程范畴,其中大部分是用C和C++实现的,主要是C库和内核的接口。另外,传统的系统编程——如Apache、bash、cp、Emacs、init、gcc、gdb、glibc、ls、mv、vim和X,也都不会很快过时。
系统编程通常包含内核开发,至少包括设备驱动编程。但是,和多数系统编程的书籍一样,本书并不讨论内核开发,而是专注于用户空间的系统级编程——即内核之上的所有内容(尽管了解内核对于理解本书大有裨益)。设备驱动编程是个很宽泛博大的主题,已经有很多书籍对此做了专门而又深入的探讨。
什么是系统级应用接口?在Linux上如何编写系统级应用?内核和C库到底提供了什么?如何优化代码?Linux上编程有什么技巧?和其他的UNIX版本相比,Linux提供了哪些精巧的系统调用?这些系统调用是如何工作的?本书将对这些问题一一进行探讨。