Language selection for new projects

Alex Martelli aleaxit at yahoo.com
Mon Oct 13 19:21:59 EDT 2003


Limey Drink wrote:
   ...
> Thankyou very much Alex, this is the first time I have attempted to use
> this group for information and I am very pleased with the prompt response.
> 
> once again  thanks

You're welcome.


> By the way, what do you think to Python with regards to productivity
> benefits in general and also in comparison to other languages ?

Python, in my experience, is the most productive language over its wide
range of optimal applicability.  pyrex, a variant of Python which it might 
be still a bit too early to consider fully mature enough for production 
use, extends Python's applicability to somewhat "lower levels", in a sense.

I have seen people with particularly good mathematical mindsets do wonders 
with functional programming languages, but I suspect those who'd be more 
productive with those than with Python for typical applications would be a 
tiny minority of the population. (This remains to be proven, but as a 
working hypothesis it seems quite believable).

If you're after "tinkering" more than "production-level applications", don't
need to consider the issues of group cooperation, or are slowly weaning
yourself from the complexity of perl and don't want the shock of going "cold 
turkey" into the simplicity of Python, Ruby may be a good compromise.  Perl 
itself is too complicated, and other scripting languages (Javascript and 
variants, VBScript, bash & variants, PHP, IMHO Tcl too though some Tcl'ers 
will disagree, awk, etc) too feeble, to compete for productivity with Ruby 
or Python.

Other languages which, depending on cultural background, available
tools, and problem areas, may be competitive with Python include Lisp
(Common, maybe the lesser-known ISO kind, Arc if it ever matures, Scheme, 
...), Dylan, Smalltalk -- and no doubt others that I haven't had a chance 
to try out yet.

Looking at the kind of languages that currently appear to rule the roost -- 
C, C++, Java, C#, Visual (and other kinds of) Basic, Object Pascal, 
Fortran, Objective C, Ada, Cobol, Eiffel -- it does not seem to me that any 
of them can compete in terms of programmer productivity with the ones 
listed above (I do not have sufficient experience with _all_ of them to 
make this claim substantially stronger; I do have susbtantial experience
with most, and enough acquaintance with all, to hold this opinion rather 
strongly) for application areas suitable for the latter (of course, if I 
had to code, e.g., a Linux device driver, I _would_ use C -- that's not 
within the application areas suitable for the various languages above).
Once-cool weirdish languages such as snobol, icon, etc, should not really
be considered for normal production use.

If one had infinite time, trying out all languages in the world would be
instructive (and, for some, fun).  In practice, I would suggest to somebody
who wants to become a professional programmer to start with Python
(easiest to learn, yet powerful enough to be a constant companion 
thereafter, whatever kind of programming one does); then add a lower-level 
language, and I would suggest C because of its huge importance in both
practical open-source tools and existing literature about programming; then
add a mind-expanding one of the functional variety (I would suggest Haskell, 
but some ML variant, or Clean, or Erlang, and others yet, might be favoured 
by others); then some Scheme or other Lisp again mostly for instructional 
purposes (chiefly to be able to study the great book, now freely available 
online, known as SICP -- "Structure and Interpretation of Computer 
Programs", by Abelson and Sussman).  By the time this course of study was
finished, new languages might well have emerged, of course;-).  And, also
of course, non-programming languages and non-languages issue should
also be studied -- relational databases and SQL, XML and related 
technologies, networking and protocols, GUIs, algorithms and data 
structures... (Python helps a lot in playing around with each of these 
other important technologies and concepts, btw).

Somebody who wants to program but doesn't see producing programs as
an end in itself, but just as a means to whatever other ends, might be happy 
just with Python (and a little pyrex on the side, perhaps -- but right know 
I do not think there are texts to learn pyrex that don't assume you already 
know some C) and whatever smattering of other computing technologies
they may happen to need in their application area.


Alex





More information about the Python-list mailing list