The seven programming ur-languages (2022)
Reactions to the “seven ur-languages” framing
- Many like the idea of a small set of “families” as mental tools; others argue the article is reductive and historically loose.
- Some think going back from ALGOL to assembly as a single “imperative family” is a stretch; they see ALGOL, Fortran, COBOL as distinct early branches.
- One commenter calls the article “full of gross mistakes,” e.g., mis-expanding “Caml” and making dubious lineage claims.
Disputed classifications and omissions
- Debate over whether COBOL and Fortran really sit in the ALGOL family; some suggest Fortran/COBOL are parallel lineages or “living fossils,” yet still actively standardized and commercially relevant.
- Several argue Fortran (1957) deserves explicit “ur” status, with ALGOL (1958) more influential in design but not first.
- Ruby is argued to belong squarely in the Smalltalk-style OO family, not “Algol,” while Python is noted as “pure OOP” under the hood.
- Some prefer Smalltalk over Self as the OO ur-language; others say Self’s prototype model is different enough to warrant its own slot.
Logic, proof, and type-theoretic languages
- Multiple comments propose a separate family for proof-oriented / dependently typed languages (Lean, Agda, Idris, F*, Dafny, ACL2).
- There is disagreement over whether these are just “ML with extensions” or require removing general recursion to be sound proof systems.
- Dispute over whether “true” programming languages must be Turing complete; several reject Turing completeness as a necessary criterion.
Beyond the seven: other paradigms and niches
- Calls to recognize additional semantic families:
- Hardware/parallel: Verilog, Petri nets, Kahn process networks, process calculi, reactive systems, dataflow, propagators.
- Term rewriting (e.g., dedicated languages and Mathematica), constraint solving, probabilistic programming.
- Scripting/pipeline languages (sh, awk, sed, Perl, PowerShell, Python/R, SQL) as a distinct family; dataflow tools like Excel and LabVIEW.
- Stream/value-set languages like
jq, where every expression yields zero or more values, presented as a distinctive model.
Learning languages vs. the LLM era
- One view: investing heavily in multiple languages is “rapidly redundant” as LLMs improve; focus should be one main language, software engineering, and AI tooling.
- Counterview: paradigmatic variety is a “tool for thinking,” improves problem selection and LLM prompt quality, and differentiates developers even if AI is ubiquitous.
Education, resources, and practice
- Several reminisce about university courses that systematically covered paradigms (imperative, functional, OO, logic, etc.), often building small interpreters.
- Extensive resource lists are shared for learning Forth, Lisp/Scheme, ML-like languages, Prolog-style logic, and PL design texts.
- Benchmarks comparing modern compiled languages (F#, C++, Rust, others) show relatively close performance, with nuances in parallelism strategies highlighted.