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