Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of The C companion

    The C companion

    Allen I. Holub · 1987

    Programming
    Open LibraryAmazon
    Stats for nerds
    3recommend
    7mentions
    3people
    2013–2026years
    100% recommend

    Mentions per year

    20132015201720192021202320252026

    What Hacker News says

    1. rramadassOct 2026
      > In C the minimalism comes from providing only the minimal set of things that are available in most (maybe all) architectures (the Von Neumann paradigm), like linear memory, a simple function calling convention, close mapping to Assembly operations etc.

      This is beautifully illustrated in the old classic The C Companion by Allen Holub which overviews a simple abstract demo architecture and code generated for it. This is a small book (in the vein of K&R C) but contains enough illuminating info. for a programmer.

      thread
    2. rramadassOct 2022
      I would like to add two more to your recommendations;

      1) An old classic to understand low-level C "System" interface: The C Companion by Allen Holub.

      2) Followup with the more modern Computer Systems: A Programmer's Perspective by Randal Bryant and David O'Hallaron.

      thread
    3. rramadassJun 2021
      "Systems Programming" from a Application Developer's pov involves knowledge of;

        * Low-level languages, compiler runtimes, toolchains and libraries.
        * OS system call apis. 
        * Concurrency. 
        * Networking.
      
      You need books/papers which will teach and walk you through sample idioms and applications in the above domains. A prerequisite is fluency in the C language. With that in mind the following are recommended (some are old books which you can buy used and cheap wherever possible);

      * Computer Systems: A Programmer's Perspective by Bryant and O'Hallaron.

      * The C Companion by Allen Holub. A gem of an oldie.

      * ELF: From the Programmer's Perspective; a paper by Hongjiu Lu.

      * UNIX Network Programming by Richard Stevens. Initially, get the old 1st edition since it contains TCP/IP, IPC etc. all in one volume.

      * Advanced UNIX Programming by Marc Rochkind.

      * Advanced programming in the UNIX Environment by Richard Stevens.

      * UNIX Systems Programming by Robbins and Robbins.

      * Programming for the Real World, POSIX.4 by Bill Gallmeister.

      thread
    4. rramadassApr 2020
      I suggest The C Companion by Allen Holub for getting an idea of "behind the scenes".

      For a more modern look, i suggest Computer Systems: A Programmer's Perspective by Bryant and O'Halloran

      Of course, you would need to pick and adapt the content for your students.

      thread
    5. rramadassJan 2019
      "Systems Programming" at the minimum, requires knowledge of Language internals, Runtimes, Compiler Toolchains, OS internals, Drivers, Computer Architecture/Organization, CPU/Multiprocessors and Networking. There are other domains like Security, Parallel/Distributed Processing etc which are cross-functional or orthogonal to the above and can be focused on as needed.

      But be warned, earning potential-wise you may lose out(unless you get lucky) to the latest whiz-bang Web/Mobile technology/framework brouhaha. That is the nature of the market. However i consider that the satisfaction of learning and "knowing" how things work, more than makes up for the small loss in earning potential. This technology is also more fundamental and stable and thus will not go away anytime soon.

      I have found the following papers/books (somewhat different from the most commonly cited) useful in my study;

      Languages: Fluency in C is a must. It is THE "portable assembly" language and is available on everything from 8-bit MCUs to multicore servers. You can also link C modules to everything under the sun thus allowing you to extend almost any other language. C++ is also needed; but judicious usage as a "better C" rather than heavy-duty OOP/Generic/Template-mataprogramming madness.

      - Computer Systems: A Programmer's Perspective 3rd ed. based on x86-64. You might also want to get the 1st ed. which is based on 32-bit x86. These books cover the HW/SW interface and thus includes almost all the topics under "Systems Programming".

      - The C Companion by Allen Holub.

      - Inside the C++ object model by Stan Lippman.

      Tools/Toolchain: Knowledge of the GCC toolchain is a must.

      - The Definitive guide to GCC by Hagen

      - ELF: A Programmer's perspective; paper by H.J.Liu

      - C++ Under the hood; MSDN article by Jan Gray

      - The Practice of Programming by Kernighan and Pike.

      OS/Kernel/Drivers:

      - UNIX Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers by Curt Schimmel.

      - Linux Kernel Development 3rd ed. by Robert Love.

      - Essential Linux Device Drivers by Venkateswaran.

      - Embedded Linux Primer 2nd ed. by Hallinan

      - The Unix Programming Environment by Kernighan and Pike

      - Advanced Unix Programming 2nd ed. by Rochkind

      Computer Architecture/Organization

      - Modern Processor Design: Fundamentals of Superscalear Processors by Shen and Lipasti

      - Computer System Design: System-on-Chip by Flynn and Luk

      Parallel/Distributed processing:

      - Foundations of Multithreaded, Parallel, and Distributed Programming by Andrews

      - The Art of Multiprocessor Programming by Herlihy and Shavit.

      Bare-metal Embedded: Where the "rubber meets the road"

      - Embedded Systems Architecture: Explore architectural concepts, pragmatic design patterns, and best practices to produce robust systems by Lacamera

      - Patterns for Time-Triggered Embedded Systems by Pont.

      thread
    6. salimmadjdNov 2014
      His book the C Companion [1]

      Really helped me get a deep understanding of C. Sadly, I haven't touched C for such a long that I've forgotten most of it. I highly recommended it for anyone who has a basic knowledge of C and wants to get deeper.

      [1] http://www.amazon.com/C-Companion-Allen-I-Holub/dp/013109786...

      thread

    Related

    Cover of Hands-On Network Programming with C
    2022–2024

    Hands-On Network Programming with C

    Lewis Van Winkle
    2 recommend · 2
    Fluent CChristopher Preschern
    2022–2026

    Fluent C

    Christopher Preschern
    3 recommend · 6
    Cover of Practical UNIX programming
    2021–2024

    Practical UNIX programming

    Kay A. Robbins
    2 recommend · 2
    Cover of Embedded C
    2010–2024

    Embedded C

    Michael J. Pont
    1 recommend · 3
    Cover of Obfuscated C and other mysteries
    2011–2024

    Obfuscated C and other mysteries

    Don Libes
    4 recommend · 7
    Cover of Object-oriented programming
    2012–2026

    Object-oriented programming

    Brad J. Cox
    4 recommend · 17
    Cover of Compiler design in C
    2011–2026

    Compiler design in C

    Allen I. Holub
    11 recommend · 28
    Cover of Advanced UNIX programming
    2010–2024

    Advanced UNIX programming

    Marc J. Rochkind
    12 recommend · 26