Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

They way I see this is thinking about vocabulary and language.

We can describe the world only within the limits of our vocabulary. Basically we want to describe thinking about new things with existing words.

In case of programming we are building new concepts and it might be the case when there is no word to properly describe that concept. So we try to find the best approximation. This task alone is very hard, specifically because there are two layers of modeling: first we model the domain into abstract programming concepts then we need to create a model (approximation) of these concepts that we now want to code to be able to find a word for them.

We can see it simply with a variable: we can use common names for variables which have a clear, easy to see around us purpose: counting => count/counter, indexing => index, ordering => order ... but when we have a variable that should retain an intermediate abstract value to be used futher then this concept cannot be found so easy.

Let's say we need to save the name of a class - generated on the spot - to be used further in the code.

What is the name for this variable?

- "class" - seems the first one, but in most languages this is a restricted word

- "klass" - here we are already creating a new word

- "bucket" - this is more easy to find around us as "a place to put things in", but it does not fit maybe the current code as it is a too large concept

- "intermediate_class_name" - now again this is inventing new words by glueing them together. Might work, might not work depending on coding guidelines and other restrictions



I think it goes deeper than that. We often are trying to figure out what the code is supposed to do, trying to crystalize our half-baked understanding into something solid enough to code. While in that state, it's very hard to name things, not just because names are hard (though they can be), but even more because our understanding is fuzzy. We don't really have a solid understanding of what the thing is, and our fumbling attempts at giving it a name are part of the process of trying to figure out what it is.


To echo your main idea:

We can describe the world only within the limits of our vocabulary.

Or another way to put it, you can manage scope with your toolkit of words. In a way, if I say the word ‘theft’ doesn’t exist, you are going to have a hard time expressing theft. I just defined constraints with a simple omission.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: