Why study programming languages (2022)
Historical roots of “new” language ideas
- Many “modern” PL features are decades old: ML-style type systems, GC, OO, dependent/linear/affine types, effects, proofs, capabilities.
- Rust is cited as mostly repackaging older research (Cyclone, ML, affine types) rather than inventing fundamentally new concepts, though spreading them widely is seen as valuable.
- Several comments trace GC and OO back to Lisp/Simula-era work and note that most of computing (Internet, AI, distributed systems) rests on 60s–70s ideas.
Why design and study programming languages
- Core motivation: new ways to express concepts and think about problems; different paradigms (FP vs imperative, ownership, laziness, OO) expand the “solution space” the mind explores.
- New languages act as laboratories; their concepts later get absorbed into mainstream ones.
- Some enjoy language design as a form of recreational math or art, including esolangs, and as a way to learn abstractions and DSL design.
Ideas vs implementation and tooling
- Several argue ideas are cheap; the hard part is building the infrastructure (hardware, compilers, tooling, supply chains) that makes ideas practical.
- Others note the real value in software is making ideas fully specified and usable.
- Tooling and ecosystem often matter more in practice than the core language.
Art, aesthetics, and human factors
- Disagreement over the article’s framing of abstraction/performance/usability as “aesthetic”: some see them as concrete engineering tradeoffs.
- Counterpoint: languages are human-computer interfaces and thus partly an art/humanities problem—ergonomics, learnability, aesthetics, and community shape success.
- Long subthread argues that usability is not ill-defined: human factors engineering and related standards provide methods to evaluate language design, but PL research largely ignores them. Ada, Pascal, Smalltalk, Python, Perl, and Eiffel are cited as more or less human-centered, with debate over how well that worked.
LLMs and the future of languages
- One view (provocative, partly tongue-in-cheek): LLMs make PLs obsolete; English is the ultimate representation and models can even emit machine code.
- Pushback: error rates, debugging, safety, and reproducibility make good language design, tooling, and static analysis more important with LLMs.
- Another view: LLMs demonstrate why natural language alone is a poor programming medium; “prompt/context engineering” is effectively inventing new programming languages.
Pragmatism, fads, and legacy constraints
- Practitioners differentiate between academic exploration and industrial needs; they rarely have time for languages unlikely to gain traction.
- Complaints about language churn and “fads,” contrasted with the longevity of core concepts.
- Backward compatibility limits modernization (e.g., null safety, stronger typing), so progress often requires new languages, but the cost of abandoning mature ecosystems is huge (Python 2/3 as example).