Why Knowing C Still Matters: A Journey Through Programming Languages
The article explores the historical and practical reasons for mastering C, compares it with Lisp, C++, Java, Perl, Ruby, and Python, and reflects on how language choices shape software development, performance, and developer culture within large engineering teams.
The author begins with a mythic reference to the Tower of Babel, suggesting that translation (and programming languages) aims to bridge human gaps and achieve harmony.
C
You must understand C because every computer you’ll ever use is a Von Neumann machine, and C’s lightweight, expressive syntax maps well to its capabilities.
The Von Neumann architecture consists of a CPU, memory, storage, and a bus; it is a practical, inexpensive implementation of the Turing machine.
Other machines exist, such as Lisp machines (based on lambda calculus) and neural‑network computers, but the Von Neumann model dominates.
All operating systems—Unix, Windows, and others—are written in C, making it essential for low‑level performance.
C++
C++ is described as a confusing, unintrospective language that lacks the self‑awareness of true object‑oriented languages; building tools for it is difficult, and most parsers are inadequate.
While you can write large systems (e.g., operating systems) in C++, the practical limit is around a few million lines of code before it becomes unmanageable.
Lisp
The author recommends learning Scheme (a Lisp dialect) for its simplicity, noting that Lisp offers a clear view of computation distinct from hardware.
Mastering Scheme’s exercises (e.g., from *The Little Schemer*) provides deep insight into programming.
Java
Java rescued developers from many C++ pitfalls, offering safer memory handling, precise exceptions, and built‑in strings, yet it also became a quasi‑religion with its own cult of followers.
Switching from C++ to Java is likened to gaining an executive assistant that handles mundane tasks, allowing focus on core problems.
Perl
Perl is praised for rapid problem solving and strong Unix integration, though its design suffers from inconsistent contexts and a flawed object system.
Despite its quirks, Perl remains a powerful tool for string processing and system administration.
Ruby
Ruby inherits Perl’s strengths in string handling and Unix integration, while also borrowing lists from Lisp, object‑orientation from Smalltalk, and iterators from CLU, resulting in a language that feels like a modern, high‑performance bicycle.
Python
Python is recognized for its longevity and community, yet criticized for mandatory indentation (spacing) and a perceived lack of enthusiasm, which hinder its adoption as the universal scripting language.
Source: Community
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
21CTO
21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
