Python does not play well with others

Harry George harry.g.george at boeing.com
Wed Jan 24 07:24:37 CET 2007


John Nagle <nagle at animats.com> writes:

>    The major complaint I have about Python is that the packages
> which connect it to other software components all seem to have
> serious problems.  As long as you don't need to talk to anything
> outside the Python world, you're fine.  But once you do, things
> go downhill.  MySQLdb has version and platform compatibility
> problems.  So does M2Crypto.  The built-in SSL support is weak.
> Even basic sockets don't quite work right; the socket module
> encapsulates the timeout mechanism but doesn't get it right.
> 
>    In the Perl, Java, PHP, and C/C++ worlds, the equivalent
> functions just work.   That's because, in those worlds, either the
> development team for the language or the development team
> for the subsystem takes responsibility for making them work.
> Only Python doesn't do that.
> 
>    Python has been around long enough that this should have
> been fixed by now.
> 
> 					John Nagle

You experience isn't shared by everyone.  Some of us find Python the
most functional and portable of the candidates you mention.

Perl - excellent modules and bindings for just about everything you
can think of, but the whole thing is painful to watch.  Once you've
done a few code reviews on 10,000 line perl packages where even the
authors have no idea what the code is doing, you tend to look
elesewhere.

Java - a world of its own.  They reinvent the wheel instead of linking
to existing libraries.  In the process you get libraries upon
libraries upon libraries.  Even if there isn't a performance hit, you
(as a human) can get lost.  And the language is just too verbose to
live with.

PHP - are we talking web scripts or serious programs?  Are you doing
numerical analysis, NLP, computational chemistry, or bit twiddling in
PHP?

C - the portable assembler.  Solid, trusted, tunable performance,
bindings for everything.  Of course memory bugs can stop your project
in its tracks for indeterminant periods.

C++ - objects tacked onto C; but that didn't work so invent a whole
world of templates and rewrite everything again, but now trickier than
C to bind to other languages.  Good work can be done in C++, but that
is a testimony to the programmers and not to the language.

Python - it just works.  Same scripts run on every platform.  Bindings
available to every C/C++/FORTRAN library I've needed so far.  Often
the bindings are not complete, but oddly enough the binding developers
have chosen to do just the functions I need, so who cares.  A clean
architecture for adding more function bindings if I'm so inclined.

-- 
Harry George
PLM Engineering Architecture



More information about the Python-list mailing list