Why care about programming languages

Why care about programming languages

为什么要关注编程语言

July 22, 2026 by Eduardo Bellani 2026年7月22日,作者:Eduardo Bellani

In the age of AI-assisted coding, it’s easy to feel that deep knowledge of programming languages has become obsolete. Why spend years mastering language intricacies when an AI can generate code in any language on demand? 在人工智能辅助编程的时代,人们很容易觉得深入掌握编程语言已经过时了。既然人工智能可以按需生成任何语言的代码,为什么还要花几年时间去钻研语言的复杂细节呢?

I recently encountered this sentiment in a question from a fellow developer: “I feel like caring about programming languages and stuff is actually very useless. … Am I being too extreme?” 最近,我在一位开发者的提问中遇到了这种观点:“我觉得关注编程语言之类的东西其实非常没用……我是不是太极端了?”

I understand the concern, but I believe it misses something fundamental: a programming language’s worth is derived from the ideas it embodies, not merely its syntax or tooling. These ideas—concepts about how to structure thought, manage complexity, and solve problems—remain essential regardless of who or 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
  • 关于 Rust,借用检查器 (borrow checker)——关于所有权和生命周期的推理
  • on Haskell, typeclasses—principled polymorphism and abstraction
  • 关于 Haskell,类型类 (typeclasses)——原则性的多态和抽象
  • on SML/OCaml, the module system—large-scale program organization and decoupling
  • 关于 SML/OCaml,模块系统——大规模程序组织与解耦
  • on OOP languages, identity vs equality—understanding state and comparison
  • 关于面向对象语言,标识与相等性 (identity vs equality)——理解状态与比较
  • on SQL, relational theory/algebra—declarative data manipulation
  • 关于 SQL,关系理论/代数——声明式数据操作
  • on Prolog, first order predicate logic—logic-based problem solving
  • 关于 Prolog,一阶谓词逻辑——基于逻辑的问题求解
  • on C, arrays and pointers—understanding memory layout and indirection
  • 关于 C,数组与指针——理解内存布局与间接寻址
  • on Lisp, syntax extensions—metaprogramming and language-oriented programming
  • 关于 Lisp,语法扩展——元编程与面向语言的编程
  • on functional languages, first class functions—treating computation as values
  • 关于函数式语言,一等函数 (first class functions)——将计算视为值
  • on SML, Haskell and others, algebraic data types—modeling domains with types
  • 关于 SML、Haskell 等,代数数据类型——利用类型进行领域建模
  • on Clojure, maps and immutable data structures—persistent data and structural sharing
  • 关于 Clojure,映射与不可变数据结构——持久化数据与结构共享
  • on OCaml, row polymorphism—static typing for extensible records
  • 关于 OCaml,行多态 (row polymorphism)——用于可扩展记录的静态类型系统

Each of these concepts represents a different way of thinking about computation. Learning them expands your mental toolkit for solving problems. 每一个概念都代表了一种思考计算的不同方式。学习它们可以扩展你解决问题的思维工具箱。

When you understand the borrow checker, you think differently about resource management everywhere. When you grasp algebraic data types, you model domains more precisely. When you internalize first-class functions, you see abstraction opportunities others miss. 当你理解了借用检查器,你对资源管理的思考方式就会发生改变。当你掌握了代数数据类型,你对领域的建模就会更加精确。当你内化了一等函数的概念,你就能发现别人忽略的抽象机会。

These ideas transcend any particular language or tool. They are the conceptual foundation that lets you evaluate AI-generated code, choose appropriate abstractions, and architect systems that remain maintainable as they grow. 这些思想超越了任何特定的语言或工具。它们是概念基础,让你能够评估人工智能生成的代码,选择合适的抽象,并构建出随着规模增长依然易于维护的系统。

In the AI age, understanding these concepts becomes more important, not less—they are what separate those who merely prompt from those who truly engineer. 在人工智能时代,理解这些概念变得更加重要,而非不重要——它们正是区分“只会写提示词的人”与“真正工程师”的分水岭。