From: Dan Wilder
Subject: Re: Python as an alternative to Tcl, Lisp and Eiffel : was Re: Newbie. Why Python?
Date: 
Message-ID: <E8osxG.ILz@eskimo.com>
ยทยทยทยท@gco.apana.org.au writes:

[ ... ]

>Python is impressive and comes with excellent documentation ( Guido's
>tutorial is especially impressive as an introduction ). Most
>importantly, it seems to be supported by an active community of users
>like Linux is.

>I just deleted my Visual Eiffel installation today.
>For me, Python seems to be a better fit...

It would seem the two languages have rather different missions.

I don't think I'd want to write an operating system kernel in
Python.  In Eiffel, it might be possible.

Eiffel is perhaps unwieldy for the quick one-off sysadmin
program to do some simple manipulation on a password file
or a runlevel table; Python might not make a very good choice
for large mission critical real-time software; say, a flight
computer.  

Someplace in between expect to see a crossover where the
relative advantage shifts from one language to the other.

Some contrasts.

The absence of static typing in Python, while
contributing to quick development over some range of program
sizes, perhaps up to and including something like "grail,"
the Python browser, is bound to have adverse impact on 
both development time and on reliablility, with increasing
scale, and as more programmers become involved in a project.

Grail provides another contrast.  Compare its speed with
that of other browsers written in compiled languages.  While
this may not matter in some contexts, the difference in
execution speed certainly will matter in others.

Python does have multiple inheritance, a step in the right
direction, with renaming of sorts to avoid name collisions.
Inheritance is liquidated (more or less) at each stage, also.

There is no implicit join of inherited methods; instead,
name collisions not otherwise handled, are resolved by
taking the first feature found in the built-in search order,
and ignoring any other features of the same name in the
inheritance tree.  This beats declaring an error and requiring
that the ancestors be revised, but it may have some unexpected
results.  And it fails to provide the type safety that comes
with the join rules.

The syntax of references within classes becomes tedious, as
one types self.this, self.that, self.the_other over and over
and over again. 

Rumor has it Python may incorporate some form of design by
contract.  How this might be done in a dynamic typed language is
an interesting question.

The amount of interest Python is generating on the internet is 
heartening.  As is the completely unencumbered licensing 
(compare with Java), and the large class library containing many 
more wrappers for C library functions than we are used to seeing 
in Eiffel libraries.

I believe I would see Python as a more adequate alternative to
Java, however, than as a substite for Eiffel.  The somewhat
surprising claims of the Java camp aside, the missions of the
various languages simply are not the same.

---
Dan Wilder