Why care about programming languages
Why care about programming languages
July 22, 2026<br>by Eduardo Bellani
In the age of AI-assisted coding, it’s easy to feel that deep knowledge of<br>programming languages has become obsolete. Why spend years mastering language<br>intricacies when an AI can generate code in any language on demand? I recently<br>encountered this sentiment in a question from a junior developer:
I feel like caring about programming languages and stuff is actually<br>very useless. … Am I being too extreme?
I understand the concern, but I believe it misses something fundamental: a<br>programming language’s worth is derived from the ideas it embodies, not merely<br>its syntax or tooling. These ideas—concepts about how to structure thought,<br>manage complexity, and solve problems—remain essential regardless of who or<br>what writes the code.
Here is my sample list of deep ideas from programming languages:
on Rust, the borrow checker—reasoning about ownership and lifetimes
on Haskell, typeclasses—principled polymorphism and abstraction
on SML/OCaml, the module system—large-scale program organization and decoupling
on OOP languages, identity vs equality—understanding state and comparison
on SQL, relational theory/algebra—declarative data manipulation
on Prolog, first order predicate logic—logic-based problem solving
on C, arrays and pointers—understanding memory layout and indirection
on Lisp, syntax extensions—metaprogramming and language-oriented programming
on functional languages, first class functions—treating computation as values
on SML, Haskell and others, algebraic data types—modeling domains with types
on Clojure, maps and immutable data structures—persistent data and structural sharing
on OCaml, row polymorphism—static typing for extensible records
Each of these concepts represents a different way of thinking about computation.<br>Learning them expands your mental toolkit for solving problems. When you<br>understand the borrow checker, you think differently about resource management<br>everywhere. When you grasp algebraic data types, you model domains more<br>precisely. When you internalize first-class functions, you see abstraction<br>opportunities others miss.
These ideas transcend any particular language or tool. They are the conceptual<br>foundation that lets you evaluate AI-generated code, choose appropriate<br>abstractions, and architect systems that remain maintainable as they grow. In<br>the AI age, understanding these concepts becomes more important, not less—they<br>are what separate those who merely prompt from those who truly engineer.
Figure 1: A man praying in a ruined Catholic church in La Vang, a town south of Quang Tri City, Vietnam on July 6, 1972