Popular conceit about learning programming languages

Lulu of the Lotus-Eaters mertz at gnosis.cx
Fri Nov 22 14:14:16 EST 2002


Pascal Costanza <costanza at web.de> wrote previously:
|I would like to know more specifically what features make Python
|special to you. As Kenny put it, in what regards is Pythonthink
|different from Otherlangthink?

I think studying the -Zen of Python- is an excellent start for an answer.
And after that, it is an excellent intermediary.

One feature that is not directly a single one of the lines in -Zen- is
the openness of Python.  When I write Python code, I know at every
moment that I could "step behind the scenes" if I wanted to.  Attributes
are not kept away from me, although the underscore conventions make
recommendations I usually obey; the magic methods are available to
change how objects respond to operators, but I know not to do that most
of the time; functions are first class, and basic FP techniques are
available, but only to be used when procedural code is not as
straightforward; and so on.  Python is not at all a
bondage-and-discipline language.

On the other hand, Python still maintains an obvious distinction (to
keep my metaphor) between what is "in the scene" and what is behind it.
With a language like CL, I feel overwhelmed by the feeling of having to
understand -everything- that I -could- do at every moment I do one
particular thing.  The S-expressions, for example, make it painfully
obvious -exactly- what the program is actually doing.  It has no
comfortable level of abstraction where I can pretend I'm living in this
safe and simple world when I just want to write a loop or a conditional
test.

At the other end, Assembly--or C too to a large extent--bring me into
the world of the machine.  I have to think about memory allocation, and
stacks, and pointers, and all sorts of low-level details that have
nothing to do with the problem *I* want to be solving.  You can get
behind the scenes easily with these, but they're the wrong scenes...  I
don't want to poke into the machine, I want to poke into the language.

Of course, all of these are in contrast to a monstrosity like Visual
Basic.  It is bad enough at the language level, where you are handed a
set of high-level abstractions that are both clumsy and inflexible.  You
can't ever step behind these... except in the sense of learning a whole
different language (C/C++/C#) and an unwieldy API (WinAPI/COM/NET/...).
But the way "programmers" actually work in VB is even worse... drag some
widgets around at random, and hope that everything mysteriously works
despite the fact you have no idea what it is doing.

Yours, Lulu...

--
 mertz@  _/_/_/_/ THIS MESSAGE WAS BROUGHT TO YOU BY: \_\_\_\_    n o
gnosis  _/_/             Postmodern Enterprises            \_\_
.cx    _/_/                                                 \_\_  d o
      _/_/_/ IN A WORLD W/O WALLS, THERE WOULD BE NO GATES \_\_\_ z e





More information about the Python-list mailing list