tl;dr An audacious claim by a classmate caused me to question the definition of the word "support" (verb) in the context of computer science. Is it analogous to standard definitions where a degree of intent/competence is required? Or is it a sort of technical jargon acting as a binary inclusive/exclusive descriptor of theoretical capability? Or is it something else entirely?
Full story below the fold:
Today I witnessed a valiant attempt to claim that the Executor Class/Interface in Java "supports" synchronous task execution (source is a classmate in a scalable distributed systems course). For any not familiar, an Executor's intended purpose is to facilitate concurrent almost always asynchronous task execution.
I was ready to write this off as a tenuous grab for extra points on a quiz, however, in doing my due diligence (read procrastination) I looked up definitions to the the word support in several online dictionaries but did not find a single one that satisfactorily addressed the conceptualization of technology supporting functionality.
Instead, the definitions tended to exclusively refer to support as help or a foundation given by a person or physical structure and requiring some amount of intent or efficacy. This is what led me to wonder if the term support may have moved into jargon territory.
For more concrete context, the offending statement is "Executors support synchronous task execution" (it was an option in a multiple choice, choose all that apply, question).
The counter argument is that the java docs say, "the Executor interface does not strictly require that execution be asynchronous" meaning if it chooses to do so, Executor can do the task on the spot synchronously and an example is given of it doing just that. The docs go on to say, "More typically, tasks are executed [asynchronously]".
As a corollary for the distinction between the physical and digital definition, one wouldn't say that a strainer supports carrying water just because you can manage with great effort to keep some in it. Further, it seems accurate to say "strainers do not support holding water." However, it seems incorrect to say "Executors do not support synchronous task execution" knowing that they are technically capable of it though wildly impractical.
The more I think about it the more it seems that "support" when referring to technology and functionality really only defines whether something is theoretically possible. I am certain one could implement the Executor interface in a manner that more directly supports synchronicity.
So not knowing where to turn I figured I'd seek input from other tech folx. Has the word support taken on a different definition in computer science?