C as the systems lingua franca
/ lingua franca -> LING-gwuh FRANK-uh /
In trade and travel, a lingua franca is a common language that people from different backgrounds use to understand one another. In systems programming, C plays that role. Operating system kernels, language runtimes, databases, embedded firmware, and the libraries underneath higher-level languages are written in or expose themselves through C — so C is the shared tongue that almost everything low-level can speak.
Several concrete properties earned C this position. It is a thin, predictable layer over the machine: its constructs map closely to how CPUs and memory actually work, with little hidden behavior, which is what 'close to the metal' means. It is small and stable, standardized since 1989, so code written long ago still compiles. A C compiler exists for virtually every processor ever made, giving extraordinary portability. And critically, C defines a stable Application Binary Interface (ABI) — a calling convention and data layout — that other languages target when they want to call into existing code or be called from it. That is why bindings from Python, Rust, Go, and nearly every language are expressed as a 'C interface' (FFI): C is the lowest-common-denominator contract between languages.
Why this matters and an honest balance: because so much foundational software is C, understanding C is understanding the floor that everything else stands on — even if you write in a higher-level language, you are usually calling C underneath. The honest caveat is that C's closeness to the machine is also its danger: it offers no memory safety, no bounds checking, and a long list of undefined behaviors, which is exactly why newer systems languages like Rust exist. C's endurance is about ubiquity and stability, not about being the safest tool — both things are true at once.
/* A C function with a stable ABI other languages can call: */ int add(int a, int b) { return a + b; } /* Python (via ctypes), Rust (via extern "C"), Go (via cgo), and almost every language can call this same compiled add(). */
Because C's ABI is stable and universal, a single compiled C function becomes the common interface that many languages bind to.
C's dominance comes from ubiquity, stability, and a universal ABI — not from being safe. It offers no memory safety or bounds checking and has many undefined behaviors, which is precisely the motivation for newer languages like Rust. Both facts hold at once.