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.