0

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?

1
  • 5
    As with many words, the word "support" does not have a universally accepted meaning. In practice, words mean what the user of the words want them to mean, even if the recipient understands something different. But this would most likely devolve into a discussion and is therefore not really suitable for this site. Commented Oct 13, 2021 at 9:28

2 Answers 2

5

If you want to know the true definition to a computer scientist, I suggest you ask on the Computer Science Stack Exchange. We are software engineers here, and so will have a very different take on things.

That aside, "support" is a natural language word, it's not a technical term. In the hands of a politician it can therefore mean just about anything they want it to mean, including "not supported in any way." Software engineers have a bad habit of making words mean what we want them to. Typically in programming terms, "x supports y" means "y is in the feature set of y", but that's far from "the true definition."

So the answer to your question, 'What is the ... true definition of "support"', the answer is: there isn't one, other than the one in the dictionary.

0

The definition of "supports" in this context is:

"If you find a case where {synchronous task execution} breaks {the product}, the vendor will accept it as a bug and fix it or reimburse you in some way"

If the product doesn't support the feature, then the vendor will reject or ignore the problem as it will not be considered a defect in the product.

Given that its just an interface, strictly speaking anything you can do with interfaces in Java is supported.

Not the answer you're looking for? Browse other questions tagged or ask your own question.