On 1/21/2019 11:52 PM, Anthony Carrico wrote:
On 1/18/19 6:36 PM, George Neuner wrote:
> Historically, many computer language designers were mathematicians, and
> they deliberately sought to distinguish "computer" functions from
> "mathematical" functions.
>
> It has yet to work completely - witness the legions of newbies every
> year who don't understand that computer arithmetic differs from the math
> they were taught in school.
George: Aren't you making my case here? The mathematicians actually have
the same trouble with their components as we engineers! Stoy says, "a
careful distinction is vital in the case of functions", admonishing us
not to "confuse functions with the algorithms representing them."
Weren't Schemers making this distinction with the word "procedure"?
You and I may, in fact, agree on the basis - but I don't believe we are
arguing the same things.
If I understand correctly, you are arguing that computing should
distinguish functions from procedures because functions have a
connection [however tenuous] to mathematics that procedures do not.
I am arguing that, in computing, functions and procedures have no
significant difference, and that distinguishing them erroneously
conflates computing with mathematics and thus confuses people.
You began by saying:
However, for practical reasons, the programming community is now
placing more emphasis on the distinction between functional and
procedural abstraction, so I'm very surprised to see the Racket
community rally to eliminate it. Even within the same abstraction
mechanism, the two ideas are very useful.
The problem I see is that the ideas AREN'T separate.
Somewhere upward in this thread I wrote [not necessarily to you,
Anthony] that mathematical functions simply are, whereas their
corresponding computer "functions" are a series of steps that, at best,
can only approximate the result of the mathematical version.
There is no "series of steps" distinction between a computer function
and procedure - they both are a series of steps.
The computer abstraction of "applying a function" can only be stretched
so far. Those fiddly little "steps" that approximate the function can't
legitimately be ignored: they consumed time and energy, and [barring
bugs] in the end they gave you only an approximation - not an answer.
For computing, "function" vs "procedure" is a distinction without a
difference [at least a significant difference]. The mathematical sense
of "function" doesn't exist, and teaching people that computers /
languages can provide mathematical guarantees is - I think - both
misleading and a disservice to the learner.
Should an engineering education sweep the distinction between the
abstract and the concrete under the rug?
In engineering the distinction actually exists - and it is not ignored.
Engineering takes great pains to call attention to the difference
because there is NO mathematical certainty in engineering - however
close, everything is just an approximation.
Computing IS engineering - which I think is at least part of your point.
My [not quite the same] point is that computing IS NOT math and should
not be conflated with it.
> The problem is that quite a lot of the talk about functional programming
> is just marketing.
So, are people gravitating away from the word "procedure" because
"functional" is now being marketed? But seriously...
What people choose to call something is related to their understanding
[or lack thereof] of the subject.
In any case, it's a different question than why people are gravitating
toward languages that *claim* to provide more mathematical guarantees.
The average programmer today has only high school math, no computer
science education, and has programming skills that are only slightly
better than "script kiddie".
I would argue that they don't understand that the so-called
"mathematical guarantees" being offered are a sham, and so most of the
increased use of such "mathematical" languages is merely the result of a
marketing effect.
There is also the "shiny new object" effect. I don't put any stock in
growth numbers ... the real measure of a language is its steady state -
how many adopters are still using it 10 years later.
I've had a similar argument many times about sales of books. I keep
pointing out that sales of intro books are not a real measure of
language use - lots of people will buy an intro book and then abandon
the subject shortly thereafter. Sales of intermediate/advanced books
are a much better measure, but they too can be misleading because at
that level buyers may be interested in something *related* to the
language but not the language itself.
YMMV,
George
--
You received this message because you are subscribed to the Google Groups "Racket
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.