It is impossible to disassociate language from science or science from language, because every natural science always involves three things: the sequence of phenomena on which the science is based, the abstract concepts which call these phenomena to mind, and the words in which the concepts are expressed. To call forth a concept, a word is needed; to portray a phenomenon, a concept is needed. All three mirror one and the same reality.
- Antoine Lavoisier, 1789
Words. Words are magic when they clearly describe a powerful concept. Nationalism. Inertia. Justice. Scientific method.
- Words as concepts. When the words as concepts can make accurate predictions then we call it science.
- Takes time for a new word to become powerful - social agreement and applicability. If a new word is disruptive or radical then a word may have to wait a few generations before acceptance. If it's useful enough (the world wide web) then the word might become powerful instantly.
- Useful new words that are not widely adopted are more specialized, we call these words jargon when we are standing outside of the specialty. Dead-head, 1098, key performance indicators. Garbage collection. Jargon is as meaningful to practitioners as more general concepts.
- Note that a word's underlying concept will drift depending on how radical it is, how widely it's understood, and whether it's one that can make accurate predictions.
- We have internalized the new word when communicating with it instantly evokes the underlying concept. The general applicability in specific circumstances, nuances in its use, contexts when it is appropriate. The word has transcended any description of itself, a dictionary entry is a pale shadow of its true richness, for you must have lived with the word and used and misused it to truly understand its meaning. In a way, only the word can define itself accurately. When we have reached this level of familiarity with that new word then we may call it an abstraction.
- Abstractions are not logical structures but flat surfaces on which to build logical structures. In our minds, we do not need to construct cars from pistons and wheels and Henry Ford's assembly line. In our minds, a car simply is.
- It is only after a new word becomes an abstraction that we can build upon it. If we're fuzzy on the fine details of what ownership means, then developing bartering becomes nearly impossible. Bartering needs to be fully abstracted before currency becomes a thing. Currency before debt, debt before interest, interest before investing, investing before stock exchanges.
- In programming, creating a good abstraction is very expensive. It requires that the concept encoded in the programming language is well understood by those that employ the API. That kind of internalization requires a stable API, high relevance and applicability, and a level of usability. That kind of internalization requires time.
- If the abstraction becomes generally applicable enough then it can become adopted by a programming community in the form of a pattern or library. It may even become a well used language feature.
- The silver bullet isn't a programming technique. It's not immutable data structures, actors, or data abstraction. The way forward is for us to become better at turning programs into abstractions.