Est. 1972 Intermediate

C

The foundational systems programming language that shaped modern computing, from Unix to Linux to embedded systems.

Created by Dennis Ritchie at Bell Labs

Paradigm Procedural, Imperative
Typing Static, Weak
First Appeared 1972
Latest Version C23 (2024)

C is arguably the most influential programming language ever created. Developed in 1972 by Dennis Ritchie at Bell Labs, C became the language that built the modern computing world. Operating systems, databases, compilers, embedded systems, and countless applications trace their roots to this elegant yet powerful language.

History & Origins

The story of C begins with the development of Unix. In the late 1960s, Ken Thompson at Bell Labs created the B language (based on BCPL) to write utilities for Unix on the PDP-7. When Bell Labs acquired the more powerful PDP-11, Thompson and Dennis Ritchie needed a language that could take advantage of the new hardware’s features.

Dennis Ritchie evolved B into “New B” (NB), adding a type system and other features. By 1972, this had become C. The defining moment came in 1973 when Thompson and Ritchie rewrote the Unix kernel in C - one of the first operating system kernels not written in assembly language.

The K&R Bible

In 1978, Brian Kernighan and Dennis Ritchie published “The C Programming Language,” universally known as “K&R.” This slim, precise book became one of the most influential programming texts ever written. Its clear style and practical examples taught generations of programmers.

The book’s Hello World program became the canonical first example for learning any programming language:

1
2
3
4
5
6
#include <stdio.h>

main()
{
    printf("hello, world\n");
}

Design Philosophy

C’s design reflects its systems programming heritage:

Close to the Hardware

C provides direct memory access through pointers, bit manipulation, and minimal runtime overhead. A C program can do almost anything that assembly language can do, while remaining portable across platforms.

Trust the Programmer

C assumes you know what you’re doing. It won’t stop you from doing dangerous things like dereferencing null pointers or writing past array bounds. This philosophy enables maximum efficiency but requires discipline.

Small Language, Big Libraries

The C language itself is small - a few dozen keywords. Its power comes from the standard library and the ability to call operating system functions directly.

Portable by Design

C was designed to be compiled on different machines with minimal changes. The same C code can run on microcontrollers, supercomputers, and everything in between.

Why C Still Matters

In an era of Python, JavaScript, and Rust, why does a 50-year-old language remain essential?

Performance

C produces extremely fast executables. When every CPU cycle counts - in operating systems, game engines, real-time systems - C remains the go-to choice.

Ubiquity

C compilers exist for virtually every platform ever made. When you need code to run on an obscure microcontroller or legacy mainframe, C is often your only option.

Foundation of Everything

Understanding C means understanding how computers actually work. Memory, pointers, the stack, the heap - concepts that higher-level languages abstract away are front and center in C.

Interoperability

Almost every programming language can call C code. Want to write a Python extension? Use C. Need to interface with the operating system? C is the common language.

Modern C

C continues to evolve. Recent standards have added:

  • C99: Variable-length arrays, inline functions, single-line comments (//), _Bool type
  • C11: Multi-threading support, atomic operations, anonymous structures
  • C17: Bug fixes and clarifications
  • C23: nullptr, typeof, binary literals, improved Unicode support

Modern C code can be quite expressive while maintaining the efficiency that made C famous.

The C Family

C’s influence is everywhere. Direct descendants include:

  • C++: C with classes, templates, and extensive standard library
  • Objective-C: C with Smalltalk-style messaging (used for early iOS/macOS)
  • C#: Microsoft’s C-inspired language for .NET

Languages that borrowed heavily from C syntax:

  • Java, JavaScript, PHP, Perl, Go, Rust, Swift, D

Even Python, with its different syntax, has a runtime written in C (CPython).

Learning C Today

Learning C provides foundational knowledge that transfers to many other languages. Understanding manual memory management, pointers, and low-level operations makes you a better programmer in any language.

C remains essential for:

  • Systems programming (operating systems, drivers)
  • Embedded development (IoT, automotive, aerospace)
  • Performance-critical applications
  • Understanding computer architecture
  • Contributing to open-source infrastructure

The language that Dennis Ritchie created over 50 years ago continues to be the bedrock of computing.

Timeline

1969
Ken Thompson develops B language at Bell Labs
1972
Dennis Ritchie creates C at Bell Labs
1973
Unix kernel rewritten in C
1978
'The C Programming Language' (K&R) published
1989
ANSI C (C89) standardized
1990
ISO C90 adopted internationally
1999
C99 adds inline functions, variable-length arrays
2011
C11 adds multi-threading, atomics
2018
C17/C18 minor revision and bug fixes
2024
C23 released with modern features

Notable Uses & Legacy

Linux Kernel

The Linux kernel is written almost entirely in C, powering servers, Android devices, and embedded systems worldwide.

Windows & macOS

Both Windows and macOS kernels contain substantial C code, making C the foundation of modern desktop computing.

Embedded Systems

From microcontrollers to automotive systems, C dominates embedded programming due to its efficiency and hardware control.

PostgreSQL & SQLite

Major databases are written in C for maximum performance and portability.

CPython

The reference implementation of Python is written in C, as are many Python extension modules.

Git

The world's most popular version control system is implemented in C for performance and portability.

Language Influence

Influenced By

B BCPL ALGOL 68 Assembly

Influenced

C++ Objective-C C# Java JavaScript Go Rust Swift Perl PHP Python

Running Today

Run examples using the official Docker image:

docker pull gcc:14

Example usage:

docker run --rm -v $(pwd):/app -w /app gcc:14 sh -c 'gcc -o hello hello.c && ./hello'

Topics Covered

Last updated: