Re: Where is Python in the scheme of things?



On Wed, 2006-10-04 at 16:21 -0400, gord wrote:

What is particularly disappointing is the absence of a Windows IDE,
components and an event driven paradigm. How does Python stand relative to
the big 3, namely Visual C++, Visual Basic and Delphi? I realize that these
programming packages are quite expensive now while Python is free (at least
for the package I am using - ActivePython).


Ok, this is probably a little long but I always enjoy telling this story
and I think it will answer you question in terms of usability.

I got started using python on windows, back when I was largely a VB & VC
++ developer (6.0). (With a little java, some php and bunch of other
less important languages.) I was working on a large project (developing
a videoconferencing suite), and we had several options for how our
proprietary protocol would handle relay selection for each connection.
The system used a STUN-like relay system and we knew performance would
be significantly enhanced if this connection was routed through a relay
"close" to one party or the other. However, there is a distinct
disconnect between "close" in the real world and "close" on the
internet... and that can change from moment to moment based on the
conditions between the two points. So we came up with three or four
different algorithms for it and the discussion (as developer discussions
sometimes do) devolved into a flamewar. So, I decided to write a
program that would simulate each algorithm, and then subject that
simulation to various network effects.

Having heard over and over and over how great python was, I decided to
write it in that. I scheduled 2 days to write the simulator, and it took
me less than an hour! (Mind you, that was learning the basics of the
language and writing a simulator.) I called a meeting, ran the simulator
through its paces and well all decided on a solution.

Few weeks later, we needed to embed small scripts into the system....we
played with a bunch of different languages and ended up deciding on
python. Then we needed something that would let us actually put
together a UI and actually let us embed that UI in activex controls,
java applications, VB programs, etc. Again, we looked at the options
and chose python. This time using PyQT to provide the UI widgets,
event driven programming and so forth. One of the deciding factors was
that if we really needed to optimize any part of the UI code, we could
re-implement that subsection in C/C++ for an extra speed boost...which
we never had to do.

So basically, that one little simulator took a pure C++ project and
turned it into a bunch of C++ modules held together by python glue.
Which ended up giving us a really flexible AND maintainable design.

Since then I've pretty much been a dedicated python developer, except
for those places where there is a very specific need that python doesn't
meet... which is surprisingly rare.

There are a few IDE-like python editors that run on windows, BlackAdder,
Eric, and a bunch of others. (If I forgot your favorite, I'm sorry....)
The real advantage here over, say the Visual Studio stuff, is that you
can choose which one you want, rather than being stuck with an
development environment that may or may not suit your working style.
(After using python for a few months, I basically stopped using IDEs as
I found it more productive for me personally to use Emacs...)

Between that and the language's emphasis on developer productivity,
there is a world of difference between python and the big three. (Which
ever big three you pick.)

I was a pretty productive programmer with VB/VC++/etc, usually one of
the most productive members of whatever team I was on. But now that
I've made the switch to python, I'm several orders of magnitude more
productive in terms of actually writing the code. Which means that I
can take more time to design my code for easier maintainability in the
future.



Please discuss where Python shines.
Gord



.



Relevant Pages

  • Re: [Python-Dev] The baby and the bathwater (Re: Scoping, augmented assignment, fast locals &#
    ... but on a *space* of programs of identical function, as of manner of probing recent features and modules of Python that I manage to apply to it. ... parent lexical scope, be performed on the object bound to a parent scope ... I guess not in the manner of someone who started programming when programs had to fit in a couple dozen kbytes. ... intersection of the file tagged "arrogant would-be mind-readers", and of the file tagged "you are late on the normal trajectory if you did not reproduce my own oh-so-significant mistakes", both well-populated already, although I forgot who I put in them. ...
    (comp.lang.python)
  • Re: [Python-Dev] The baby and the bathwater (Re: Scoping, augmented assignment, fast locals &#
    ... Python 3.x development has started already, so it's not so much a "fairy ... of your approach when using the Python programming language. ... the mistake I mention, both in personal code, as well as code I was ... Nobody forces any school to present closures to beginners. ...
    (comp.lang.python)
  • Re: Attack a sacred Python Cow
    ... The fact that a function is defined within a class statement doesn't ... It's bad programming, but the world is full of bad programmers, and we ... It's also a way to make Python more complicated than it needs to be. ... def fun(self, cat): ...
    (comp.lang.python)
  • Re: Any maths or science fans using Solaris? (related to Mathematica on Solaris)
    ... Sage is based around the Python language, but glues together lots of open-source maths software - a list is at ... Automatically Tuned Linear Algebra Software ... Convex optimization, linear programming, least squares, etc. ... Cython: C-Extensions for Python ...
    (comp.unix.solaris)
  • Re: Perl Vs Python: Blind Folks
    ... perl's ";" etc. makes writing python programs perhaps very device ... is roughly one fourth of what it is with speech. ... Most screen readers primarily output stuff using highly intelligible, ... This means some major difficulties in programming in any language. ...
    (comp.lang.perl.misc)