What's better about Ruby than Python?

Andrew Dalke adalke at mindspring.com
Wed Aug 20 21:41:31 CEST 2003


Doug Tolton:
> It depends what you are talking about.  If you are talking about
> making some large cross industry library I might be inclined to agree,
> but when it comes to building good high level abstractions within a
> company, this argument doesn't make sense.  Any feature has to be used
> in the proper context for it to be useful, Macros are also this way.

As a consultant, I don't have the luxury of staying inside a singular
code base.  By your logic, I would need to learn each different
high level abstraction done at my clients' sites.  And given the usual
software engineering experience a chemist or biologist has, those
are unlikely to be good.

> I just don't find that argument compelling.  By that logic we should
> write the most restrictive language possible on the most restrictive
> platform possible (ie VB on Windows) because allowing choice is
> clearly a bad thing.

The inference is that programming language abstractions should
not be more attractive than sex.  Classes, functions, and modules
are not.  Arguing as you do is an all-or-nothing approach which
overly polarizes the discussion.

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

I don't use Linus's kernel.  The machine I have with Linux on it
runs a modified version distributed by a company and with all
the other parts needed to make a useful environment for my
work.  And I loath the times I need to recompile the kernel,
even though I actually have done kernel mods on Minix in OS
class back in school.

In a similar vein, the different distributions once upon a time were
very divergent on where files were placed, how startup scripts
worked, which libraries were included, and how things were
configured in general (eg, which libc to use?).  If I wanted to
distributed precompiled binaries, I was in a bind because I
would need to ship all the variations, even though it's just for
"Linux".

There's more consensus now on, but it took a lot of time.

In short, my comment is that Linux does allow the diversity,
it did cause problems, and people now decide that that
diversity isn't worth it, at least for most uses.  For me as an
applications developer, that diversity just makes my life more
complicated.

> 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.

What if Python had a marker so people could tell the intepreter that
the next few lines are Lisp code, or Perl, or Tcl, or any other language.
Would the result be more flexible?  Yes?  More powerful?  Yes.
Better?  I think not.

> Why do we allow people to write functions even, I mean you have to
> 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.

Your argument of an extreme has no weight because it's different
than what I'm saying.

Extra power and flexibility can have bad effects, not just on the
language but on the community built around the language.  Software
development is rarely a singleton affair, so a good language should
also optimize the ability for different people to use each others'
libraries.

Functions and modules and objects, based on experience, promote
code sharing.  Macros, with their implicit encouragement of domain
specific dialect creation, do not.

> 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.

Err, no.  I use open source because it's cheap, because the tools
are of good quality, because if something breaks I can track down
the problem, and as a risk management bonus, if the project ever
dies, I can still maintain things on my own.

I never, ever, ever, want to get into the case where I'm maintaining
my own private, modified version of Python.

>  Do you have any
> specific examples that are comparable where customization broke a
> community down?  This sounds like baseless hypothetical speculation to
> me.

Lisp.

A language which allows very smart people the flexibility to
customize the language, means there will be many different flavors,
which don't all taste well together.

A few years ago I tested out a Lisp library.  It didn't work
on the Lisp system I had handy, because the package system
was different.  There was a comment in the code which said
"change this if you are using XYZ Lisp", which I did, but that
that's a barrier to use if I ever saw one.

> You are saying you don't know how to tweak a language to fit it your
> specific domain better than a general puprose language?  And you are
> saying you are a pretty good language designer?  If you don't know
> your specific domain well enough to adapt a general purpose language
> to it better than it is already written there are several
> possibilities:
> 1) You don't know your domain that well
> 2) You work in a very general purpose domain
> 3) You aren't a very good language designer

4) a small change in a language to better fit my needs has
subtle and far-reaching consequences down the line.  Instead,
when I do need a language variation, I write a new one
designed for that domain, and not tweak Python.

> 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
> purpose domain (actually implementing is of course a vastly different
> story).

But if Python is HERE  ............................... and my domain is HERE
I'm not going to try to force them together.

> You are in essence saying that Python is perfect, that no one could
> make a more useful abstraction than it already has, and that saying
> that one could do so is hubristic.

I looked up 'hubris' just now.  It's the wrong word for me to use.

http://dictionary.reference.com/search?q=hubris
hubris: Overbearing pride or presumption; arrogance

I don't mean 'overbearing', I mean perhaps 'confidence'.
'arrogance' is also the wrong word.  Something without the
negative overtones.

                    Andrew
                    dalke at dalkescientific.com






More information about the Python-list mailing list