Definitions Are Important (really)
Some time ago, I got myself wanting to read economics books. I remember that I picked up "The Constituition of Liberty" by Friedrich Hayek—worry not, your death by boredom or scientific jargon overflow is beyond the scope of this post. One of the things that really stuck with me was on the very first pages, where Hayek identifies a harmful problem surrounding the subject matter of the book: most people have no concrete grasp of what "liberty" means. He spent roughly 10 pages of his book setting up what he meant by the term and comparing his definition with the many others that are out there.
"And why is this important?" Everyone has seen this before: two people seemingly arguing about the same subject, but in reality, their perceptions of it are so dissimilar that the entire conversation is pointless. Definitions are crucial because, without a shared understanding of the meaning of the terms we employ, communication is impossible (unless the entire point of the exchange is to discuss the definition itself, something that is mostly reserved for academia). This is the reason why formal definitions are a top priority in science and in technical environments.
To exemplify this in a slightly exaggerated way, we cannot properly talk about dogs if I, hypothetically, define "dog" as a "fluffy animal", and you define it as a "carnivorous mammal (Canis familiaris) closely related to the gray wolf that has long been domesticated as a pet". By the definition I would be using in this scenario, even a bear could be seen as a dog (something absurd), but to you, reasonably, it couldn't. Our entire exchange would be pointless.
The definitions some programmers give of seemingly basic terms—like "code," "language," "value," "data," etc.—tend to be contradictory, ambiguous, or sloppy. It's also possible that these terms aren't even defined in materials that are meant to be instructive (i.e., aimed at beginners in the area). A lot of people genuinely don't care about theory or give it much attention, but they nevertheless act as though they understand it, which is terrible to anyone trying to learn from them.
Furthermore, a variety of factors, including context and experience, can impact the inferred meaning of any given term. For instance, in procedural and object-oriented programming, the term "function" might mean different things (more on this later), and an experienced programmer may hold more detailed definitions, adding nuances that a beginner would otherwise miss.
Some books and websites address these problems by providing tables of definitions along the way. I'll make an effort to imitate that on this blog. Once more, my goal is to share my understanding rather than impart knowledge; yet, in order to accomplish this, my readers—particularly those who don't belong in the programming community—need to be able to relate to my writings, which they cannot do if they are bombarded by unfamiliar terminology.
That's it for now, stay tuned for more!
The Stache is Out. .
Comments
Post a Comment