What's better about Ruby than Python?

Alex Martelli aleax at aleax.it
Wed Aug 20 23:15:16 CEST 2003

Doug Tolton wrote:
> Linux is based on this concept of allowing people to extend the
> system, it doesn't seem to have suffered from it.

Linus Thorvalds sits at the center and rejects a LOT of proposed
modifications to the kernel -- everybody's free to distribute such
patches separately, but they're NOT part of Linux.  You can do
exactly the same with Python: send patches to Guido, have him
reject them, distribute them separately with no claim they're part
of Python (e.g., Stackless is in exactly this situation).

Powerful macros in Python would *BYPASS* the crucial filtering 
role of the chief architect -- Linus or Guido in these cases.  And
here's where the "attractive nuisance" side of powerful macros,
the allure that would make oodles of youngsters flock to them,
amplifies their danger: as it's much easier -- and satisfying to
many -- to "play the amateur language designer" by coding macros,
rather than (e.g.) to write device drivers for Linux, the flood
would quite likely be huge.

> Same argument as above, I don't agree with this logic.  Python is a
> great language, that doesn't mean it couldn't be better though.  If
> that were the case development would be cease.

But WHO will make it better: Guido, whose skill as a language
designer is proven, or a hundred authors of sets of macros?  It
is just too easy to "play language designer" -- far more people
will do it than are actually GOOD at language design.

> Why do we allow people to write functions even, I mean you have to

Because "once and only once" is the mantra of programming: in a
language that lacks user-written functions or procedures, application
programmers have to copy-and-paste code, a horrid way to program.

> learn the syntax for calling them, what the variables are and what
> they do.  Bah, we should make everyone use only built in functions, if
> they want a different one, use a different language.  What?  It makes
> no sense to me.

It doesn't, because the number of different SYNTAX FORMS needed for
powerful expression is incredibly tiny (so that even Python, which is
a small language, can easily afford redundance there!) while the
number of different COMPUTATIONS (functions and procedures) needed for
even a small application exceeds the numbers that can be reasonably
provided as built-ins.  In other words, it makes no sense because you
are comparing, not even apples and oranges, but rather cantaloupes and
termites -- completely different things.

> So don't allow people to customize the system huh?  They why is Python
> Open Source?  That's the *entire* point of Open Source, so that people
> can tweak and customize to their own environment.  Do you have any

People can "tweak and customize" "their own environment" in Windows,
too (ever seen TweakUI and friends?!), so if your point was well taken
open-source would not exist.  Since it does, it proves your point is 
deeply mistaken.

> Designing a good language is all about designing the right high level
> abstractions.  Even a medium skilled designer should be able to design
> a language that maps better to their specific domain than a general

I entirely, utterly, totally and completely disagree with this point.

This is like saying that even a medium skilled musician should be
able to write music that plays better to their specific audience than
great music written by a genius who's never personally met any of
the people in the audience: it's just completely false.  I want to
use a language designed by a genius, and I want to listen to music
written by Bach, Haendel, Mozart, and the like.

Moreover, judging by the way BY FAR most languages around are in
fact designed, it's abundantly clear that "medium skilled language
designers" are a VERY scarce breed indeed.  And yet with powerful
macros everybody and their cousin WILL play the amateur language
designer.  No thanks.  If you want Dylan, Common Lisp, or Scheme,
you know where to find them.  Please leave *ONE* language alone,
with the integrity and conceptual beauty AND usefulness that can
only come from having *ONE* designer -- a genius-level one --
firmly at the helm.

> abuse something.  That paradigm is filled, there are many languages
> that restrict programmers because they might misuse a feature, or they
> are just too dumb to get it right.  I say fine, leave the languages
> like Java / C# / VB to those people, but let's make Python a language
> that allows people the room to do it the way it needs to be done, not
> so much the way Guido or whoever thinks it should be done.

Let's leave Python as *ONE* language, WITHIN which everything does
work as you say -- not a *MYRIAD* subtly incompatible languages, each
partly designed by a different guys, mostly mediocre at language
design.  Just as many languages are overly restrictive, so many
others are overly permissive (see the above mentioned examples)
thanks to powerful macro systems.  PLEASE leave Python alone at the
SWEET SPOT, at JUST THE RIGHT COMPROMISE -- neither too permissive
nor too restrictive.  GvR's genius (and/or luck) made it that way;
don't branch the language into a zillion mediocre ones.


More information about the Python-list mailing list