
What is a Procedure? [pdf] - bumbledraven
http://www.cs.toronto.edu/~hehner/WiaP.pdf
======
downer72
I've gotten into numerous conversations with people about the proper terms to
use for members of executable body of code, and the results are surprisingly
opinionated.

 _Almost_ everyone agrees that a function (the noun), following the
mathematical definition thereof, is a thing which accepts an input or multiple
inputs, and returns a consistent, repeatable result, directly related to that
input. But... say 'method' and/or 'procedure' in front of the wrong people,
and you will be taken to task on the semantic meaning of such words, and what
is proper and correct within a variety of technical fields.

Similarly, what is meant by "functional" (the adjective) is also up for
debate. Some people, when they hear the word "functional" think you're
speaking in terms of "functionality" perhaps in the context of user acceptance
testing, and the proving of a minimum viable product. Others will think you're
referring to the "pure functional" programming paradigm, like as in the sense
of Haskell.

Still others will think you are simply referring directly to a specific Java
method, or a specific JavaScript function, and correct you accordingly, and
not consider whether the terms have any deeper meaning or context at all.
(like: " _no, this is Java, so it 's a method..._" or " _no, JavaScript only
has functions, not methods..._ ")

That being said, I've always felt that these terms have such broad,
generalizable definitions, since they've sort of been borrowed from layman's
English, and repurposed within a specific context.

Is there _REALLY_ a difference between a "method," a "procedure," and a
"function" proper?

~~~
qewrffewqwfqew
> Is there REALLY a difference between a "method," a "procedure," and a
> "function" proper?

The context you are speaking in _entirely_ determines the answer to this
question.

Your context reminds me of "is there REALLY a difference between a 'list', an
'array', a 'tuple' and a 'vector'?", as different languages overload these
terms with different (sometimes the same!) properties.

The OP seems to be taking a perspective embedded in operational semantics,
where a non-halting, unspecified or incorrect "named callable" should not be
properly called a procedure.

Personally, I find both kinds of hair-splitting semantic arguments a waste of
time when they're isolated from the underlying question, which should be:

> what sort of conversation do we want to be having about these things? What
> notation or terminology is going to make that easier?

