Beginning with Python; the right choice?
kee at kagi.com
Sat Jun 27 19:35:03 CEST 2009
I'll give you the same advice I used to give to people when they
wanted to decide whether to get a Mac or a PC, go with what your local
group of friends is using.
In general, if you have a local friend who can come over weekly (or
you can visit weekly) and have them help you with the stumbling
blocks, that is way more important than whether one language is better
than another. If there is someone at work who can stop by your desk on
a daily basis, that is even better.
All computer languages have a learning curve and a whole set of quirks
that are things that "everyone knows" (-: unless you are new to the
language). Eventually you will grok the language and know all the
weird gotchas that make no sense to a new person and from that point
forward the documentation will make sense and you'll be able to go
very far without having to ask others for help. Until that time,
something as simple as the use of a colon instead of a semi-colon can
halt your project for weeks. Having someone who can look at your code
and say "there's your problem ..." is way more important than the
With all that background, here are my personal choices.
I started a long time ago with FORTRAN, BASIC, assembly language for
single chip micros, and ultimately Hypercard and AppleScript (on the
Mac), and finally the language used by the Arduino micros.
I've built a ton of code using Hypercard all the way from web server
CGIs to standalone user applications, to unattended code that runs
forever doing a task when needed. Hypercard is no longer a viable
coding platform so I had to find alternatives.
For GUI stuff on a Mac or PC, I use RunRev.
For all the Hypercard stuff I've built in the past I migrated to
Runtime Revolution (RunRev) which can be described as a multi-platform
Hypercard on steroids. The workflow is similar to Cocoa on the Mac.
You first create the user interface by dragging buttons and fields and
controllers and such onto windows and then when you like the way the
user interface works, you write code to have the various interface
elements do what they are supposed to when a user interacts with them.
For GUI type applications, things that run on a user's computer,
sometimes referred to as a heavy client, I find Runtime Revolution to
be extremely easy and I'm very productive in that environment. I have
web CGIs built in RunRev and it works quite well but ... it is a
single threaded system so a web site with tons simultaneous hits will
have scaling up problems. That said, high traffic web sites do use
RunRev but I wanted something that was not single threaded for web
For web stuff I have used RunRev but am moving towards Python.
I went with Python mostly because a friend of mine who knows me and
who writes in many languages, thought it was the best fit for the way
my mind works, and he volunteered to help me when I get stuck on
stuff. He helped me find the Komodo IDE and got me set up to where I
had a very simple hello world CGI that I could expand upon.
Python has a proven ability to scale up and support more users than I
will ever need to support. It is what Google and many others run on.
The philosophy is for there to be only one way to perform a function.
A competent Python programmer can follow the code written by another
because there is only one dialect of Python (unlike Perl). These are
things I like about Python.
I'm using Python 2.6.2 with the Komodo IDE and I'm limiting myself to
the packages that come with the standard install of Python. So I'm not
using TurboGears or Django or WSGI or any of those, I just use cgi and
urllib (and urllib2). Until I know enough to really understand what my
code is doing, and more importantly what those packages are doing or
not, I'm not going to use add-on packages. So far I have not needed
All that said, right now I am extremely inefficient in Python as
compared to RunRev. I can build a fairly complex CGI in RunRev in a
day, with Python, it takes me a month. Much of that has to do with
RunRev being a variation of Hypercard (both use a HyperTalk style
language) and I'm way past the 10,000 hour usage level on the
HyperTalk language. I'm barely at 100 hours with Python so right now
everything is a struggle. But I like Python and plan to stick with it.
More information about the Python-list