Introduction to C
C is a general-purpose, procedural, compiled programming language created in the early 1970s. More than fifty years later it is still the language quietly running the world: the operating system your computer boots, the firmware inside your router, the database engine storing your data, and even the interpreters of many "modern" languages are all written in C. Learning C means learning how software actually works underneath every layer of convenience that newer languages add on top.
What kind of language is C?
C is best described with three words: compiled, procedural, and statically typed.
Compiled — C source code is translated by a compiler directly into native machine code for a specific processor and operating system. There is no interpreter and no virtual machine sitting between your program and the CPU at run time.
Procedural — Programs are organized as a sequence of functions that operate on data. There are no classes, objects, or built-in inheritance; you structure programs around functions and data structures instead.
Statically typed — Every variable has a type (int, float, char, etc.) that is fixed at compile time, which lets the compiler catch many mistakes before the program ever runs.
C is also a relatively small language. It has around 32 keywords, a minimal standard library compared to languages like Python or Java, and it deliberately gives you very few "safety nets". There is no automatic garbage collector, no built-in bounds checking on arrays, and no exceptions. That might sound intimidating, but it is exactly why C is so instructive: it forces you to understand memory, pointers, and program execution instead of hiding them behind abstractions.
Why C is called "the mother of all languages"
C did not just become popular — it became the template that countless other languages were built on top of. Its syntax for blocks, functions, operators, and control flow (if, for, while, switch) has been copied almost verbatim by dozens of languages that came after it.
Language | How it descends from C |
|---|---|
C++ | Started as "C with Classes" — a direct superset of C syntax with object-oriented features added. |
Java | Borrowed C-style syntax (braces, semicolons, operators) and its |
C# | Designed by Microsoft with C/C++/Java-style syntax as its explicit starting point. |
JavaScript | Uses C-family syntax for statements and operators, despite being dynamically typed and interpreted. |
Python (CPython) | The reference implementation of Python itself is written in C, and Python's C extension API lets libraries like NumPy call into C for speed. |
Go, Rust, Swift | All cite C as a direct influence on syntax and/or systems-programming philosophy. |
What can you build with C?
Operating system kernels and low-level system utilities
Embedded software for microcontrollers, IoT devices, and appliances
Device drivers that let an OS talk to hardware
High-performance libraries and database engines
Interpreters, compilers, and runtimes for other languages
Real-time and safety-critical systems (automotive, aerospace, medical devices)
A first taste: Hello, World!
Every C tutorial has to start somewhere, and tradition says it starts with printing a greeting to the screen. Here is the smallest complete C program:
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}Hello, World!
Even this tiny program shows several ideas that are central to C: including a library header (stdio.h) to gain access to functions like printf, defining a main function as the program's entry point, and returning an integer status code to the operating system. We will unpack every one of these pieces in the pages that follow.