The 7 Ur-Languages of Programming (2022)
Key point
It divides mainstream languages into 7 families and explains the way of thinking behind each.
Details
Programming languages differ not just in syntax, but split into families that differ in their fundamental patterns for solving problems.
The representative 7 ur-languages are summarized as follows.
- ALGOL: A procedural language family centered on
for,if, assignment, and functions. Most mainstream languages such as C, Java, Python, C++, JavaScript, and Ada belong here. - Lisp: Parenthesized prefix expressions and macro are the core. Code itself is treated as a list, allowing the meaning of the language to be extended.
- ML: first-class function, the Hindley-Milner type system, and recursion-based iteration are the core. This lineage continues into Haskell, OCaml, Standard ML, Agda, and Idris.
- Self: An object-oriented family that operates by objects exchanging messages. The focus is on objects themselves and message passing rather than classes, and it is also described as the root of JavaScript.
- Forth: A stack language where operations happen on a stack instead of explicitly passing arguments. It's easy to modify the parser or layer small domain-specific languages on top.
- APL: Everything is an array, and short symbolic operators compress high-dimensional array operations into concise expressions. It also influenced MATLAB, NumPy, and R.
- Prolog: Programs are written as facts and rules, and the runtime searches to resolve queries. It's a logic-based search language.
The core point of the article is that even for the same "coding," the way of thinking and productivity can vary greatly depending on which ur-language one is familiar with.
Also, each family has absorbed some ideas from the others. For example, the ALGOL family adopted Self's object concept and ML's type ideas, while Lisp, Forth, and Prolog each make the language itself part of the program through macros, parser extension, and facts/queries, respectively.
In conclusion, the article argues that instead of staying within just one family, exposure to multiple ur-languages broadens the perspective on problems and the range of solutions one can design.
This summary was generated automatically by AI. Check the original for the author's claims and context. Copyright belongs to the original author.
Our guide explains how the AI works. Report summary errors, attribution issues, or removal requests via Contact.