I once read about an interesting, invented word: “obsoledge”.
Obsoledge means “obsolete knowledge”. Meaning, information that USED to be true… But because of our rapidly changing world, is no longer true. And when we do not realize that, then we get trouble – making choices based on assumptions that WERE valid once, but are not valid NOW.
Now, obsoledge 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 is a useful idea.
I wrote about “obsoledge” in my email newsletter once, and got this upset email from an un-subscriber:
“When I saw “confirm your subscription to learn the one secret word,” I became concerned this site was a fake. I checked and found that they seemed to be reputable, so I decided to proceed. Finding out that the “word” was “obsoledge” (not a word) was quite a let-down.”
This expresses one view of reality:
That the words in a language are already defined. That new words are added to a language rarely, if at all.
Someone can have a successful life with that way of thinking. It works. Over 90% of all humans think this way in their day to day lives.
I have noticed, though, that some of the highest performers in programming have a different mental model:
“Words are labels for concepts. New concepts can be created. And we can create new words to give our mind a better handle on them.”
Which one 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 their career is and what they are doing.
But for those of us who code for a living, whether you are a data scientist or a web developer or something else…
The “words are labels” frame is FAR more powerful.
What are some “invented” words in Python?
Just from the reserved keywords, we have await, def, elif, nonlocal, lambda.
What about invented CONCEPTS? For example, when I train people in a “deep dive” into truly understanding Python generators, I make a big honkin’ deal about the distinction between “generator functions” and “generator objects”. I do that for several massively important reasons. But the important point here is that there are two labels for two related, yet distinct 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 lets you put a handle on the concept in your mind, as you reason about them in your code.
(These labels are phrases, not single words… but I hope it is clear that does not matter at all.)
As 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?