Python does not play well with others
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
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
PHP - are we talking web scripts or serious programs? Are you doing
numerical analysis, NLP, computational chemistry, or bit twiddling in
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.
PLM Engineering Architecture
More information about the Python-list