Getting Python Accepted in my Organisation

Alex Martelli aleax at mail.comcast.net
Thu Nov 3 16:24:14 CET 2005


Stuart Turner <turnerst at family-zone.co.uk> wrote:
   ...
>  "Python is a scripting language like Perl, awk, tcl, Java etc...  it is
> not quite a fully developed OO language, but does support some OO that Perl
> doesn't.  To be clear, these scripting languages have their place in our
> environment, but they are not full replacements for C#, Java, C, etc... 

Java is not a full replacement for Java?  Note that Java was placed in
both lists.  It makes sense in the first one because the typical
implementations of Java and Python are very similar: compilation to
bytecode, execution of the bytecode by a virtual machine (Python is
slightly handier because it does the compilation automatically for you
if you haven't done it beforehand, but that's a secondary issue).  There
are also many direct similarities between the languages' semantics
(immutable strings, assignment by "object reference"), as well, of
course, as many differences.

I suspect there's a meaning-changing typo here and what was meant was
not Java but Javascript, in the first sentence.

> because they do not come with the full range of libraries e.g GDI

This assertion is simply absurd.  The archetypal example of a language
which does emphatically NOT "COME WITH" a full range of libraries is C,
which only comes with a pitifully weak "standard library" -- that
doesn't matter much because you can easily download and use lots of
libraries that do not "come with" the language as such.  For example,
GDI is a library that comes with Windows, and you can easily use it from
C -- and, of course, Python (for one of many ways to do the latter, see
http://jotsite.com/blogArchives/cat_python_programming.php under entry
"Using Ctypes to access Windows API").

> Perl.  Python is object orientated, but I do not know what implementation? 

There are many implementations of the Python language.  If you like
Java's implementation best, for example, you can download Jython and run
it on a JVM: then, the implementation will be whatever the JVM supplies
(Jython compiles Python sources into .class files, using JVM bytecode).

> Essentially any language with a pointer can claim to be OO, although Python
> does market itself on OO capabilities.  Do you know what implementation
> they have used?

The best abstract description, funny enough, can be found in a book
written quite independently from Python -- "Putting Metaclasses to Work"
-- shorn of the static-typing aspects.  Python developed a very similar
(but dynamically typed) object model quite independenty from that book's
authors; lately, some metaclass characteristics were inspired by it (but
Python values simplicity, so for example it doesn't autoresolve
metaclass conflicts -- you'll find a recipe to do that easily as the
very last one of the 2nd edition of O'Reilly's Python Cookbook).

   
>     Lets discuss, as I am not a great fan of Perl and if Python is more
> structured then it is possibly worth promoting."

For completeness, one should probably also consider Ruby as "more
thoroughly object-oriented"; unfortunately, the implementation may be
more problematic there -- the standard one is slower and there are fewer
choices.  Ruby's object model is much more similar to Smalltalk's or
Objective C's (shorn of static typing in the latter case, again).
Another variant worth looking at is Boo -- only implemented for dotNet
(but then, if C# is also being considered, that apparently doesn't
matter) and based on type inference, with several similarities to Python
(I have no experience of Boo since Mono's installations on MacOSX
haven't worked well for me, but on paper it looks nice).


Alex



More information about the Python-list mailing list