The C Programming Language

The C Programming Language #

If you want to teach systems, don’t drum up the programmers, sort the issues, and make PRs.
Instead, teach them to yearn for the vast and endless C. - Antoine de Saint-Exupéry (With edits)

Note: This chapter is long and goes into a lot of detail. Feel free to gloss over parts with which you have experience in.

C is the de-facto programming language to do serious system serious programming. Why? Most kernels have their API accessible through C. The Linux kernel1 and the XNU kernel2 of which MacOS is based on are written in C and have C API - Application Programming Interface. The Windows Kernel uses C++, but doing system programming on that is much harder on windows that UNIX for novice system programmers. C doesn’t have abstractions like classes and Resource Acquisition Is Initialization (RAII) to clean up memory. C also gives you much more of an opportunity to shoot yourself in the foot, but it lets you do things at a much more fine-grained level.


  1. Love, Robert. 2010. Linux Kernel Development. 3rd ed. Addison-Wesley Professional. ↩︎

  2. Inc., Apple. 2017. “XNU Kernel.” GitHub Repository. https://github.com/apple/darwin-xnu; GitHub ↩︎