An Unhandled Exception in the English Language
While no one expects a language that formed organically via iteration and evolution to be free of logical errors, over time conventions have been formed to deal with most of them such that for the most part there is a “right” way of saying something and a “wrong” way, even when there’s no obvious rule to cover the use case in mind.
The BBC has an excellent article with some examples and even past attempts at creating rules to deal with these cases.
“Adjectives in English absolutely have to be in this order: opinion-size-age-shape-colour-origin-material-purpose Noun. So you can have a lovely little old rectangular green French silver whittling knife. But if you mess with that word order in the slightest you’ll sound like a maniac. It’s an osadd thing that every English speaker uses that list, but almost none of us could write it out.”
My personal favorite “it’ll blow your mind” rule is with regards to ablaut reduplication:
You are utterly familiar with the rule of ablaut reduplication. You’ve been using it all your life. It’s just that you’ve never heard of it. But if somebody said the words zag-zig, or ‘cross-criss you would know, deep down in your loins, that they were breaking a sacred rule of language. You just wouldn’t know which one. All four of a horse’s feet make exactly the same sound. But we always, always say clip-clop, never clop-clip. Every second your watch (or the grandfather clock in the hall makes the same sound) but we say tick-tock, never tock-tick. You will never eat a Kat Kit bar. The bells in Frère Jaques will forever chime ‘ding dang dong’.
But what do you do when two rules or conventions clash? And what does that have to do with programming or computer science?
Let’s take a look at this graph from Google n-grams of occurrences of from/to plotted against those of to/from (if you’re even remotely familiar with the English language, one of these should immediately jump out to you as being more correct than the other):
And this is a plot of literal occurrences of read/write vs write/read, again with a clear winner (though with a decrease in overall usage over time):
But what happens when you try to put the two together? Stronger than any convention or self-styled eponymous law, sentences have to make sense. Before any software developer worth her salt ever began learning about parallelism and concurrency, English greybeards were discussing grammatical parallelism, a critical component of the English language (and many other languages) that doesn’t just make someone violating it sound foreign but rather downright wrong (even if people just don’t care any more).
While in real life I can say I was “reading to a child,” in software development you never read to a person or object, you read from it; and in the same vein, you write to a destination and never from it. But what if you’re doing both?
With respect to logic, parallelism, and everything that makes sense, you can only say “avoid reading/writing from/to this resource…” — only that would that make you sound awkward and foreign! But correctness always takes priority over convention. Always. Right?
Let’s have a look at written occurrences of read/write to/from vs read/write from/to:
That clearly backs up what we’re saying with correctness over convention. However, Google n-grams are literal and do not take into account any sort of stemming. What about reading/writing to/from vs reading/writing from/to?
Now that is a much more interesting graph to look at and speculate about! Somewhere Somewhen in the Roaring Twenties, reading/writing from/to took a massive nosedive allowing reading/writing to/from to overtake it right around 1930 (and the Great Depression). What on earth could have caused that?
Rewinding a little to our prologue, there was a passing mention of what has turned out to be a portendant observation: you absolutely can read to a person (or an animal, plant, or even inanimate object if you truly so desire), but not to a resource, which can only be read from. I do wonder if there are other nouns (or classes of nouns) that cannot be read to (read-only? Ha ha ha.) that would help explain this change in phrase popularity, because 1920 is a wee bit too early for computer science to creep into our lingo.
The Twenties (or as the French call them, les années folles) certainly were an interesting time. Programming may not have been a thing yet, although it certainly was in the English language, just referring to something different — a while later, radio (and later, TV) “programming,” although at that time it would not have been an inflected form of the verb to program but more likely a deverbal term, since program was used as a noun (as in, “the BBC radio programme”) and not a verb back then. After all, the radio (first invented in 1913 by the Italian Guglielmo Marconi) saw its first broadcast (pioneered by radio engineer Frank Conrad) on KDKA, which first sent its radio waves out all over the East Coast (via AM radio) on the night of the landslide Harding-Cox election, announcing the results on November 2, 1920.
As interesting as all that was, the radio is undeniably chiefly an instrument of the ears and not the eyes, so it’s unlikely that had anything to do with the sudden decline we see in that last chart above. Telegrams (which I wrongly thought were more often dictated than written) were around from the very early 1800s and stuck around until, well, 2013 and so are definitely not the cause. In fact, it’s hard to figure out what can explain the change in the graph because if you were to plot out the individual permutations of the phrase reading/writing from/to, you would see that none of them individually experienced the same swap (or even individual declines) in popularity:
So we have the (literally correct, but wrong-to-the-ears) term reading/writing from/to experience a massive decrease in adoption while the (literally/logically incorrect) term reading/writing to/from continues to gain growth steadily during that same time period and thereafter, but none of the individual phrases reading to (as in, “reading to a child”), reading from (as in, “reading from a book”), writing to (as in, “I’m writing to you at a time of great sorrow”), and writing from (as in, “I’m writing to you from Calcutta” or “I’m writing this from memory”) show any changes in popularity that would account for a change in the literal meaning intended by that phrase. That leaves us with only one conclusion: it wasn’t a change in usage but rather a change in preference that was responsible for this change in popularity.
It seems that in the 1920s, the literally correct but awkward phrase reading/writing from/to lost out in favor of the very much incorrect but much more audibly aesthetic reading/writing to/from, which snubs correctness for convention.
And that is why, today in 2018, it is a programmer (i.e. “an overly pedantic individual, formally trained to always favor micro-instances of correctness at the cost of being awkward”) tired of wondering this each time he wrote a commit message or left a comment explaining a confusing line of code is the one writing this article lamenting the lack of a proper rule for dealing with this particular case of unhandled exceptions in English grammar.