01Overview
In 1972 Ritchie designed C at Bell Labs to rewrite Unix. It inherited the economy of B and BCPL and added types and structs. In 1978 Kernighan and Ritchie published The C Programming Language, which served both as a textbook and as the de facto standard.
C’s philosophy is to trust the programmer: pointers address memory directly, arrays are unchecked, conversions are free. That made it fast and flexible — and made buffer overflows the dominant vulnerability for decades. ANSI C standardised it in 1989, and C is still the first choice for kernels, embedded systems and high-performance libraries.
02History
- 1972
C is created
Designed to rewrite Unix.
- 1978
The K&R book
The de facto standard.
- 1989
C89
Standardised by ANSI.
- 1999
C99
Variable-length arrays and inline functions.
- 2022
C23
A modern revision.
03Core concepts
Pointers
Holding a memory address directly: flexible, and dangerous.
Manual memory management
malloc/free hand lifetime decisions to the programmer.
Undefined behaviour
The standard says nothing about the result, so the compiler may optimise freely.
04Hands-on
Do it once — it beats reading it ten times
Write a linked list in C, then deliberately overflow a buffer and watch what valgrind and ASan report
05Self-check
Say it in your own words first, then open the answer. Whatever you cannot explain is what to review next.
Can you explain "Pointers"?
Holding a memory address directly: flexible, and dangerous.
Can you explain "Manual memory management"?
malloc/free hand lifetime decisions to the programmer.
Can you explain "Undefined behaviour"?
The standard says nothing about the result, so the compiler may optimise freely.
What problem did it solve, and why was there nothing better at the time?
Go back to the history section: how was this done before, and what did it cost?
If you had to build it today, how would you break it down?
Use the hands-on task above: write a plan of at most three steps before you start.
06Key people
Dennis Ritchie
1941 – 2011
Creator of C and Unix.
Brian Kernighan
1942 –
Co-author of The C Programming Language.
07Further reading
- The C Programming Language
- C Traps and Pitfalls