我不再关心编程术语了。
I stopped caring about programming terms

原始链接: https://teadriven.com/blog/why-i-stopped-caring-about-terminology/

在学习计算机科学三年后,作者意识到关于技术术语的不断争论往往适得其反。虽然“组件(Component)与模块(Module)”或“DAO 与存储库(Repository)”这类术语听起来令人望而生畏,但这些标签往往是流动的、依赖于语境的,有时甚至带有随意性。 作者的观点通过三个关键认知发生了转变: 1. **数学基础:** 即使在数学等严谨的学科中,为了构建复杂系统,也必须保留一些“未定义”的概念。 2. **专家的谦逊:** 像丹·格罗斯曼(Dan Grossman)这样著名的教育家,往往会忽视迂腐的争论,优先考虑功能性理解而非僵化的定义。 3. **务实的交流:** 就像精神病学将“抑郁症”作为一组症状的实用标签,而非单一、完美定义的疾病一样,技术术语只是沟通的工具。 最终,作者认为术语的目的是服务于理解,而不是作为设置门槛或制造混乱的源头。纠结于“细微”的区别往往会阻碍进步。程序员不应陷入语义之争,而应关注底层概念,并通过彼此明确定义来确保有效协作。知识应该是赋能的工具,而非初学者的障碍。

Hacker News 上的一场讨论探讨了一篇文章,该文章认为程序员不应过度纠结于精确的技术术语。作者主张,对特定定义的死板坚持往往会阻碍沟通,因为像“模块”这样的术语在不同语境下的含义差异巨大。 评论者普遍认为,将相互理解置于语言门槛之上是有益的。一些参与者将其与人际交往所需的微妙之处进行了类比,指出沟通不畅往往源于不同的人对同一个词持有不同的心智模型。 然而,讨论也强调了关于人工智能兴起的反方观点。一些用户警告称,随着对 AI 工具依赖的增加,存在“去技能化”的风险,即开发者可能会丧失对编程概念的基本认知。他们认为,虽然术语看起来可能显得迂腐,但保持对技术工艺深厚且共同的理解,对于故障排查和系统的长期稳定性至关重要。最终,该讨论在灵活沟通的优点与忽视技术精确性可能导致核心专业知识流失的担忧之间取得了平衡。
相关文章

原文

I’ve been studying CS for about three years now, and one thing has kept frustrating me for a while: the terminology. I still remember feeling so confused about the difference between Component and Module, or DAO vs Repository, and many other terms. Until I realized, one day, that it doesn’t really matter.

img

Programmers come up with terms every passing day, and anyone can do it. At some point, I started to feel that two people in different contexts would come up with a term meaning pretty much the same concept. Later someone on Stack Overflow would confidently and happily explain to you the “nuances” in meaning that everybody misses. Of course, always starting the answer with “they are closely related but different” (or some AI tools that are even more confident), but often, no, it’s actually simpler: ask the person using the term what they mean.

I also started to notice some terms are used in different programming ecosystems in a specific way. The same term could be used differently in different contexts. It’s that simple.

And I had a deep relationship with terms; I grew up having translation as one of my hobbies. I fell in love with looking up a term’s origin (etymology). I know a lot of cool trivia like why it’s called a lambda function or why Shannon named it Entropy in information theory. And I’d happily correct you and explain the difference between a higher-order function and a first-class function. Yet does it really matter?

But do you know why I decided to stop caring much about terminology? Three experiences actually:

First experience

I was reading a discrete math book, Susanna’s famous masterpiece. In one section she went like “all terms are defined using other terms, but this has to start from somewhere. In mathematical logic, the terms ‘sentence’, ‘true’ and ‘false’ are the initial undefined terms”. I went like, what?! How could that be? Can we have undefined terms in MATH? Well, we do. We have undefined terms and axioms everywhere. We don’t really know what “causality” means, or even a concept like “time”, but we live with it. We clearly know it exists. And while we can’t really explain it or prove it yet, we can build amazing things on top of it and have amazing scientific breakthroughs.

Second experience

I was taking an online course from UW about programming languages. It was a great course and helped me pick up so many great terms that are actually useful. But at some point in the course, after explaining some functional programming concepts, the professor, Dan Grossman, then said: “People often confuse higher order functions and first class functions, so we won’t care either”. It was humbling. If a man with a PhD in programming languages doesn’t care, why am I turning it into a battle?

It’s also worth noting that the same Dan Grossman expressed frustration that people often call languages “compiled languages”, when it’s actually a property of the implementation and not the language itself. Because this actually leads to a distorted understanding of programming languages. So it’s not always that simple; it’s not either “terms don’t matter” or “I’ll kill you if you misuse it!”.

Third experience

The third insight might surprise you; I actually heard it from a psychiatrist talking about depression. He went like: we don’t really know what depression is. In fact, it’s not a disease like other diseases we know (like diabetes). That’s why we call it a disorder; that is, a set of symptoms that we noticed often (but not always) come together. So we, the community of psychiatrists, agreed to call it “depression” to be able to communicate with each other. One day we discover a new case or a new symptom of what we call “depression”, so we just add it to the list and maybe give this new “variant” a name (e.g. high-functioning depression). Well, nothing is that simple in real life, but the main idea here is that we truly don’t really know what it is. But this doesn’t stop us from pursuing the well being of people; with experience and scientific research we can treat it the best we can (with or without medication).

That was the most humbling words I’ve ever heard. And it was a deep lesson that now feels too obvious: terms are simply created for understanding. That is what matters at the end of the day. This isn’t just about programming; sadly, we often go through fierce battles over a concept or a problem while not realizing that each of us has a different definition for it.

Terminology can be really intimidating to people just starting in the field. I feel we should emphasize how important it is to just take it easy.

联系我们 contact @ memedata.com