A curated collection of best learning resources on IT topics

All topics -> Languages -> C

C is a general-purpose programming language created in the early 1970s by Dennis Ritchie and Ken Thompson at Bell Labs. The development and success of C is tightly coupled with the that of the Unix operating system. Thompson created Unix in 1969, and in 1973, together with Ritchie, rewrote Unix from assembly to C. As Unix and later Unix-based operating systems spread, C gained adoption as well. C has been ranked among the top programming languages for decades and continues to be widely used today, primarily in system programming.

The ability to read and understand C code is a crucial skill for a software developer since C underlies most software systems that we build upon. Notable C codebases include Linux, Postgres, redis, nginx, and CPython.

The C Programming Language book written by Brian Kernighan and Dennis Ritchie in 1978 served as the de facto standard for the language for many years. In 1989 C was first standardized as ANSI C. Later revisions of the standard are maintained by ISO and include C99, C11, and C17.

The crucial companion to C is the C standard library. It provides macros, type definitions and functions for tasks such as string handling, mathematical computations, input/output processing, memory management, and several other operating system services. It's described by the ISO C standard. It's also described by POSIX, which makes it an essential part of any Unix-like operating system.

Links: C (Wikipedia), C standard library (Wikipedia), C17 standard, r/C_Programming.

Related topics: Unix.

Here's 4 amazing resources to learn C:

  1. The C Programming Language, 2nd edition (www.amazon.com)
    paid • book • by Brian Kernighan, Dennis Ritchie • 1988

    "Don't read any further until you have this book." The first edition, known as K&R, served as the de facto specification for C until the language was standardized. The second edition, with ANSI C updates, continues to be an excellent introduction to C. It covers all of C's essential features and contains readable references on the language and the standard library. Note, however, that you'll need to check other resources for recent C updates and guidance on the design of real-world C programs. Overall, K&R is an exemplar of technical writing produced by two greats in the field.

  2. Beej's Guide to C Programming (beej.us)
    free • book • by Brian “Beej Jorgensen” Hall • 2022

    This book is an excellent introduction to C for programmers coming from other languages. It covers all the features of modern C and provides practical advice on how to use them. It also includes a reference on the C standard library, complete with examples.

  3. 21st Century C, 2nd edition (www.oreilly.com)
    paid • book • by Ben Klemens • 2014

    This book focuses on the current state of software development using C and covers what other C books don’t – you'll learn how to build, test, debug, and document your C programs and how to take advantage of third-party libraries and modern C features and idioms to write maintainable C code.

  4. Expert C Programming (www.oreilly.com)
    paid • book • by Peter van der Linden • 1994

    This is a book for people who are already writing C programs and want to quickly pick up some of the insights and techniques of experts. It gives a historical perspective, demystifies C's quirks, and contains a lot of practical advice on writing C code. Despite the advanced material, it's an easy and entertaining read.