[PRL] basic terminology: abstraction
Matthias Felleisen
matthias at ccs.neu.edu
Sat Aug 23 12:16:47 EDT 2003
On Thursday, August 21, 2003, at 11:37 AM, David Herman wrote:
> A recent example of where using the word "abstraction" for these two
> different ideas leads to confusion is Guido van Rossum's addled blog
> entry about loops and recursion:
>
> I'd say that a loop is a higher-level concept than recursion;
> recursion
> is more powerful, but also more low-level, like assembly language.
> ...
> I had my epiphany about loops as a higher level of abstraction than
> recursion ...
>
> <http://www.artima.com/weblogs/viewpost.jsp?forum=106&thread=4550>
>
> If loops are higher-level than recursion, then they are a
> *specialization* of recursion. Calling them a "higher level of
> abstraction" makes it sound like they are *more* abstract, when in
> fact he's saying the opposite. (The result is that anyone who's heard
> Matthias's lecture on "Scheme's 241 Loops" choked on their breakfast
> upon reading Guido's blog.)
I don't have answers to your implied questions. I have two or three
comments:
1. Guido and I are in complete agreement. He has some intuition; I just
wish he
understood 311 and friends.
2. I think most (99%) of the so-called computer scientists are confused
about
abstraction, generalization, and friends. So it's not surprising when
nonsense
keeps spreading. The problem is that programming is on one hand too
easy and
on the other way too difficult. We will never overcome this problem.
3. I'd like to propose that you think about an abstraction layer as a
new programming
language and that you read Hudak's tech rpt on programming languages as
the ultimate
abstraction. He's not the first one to recognize this, but he is the
first one to put it as a nice
slogan.
4. As for a boundary, I really think that figuring out an existential
in logic and proof
theory and then understanding how this relates to programming is the
best possible
way to get at this. Just think
Exists Stack::Type.
push : Stack X -> Stack, pop : Stack -> Stack, top : Stack -> X,
mt : Stack -> boolean
and I won't tell you what it is. That's a good boundary. Now start
reading Bob's paper
from there and a lot of things become clear. (That's where Bob's
tremendous contribution
is and I wish people understood this. Then again, he makes no effort to
communicate, so
perhaps he deserves what he gets.)
-- Matthias
More information about the PRL
mailing list