[Edu-sig] should we have learning languages?
mokurai at earthtreasury.org
mokurai at earthtreasury.org
Mon Feb 13 09:28:37 CET 2012
On Mon, February 13, 2012 2:42 am, kirby urner wrote:
> One still hear's tones of regret that the good old
> days are over, when one's choice of a first year
> computer language was obvious: Algol or Pascal.
LISP, Sir, LISP every time. Well, Logo or Scheme, more recently. (I
reviewed The Little LISPer for Byte Magazine in 1978, and called it the
best introductory programming book in any language. It has been replaced
by The Little Schemer.)
One of the greatest advantages of LISP is that one can rewrite the
read-eval-print loop to one's own taste, so that LISPers are almost the
only people in computing who are aware that syntax is bupkes. They call it
syntactic sugar. But I know APLers who do the same thing, and it was even
applied to FORTRAN once, in the form of RATFOR.
Myself, I write tutorials for elementary school students in Turtle Art,
where they get to program directly in tree structures, not in text. Thus
they are not "sheltered" from parse trees, and can easily see that a TA
program is the same in tree form, or if translated to Logo, Python,
Smalltalk, APL/J, FORTH, or any other language in which TA has been or
could be implemented.
> Today there's no such consensus (if there ever
> was), but another question is "should we have
> learning languages?"
Yes. Multiple languages.
> There was a time when it was considered
> intuitive that languages not used in the "real
> world" could be all that much more powerful
> as educational tools because weighted to
> "learner" needs.
Logo, Smalltalk, and APL, in particular. Logo and Smalltalk were designed
so that children could learn them, and APL so that people could talk to
each other about computers. Ken Iverson successfully used APL to teach
first-grade arithmetic in an IBM-funded project.
Except that they actually are used in what real programmers laughingly
refer to as "the real world".
> BASIC was one of those languages, and we
> may argue that it gave birth to the PC era, which
> is what gave rise to the *nix explosion (aka the
> "dot com bomb") as a follow-on event.**
> But is the Darwinian process that winnows
> the field to but a few languages also giving us
> more learnable ones?
The process is in no way Darwinian, which would imply Natural Selection or
Sexual Selection. What we have instead is network effects in which the
existence of large bodies of code in horrible languages is taken as
sufficient reason to continue to program in the languages of those
corpora. My father, a pioneer in the use of APL in actuarial work, offered
to write a textbook in APL to be published by the Actuarial Society, but
they insisted on FORTRAN instead. (This heavy-handed approach was only
possible in the time of dead-tree textbooks, of course, but unfortunately
that time is not quite over.) Since then FORTRAN has taken to stealing
from the design of APL, but has never stolen enough.
At the same time, "mainstream" CS academics have wandered all across the
map of programming languages, from Algol to BASIC to Pascal to C to Java,
but have never let up on the fundamental fallacy that every budding
high-school CS student should be taught the same single language so that
they can take the same AP exam.
> Consider Grace, a new language in development
> for the express purpose of teaching object
> oriented programming to students. Why not
> use Python? Python lacks compile time type
Why not Smalltalk? Why not J? and while we are at it, why not teach
> Is that bad?
> It's a subject of religious wars. Note how the
> voices beneath the main question worry about
> it's "subjective" nature: code for it's potential
> to inspire "flame wars":
Edsger Dijkstra taught that separation of concerns was one of the most
important concepts in applying Computer Science to real programming. In
particular, getting programs provably correct before worrying in the least
about efficiency. He described, advocated, and demonstrated the process in
A Discipline of Programming. Similarly, Donald Knuth claimed, "Premature
optimization is the root of all evil." However, neither of them applied
his principle to language design. Dijkstra claimed that APL was "a mistake
carried through to perfection", while Knuth to this day teaches MIX
assembly language in The Art of Computer Programming.
> The answer that's eventually accepted takes
> the approach of reserving scorn for extremists
> in both camps.
"I invented the phrase Object-Oriented Programming, and C++ was not what I
had in mind."--Alan Kay
APL, the unCOBOL--me, on a bumper sticker sold at APL conferences
> ** of course "dot com bomb" sounds bad
> for business whereas the *Nix revolution paved
> the way for the Free Web and free just about
> everything. New businesses depend on "going
> viral" i.e. the infinite replicability of binary
> objects is the key to their success, versus
> failure (a big turnaround in some industries)
> Edu-sig mailing list
> Edu-sig at python.org
Silent Thunder is my name, and Children are my nation.
The Cosmos is my dwelling place, the Truth my destination.
More information about the Edu-sig