Here are 30 books that The C Programming Language fans have personally recommended if you like The C Programming Language. Shepherd is a community of 12,000+ authors and super readers sharing their favorite books with the world.

When you buy books, we may earn a commission that helps keep our lights on (or join the rebellion as a member).

Book cover of Gödel, Escher, Bach: An Eternal Golden Braid

Arthur O'Dwyer Author Of Mastering the C++17 STL

From my list on budding C plus plus software engineer.

Why am I passionate about this?

The art of computer programming is a lot like the art of writing: It's not just about what your program says but about how it says it. One of the reasons I like the C and C++ languages—which I picked up in the late 1990s and haven't put down since—is that, as compiled, non-sandboxed languages, they promise total control over the machine. Show me where you want each byte of data to go in memory; show me the machine instructions you want; and I can make C++ do that for you. 

Arthur's book list on budding C plus plus software engineer

Arthur O'Dwyer Why Arthur loves this book

Every "computer person" should read GEB at least once. Preferably in high school, when you still have the free time to dive deep into all the recreational math exercises. If you're already working 40-hour weeks and wonder who has time for Hofstadter's 750-page "metaphorical fugue on minds and machines," all I can say is: Better late than never!

By Douglas Hofstadter ,

Why should I read it?

16 authors picked Gödel, Escher, Bach as one of their favorite books, and they share why you should read it.

What is this book about?

Douglas Hofstadter's book is concerned directly with the nature of maps" or links between formal systems. However, according to Hofstadter, the formal system that underlies all mental activity transcends the system that supports it. If life can grow out of the formal chemical substrate of the cell, if consciousness can emerge out of a formal system of firing neurons, then so too will computers attain human intelligence. Goedel, Escher, Bach is a wonderful exploration of fascinating ideas at the heart of cognitive science: meaning, reduction, recursion, and much more.


If you love The C Programming Language...

Ad

Book cover of The High House

The High House by James Stoddard,

The Victorian mansion, Evenmere, is the mechanism that runs the universe.

The lamps must be lit, or the stars die. The clocks must be wound, or Time ceases. The Balance between Order and Chaos must be preserved, or Existence crumbles.

Appointed the Steward of Evenmere, Carter Anderson must learn the…

Book cover of The Design of Everyday Things

Arthur O'Dwyer Author Of Mastering the C++17 STL

From my list on budding C plus plus software engineer.

Why am I passionate about this?

The art of computer programming is a lot like the art of writing: It's not just about what your program says but about how it says it. One of the reasons I like the C and C++ languages—which I picked up in the late 1990s and haven't put down since—is that, as compiled, non-sandboxed languages, they promise total control over the machine. Show me where you want each byte of data to go in memory; show me the machine instructions you want; and I can make C++ do that for you. 

Arthur's book list on budding C plus plus software engineer

Arthur O'Dwyer Why Arthur loves this book

This book greatly influenced my philosophy around style. Norman's ostensible subject is the design of physical objects, like emergency exits, shower faucets, and refrigerators, but most of what he says is directly applicable to software design and API design, too.

For example: Whatever you expose or document about your interface, the user will take that and form a mental model of the implementation—and he'll program against that mental model, not against your documentation. So you'd better make sure that your interface—by exposing certain details and deemphasizing others, appropriate naming, and so on—suggests a mental model that will be useful to the user (even if it is not correct in every particular).

For example, a horizontal rod mounted on a door affords pushing (a bit of jargon that's entered my technical vocabulary), while a vertical rod affords pulling. If you use the design language of a horizontal rod, people will…

By Don Norman ,

Why should I read it?

5 authors picked The Design of Everyday Things as one of their favorite books, and they share why you should read it.

What is this book about?

Even the smartest among us can feel inept as we fail to figure out which light switch or oven burner to turn on, or whether to push, pull, or slide a door. The fault, argues this ingenious,even liberating,book, lies not in ourselves, but in product design that ignores the needs of users and the principles of cognitive psychology. The problems range from ambiguous and hidden controls to arbitrary relationships between controls and functions, coupled with a lack of feedback or other assistance and unreasonable demands on memorization. The Design of Everyday Things shows that good, usable design is possible. The…


Book cover of Smalltalk Best Practice Patterns

Philipp Fehre Author Of JavaScript Domain-Driven Design

From my list on learning from programming classics.

Why am I passionate about this?

Computers have fascinated me since my childhood, having fond memories of my dad's ZX81, but even so I played around I was never truly captured by the programming until I recognized it as a way of writing rather than raw engineering. Through my studies of media sciences I found my fascination with how language can shape perception, and through my work in developer advocacy, I found how communities are shaped as well. Now I am fascinated with how different programming languages can shape thinking, having had the opportunity to solve problems at large companies in nonmainstream languages.

Philipp's book list on learning from programming classics

Philipp Fehre Why Philipp loves this book

Smalltalk is not as common or popular as it once was, but the influence its design had on programming is hard to overstate.

Reading this book has changed how I think about object orientation, and how I design systems, learning the patterns of Smalltalk makes it clear what object oriented design is really intended to achieve.

By Kent Beck ,

Why should I read it?

2 authors picked Smalltalk Best Practice Patterns as one of their favorite books, and they share why you should read it.

What is this book about?

This classic book is the definitive real-world style guide for better Smalltalk programming. This author presents a set of patterns that organize all the informal experience successful Smalltalk programmers have learned the hard way. When programmers understand these patterns, they can write much more effective code. The concept of Smalltalk patterns is introduced, and the book explains why they work. Next, the book introduces proven patterns for working with methods, messages, state, collections, classes and formatting. Finally, the book walks through a development example utilizing patterns. For programmers, project managers, teachers and students -- both new and experienced. This book…


If you love Brian W. Kernighan...

Ad

Book cover of December on 5C4

December on 5C4 by Adam Strassberg,

Magical realism meets the magic of Christmas in this mix of Jewish, New Testament, and Santa stories–all reenacted in an urban psychiatric hospital!

On locked ward 5C4, Josh, a patient with many similarities to Jesus, is hospitalized concurrently with Nick, a patient with many similarities to Santa. The two argue…

Book cover of Software Tools in Pascal

Arnold Robbins Author Of Linux Programming by Example

From my list on for learning the Zen of Unix.

Why am I passionate about this?

I am a professional software developer and technical author, with a number of books published by O’Reilly and Prentice Hall. I have been working in the C / C++ / Unix / Linux world for over four decades. I am also the maintainer of the Free Software Foundation’s GNU Awk interpreter for the awk programming language. I have a passion for writing clear, correct, efficient, and portable code, and for applying the UNIX and Software Tools principles in my development. I hope that this book list will help you climb the learning curve of doing great Unix / Linux development.

Arnold's book list on for learning the Zen of Unix

Arnold Robbins Why Arnold loves this book

This book (an update to Software Tools by the same authors) codifies and instructs the principles by which the Unix / Linux toolset was designed. It emphasizes clear, robust code, and the building of tools, reusable, general purpose software components that can be hooked together to solve many kinds of programming and data management tasks. The lessons it teaches are timeless, and the current generation of programmers would be well served to try and learn them.

The original Software Tools was perhaps the single most influential software book that I ever read. It taught me how to think with the Unix mindset, how to make the best use of what the Unix system (and now Linux) offers, and how to focus on readability and maintainability in my own software.

By Brian Kernighan , P.J. Plauger ,

Why should I read it?

1 author picked Software Tools in Pascal as one of their favorite books, and they share why you should read it.

What is this book about?

With the same style and clarity that characterized their highly acclaimed The Elements of Programming Style and Software Tools, the authors have written Software Tools in Pascal to teach how to write good Pascal programs that make good tools. The programs contained in the book are not artificial, but are actual tools that have proved valuable in the production of other programs. Structured programming and top-down design are emphasized and applied to every program, as are principles of sound design, testing, efficiency, and portability. All of the programs are complete and have been tested directly from the text. The programs…


Book cover of Advanced Programming in the Unix Environment

Arnold Robbins Author Of Linux Programming by Example

From my list on for learning the Zen of Unix.

Why am I passionate about this?

I am a professional software developer and technical author, with a number of books published by O’Reilly and Prentice Hall. I have been working in the C / C++ / Unix / Linux world for over four decades. I am also the maintainer of the Free Software Foundation’s GNU Awk interpreter for the awk programming language. I have a passion for writing clear, correct, efficient, and portable code, and for applying the UNIX and Software Tools principles in my development. I hope that this book list will help you climb the learning curve of doing great Unix / Linux development.

Arnold's book list on for learning the Zen of Unix

Arnold Robbins Why Arnold loves this book

Modern Unix systems (including Linux) offer a wealth of APIs. This book provides detailed instruction, including sample code, on how to make the best use of them. It is a one-stop-shop for mastering the details of Unix programming in C.

I recommend the book because it is thorough, authoritative, and clearly written. Richard Stevens was a well-known author and consultant and his books are models of clear exposition. Steven Rago is an experienced Unix developer and author as well.

By W. Richard Stevens , Stephen Rago ,

Why should I read it?

1 author picked Advanced Programming in the Unix Environment as one of their favorite books, and they share why you should read it.

What is this book about?

For more than twenty years, serious C programmers have relied on one book for practical, in-depth knowledge of the programming interfaces that drive the UNIX and Linux kernels: W. Richard Stevens' Advanced Programming in the UNIX (R) Environment. Now, once again, Rich's colleague Steve Rago has thoroughly updated this classic work. The new third edition supports today's leading platforms, reflects new technical advances and best practices, and aligns with Version 4 of the Single UNIX Specification.



Steve carefully retains the spirit and approach that have made this book so valuable. Building on Rich's pioneering work, he begins with files, directories,…


Book cover of Lions' Commentary on Unix

Arnold Robbins Author Of Linux Programming by Example

From my list on for learning the Zen of Unix.

Why am I passionate about this?

I am a professional software developer and technical author, with a number of books published by O’Reilly and Prentice Hall. I have been working in the C / C++ / Unix / Linux world for over four decades. I am also the maintainer of the Free Software Foundation’s GNU Awk interpreter for the awk programming language. I have a passion for writing clear, correct, efficient, and portable code, and for applying the UNIX and Software Tools principles in my development. I hope that this book list will help you climb the learning curve of doing great Unix / Linux development.

Arnold's book list on for learning the Zen of Unix

Arnold Robbins Why Arnold loves this book

The previous books all cover programming at the user level – how to write regular programs for a Unix / Linux system. But what about the operating system itself?

This classic work explains the operating system code of the 6th Edition Unix system, which ran on Digital Equipment Corporation (DEC) PDP-11 systems. If you want to learn the basics of operating system implementation by reading real, working code, this is the place to start.

This is worth reading, even if you never intend to write kernel code, since an understanding of how the operating system works makes it easier for you to correctly use the system calls (APIs) that the operating system provides.

By John Lions ,

Why should I read it?

1 author picked Lions' Commentary on Unix as one of their favorite books, and they share why you should read it.

What is this book about?

The most famous suppressed book in computer history! * Used as an Operating System textbook at MIT"After 20 years, this is still the best expostion of the workings of a 'real' operating system." --- Ken Thompson (Developer of the UNIX operating system)After years of suppression (as trade secrets) by various owners of the UNIX code, this tome has been re-released, and we owe a debt to all involved in making this happen. I consider this to be the single most important book of 1996. Unix Review, June 1997"The Lions book", cherished by UNIX hackers and widely circulated as a photocopied…


If you love The C Programming Language...

Ad

Book cover of Trusting Her Duke

Trusting Her Duke by Arietta Richmond,

A Duke with rigid opinions, a Lady whose beliefs conflict with his, a long disputed parcel of land, a conniving neighbour, a desperate collaboration, a failure of trust, a love found despite it all.

Alexander Cavendish, Duke of Ravensworth, returned from war to find that his father and brother had…

Book cover of The Design of the Unix Operating System

Arnold Robbins Author Of Linux Programming by Example

From my list on for learning the Zen of Unix.

Why am I passionate about this?

I am a professional software developer and technical author, with a number of books published by O’Reilly and Prentice Hall. I have been working in the C / C++ / Unix / Linux world for over four decades. I am also the maintainer of the Free Software Foundation’s GNU Awk interpreter for the awk programming language. I have a passion for writing clear, correct, efficient, and portable code, and for applying the UNIX and Software Tools principles in my development. I hope that this book list will help you climb the learning curve of doing great Unix / Linux development.

Arnold's book list on for learning the Zen of Unix

Arnold Robbins Why Arnold loves this book

This book looks at UNIX System V Release 2 and Release 3, describing a more modern version of Unix.  It presents pseudo code of the internal algorithms with diagrams of the major data structures used by the system.

Here too, knowing how the operating system works will help you write better code to take advantage of the services provided to you.

Supposedly, Linus Torvalds read this book before he produced the first Linux kernel!

By Maurice Bach ,

Why should I read it?

1 author picked The Design of the Unix Operating System as one of their favorite books, and they share why you should read it.

What is this book about?

In this timely new book, Maurice J. Bach traces the popularity of the UNIX system throughout the computer industry. The author describes the internal algorithms and structures that form the basis of the operating system (the kernel) and their relationship to the programmer interface. Among its key features, the book: *Describes the outline of the kernel architecture *Introduces the system buffer cache mechanism *Includes data structures and algorithms used internally by the file system *Covers the system calls that provide the user interface to the file system *Defines the context of a process and investigates the internal kernel primitives that…


Book cover of Gödel's Proof

David B. Black Author Of Wartime Software

From my list on teaching and inspiring the best programmers.

Why am I passionate about this?

I started programming in high school and wrote software in many domains for 30 years, from the early ARPA-net to massive credit card software. I wrote a FORTRAN compiler with one assistant in a year. I got hassled to do proper project management. Nightmare. It was all about inflated expectations instead of moving fast and winning. Then in 25 years of venture capital investing, I learned from many young companies how the little startups built quickly and well things that giants like Google literally could not get done. This book and my others spell out what I learned from the little guys who beat the giants.

David's book list on teaching and inspiring the best programmers

David B. Black Why David loves this book

Nagel’s book is the most understandable explanation I’ve found about one of the most cosmically seminal math proofs: Godel’s incompleteness theorem.

It takes the idea of recursion and self-reference to the ultimate conclusion about truth, understanding, and boundaries of existence. This may sound hootie-tootie, but think of the sequence of abstraction in math: arithmetic, algebra, calculus, etc.

Once you add in recursion (self-reference), you’ve got the most important concepts underlying true understanding and productivity in software – something never discussed in computer science, and certainly not in practical programming.

Think about the so-called Von Neumann computer architecture, which underlies all modern computers – instructions are data, stored in the same place as ordinary data, and some instructions write data that are instructions. This is recursion taken to the next level. 

By Ernest Nagel ,

Why should I read it?

2 authors picked Gödel's Proof as one of their favorite books, and they share why you should read it.

What is this book about?

An accessible explanation of Kurt Goedel's groundbreaking work in mathematical logic
In 1931 Kurt Goedel published his fundamental paper, "On Formally Undecidable Propositions of Principia Mathematica and Related Systems." This revolutionary paper challenged certain basic assumptions underlying much research in mathematics and logic. Goedel received public recognition of his work in 1951 when he was awarded the first Albert Einstein Award for achievement in the natural sciences-perhaps the highest award of its kind in the United States. The award committee described his work in mathematical logic as "one of the greatest contributions to the sciences in recent times."
However, few…


Book cover of Erlang Programming: A Concurrent Approach to Software Development

Philipp Fehre Author Of JavaScript Domain-Driven Design

From my list on learning from programming classics.

Why am I passionate about this?

Computers have fascinated me since my childhood, having fond memories of my dad's ZX81, but even so I played around I was never truly captured by the programming until I recognized it as a way of writing rather than raw engineering. Through my studies of media sciences I found my fascination with how language can shape perception, and through my work in developer advocacy, I found how communities are shaped as well. Now I am fascinated with how different programming languages can shape thinking, having had the opportunity to solve problems at large companies in nonmainstream languages.

Philipp's book list on learning from programming classics

Philipp Fehre Why Philipp loves this book

Distributed systems are everywhere now, but long before there were telephony switches, and Erlang was built to make those work.

Reading this book gave me not only an understanding about Erlang, but the language and understanding to talk and think about systems which are distributed from the beginning, not as an afterthought. For me personally Erlang/OTP is the DSL for dystributed system and the patterns implemented have applications every time I think about distributed systems now.

By Francesco Cesarini , Simon Thompson ,

Why should I read it?

1 author picked Erlang Programming as one of their favorite books, and they share why you should read it.

What is this book about?

A Concurrent Approach to Software Development


If you love Brian W. Kernighan...

Ad

Book cover of Aggressor

Aggressor by FX Holden,

It is April 1st, 2038. Day 60 of China's blockade of the rebel island of Taiwan.

The US government has agreed to provide Taiwan with a weapons system so advanced that it can disrupt the balance of power in the region. But what pilot would be crazy enough to run…

Book cover of Land Of Lisp: Learn to Program in Lisp, One Game at a Time!

Philipp Fehre Author Of JavaScript Domain-Driven Design

From my list on learning from programming classics.

Why am I passionate about this?

Computers have fascinated me since my childhood, having fond memories of my dad's ZX81, but even so I played around I was never truly captured by the programming until I recognized it as a way of writing rather than raw engineering. Through my studies of media sciences I found my fascination with how language can shape perception, and through my work in developer advocacy, I found how communities are shaped as well. Now I am fascinated with how different programming languages can shape thinking, having had the opportunity to solve problems at large companies in nonmainstream languages.

Philipp's book list on learning from programming classics

Philipp Fehre Why Philipp loves this book

Lisp will always have a special place in my brain, not language can be as expressive and molded to what the programmer wants to do in my opinion.

Learning a programming language can be a bit dry, but not in the case of Land of Lisp, honestly I just found this book to be fun from beginning to end, and even so I was already familiar with Lisp before reading it I actually followed all the way through not skipping a page.

Yes Lisp is hardly in use these days, but if you know it you will find its concepts popping up all over the place and this is why knowing it is so useful.

By Conrad Barski ,

Why should I read it?

1 author picked Land Of Lisp as one of their favorite books, and they share why you should read it.

What is this book about?

Lisp has been hailed as the world s most powerful programming language, but its cryptic syntax and academic reputation can be enough to scare off even experienced programmers. Those dark days are finally over Land of Lisp brings the power of functional programming to the people! With his brilliantly quirky comics and out-of-this-world games, longtime Lisper Conrad Barski teaches you the mysteries of Common Lisp. You ll start with the basics, like list manipulation, I/O, and recursion, then move on to more complex topics like macros, higher order programming, and domain-specific languages. Then, when your brain overheats, you can kick…


Book cover of Gödel, Escher, Bach: An Eternal Golden Braid
Book cover of The Design of Everyday Things
Book cover of Smalltalk Best Practice Patterns

Share your top 3 reads of 2025!

And get a beautiful page showing off your 3 favorite reads.

1,210

readers submitted
so far, will you?

5 book lists we think you will like!

Interested in operating system, software engineering, and ninjas?

Operating System 11 books
Ninjas 24 books