I once read about an interesting and invented word – “obsolete”.
Obsolete means “obsolete knowledge”. That is, information that USED to be true… But due to our rapidly changing world, it is no longer true. And when we don’t realize that, then we have problems: making decisions based on assumptions that WERE valid once, but NOW are not.
Now, obsolete is an interesting word. But it’s even more interesting when we look at the “meta” level.
Because once upon a time, that word did not exist. Someone coined it, because it’s a useful idea.
I once wrote about “obsolescence” in my email newsletter and received this annoying email from a user who unsubscribed:
“When I saw “confirm your subscription to learn the secret word”, I was worried that this site was fake. I checked and found that they seemed trustworthy, so I decided to continue. I found out that the “word” was “Obsoledge” (not a word) It was pretty disappointing.”
This expresses a vision of reality:
That the words in a language are already defined. That new words are rarely added to a language, if ever.
Someone can have a successful life with that way of thinking. Works. More than 90% of all human beings think this way in their daily lives.
However, I have noticed that some of the best in programming have a different mental model:
“Words are labels for concepts. New concepts can be created. And we can create new words so our minds can handle them better.”
Which is more “correct”?
Who knows. A much better question:
“Which way of thinking is more USEFUL?”
Well, that depends on the context of the person’s life: what is his career and what is he doing.
But for those of us who code for a living, whether you’re a data scientist or a web developer or something else…
The “words are labels” framework is MUCH more powerful.
What are some “made up” words in Python?
From the reserved keywords alone, we have await, def, elif, nonlocal, lambda.
What about invented CONCEPTS? For example, when I train people on a “deep dive” to truly understand Python generators, I make a big fuss about the distinction between “generator functions” and “generator objects”. I do so for several hugely important reasons. But the important point here is that there are two labels for two related but different concepts:
- generator function
- generator object
No other language has anything exactly like a Python “generator function”, nor exactly like a Python “generator object”. So we give them these novel names. LABELS. Which allows you to handle the concept in your mind, while reasoning about them in your code.
(These tags are sentences, not single words… but I hope it’s clear that doesn’t matter at all.)
While you think about all this… a question for you to ask yourself:
How have you “invented” words for concepts while writing code or while LEARNING to write code?
And: how has doing that benefited you?