Rue the day...

Steve Arnold sarnold at arnolds.dhs.org
Tue Jan 29 14:42:15 EST 2002


Cliff Wells wrote:

 > On 29 Jan 2002 08:51:54 -0800 Rony wrote:
 >
 >> 1. How you keep defending the Python language over and over again.
 >>  Don't understand me wrong, Python is a VERY good language
 >> and we are using it for years now, like a lot of you. But
 >> each time some guy asks here a question like 'Should i use
 >> Python of Perl' or 'Python or C for a real world application'
 >>  evrybody here starts here to defend Python. IMHO this is
 >> useless, since allready the question is stupid... The
language you want to choose depends on a lot of items and not only
 >> wether you have to use brackets of indents to structure code
 >> block, or to have to declare variables or not. Even the
 >> developmentspeed issues like you see here often depends on a
 >> lot of things, we have as an example 2 C goeroes in house
 >> that develop at the speed of other python applications, only
 >> the applications will be different and THAT is the reason
 >> that some application is written in C and others in Python...
 >>  So if someone asks if he should use Python , the only real
 >> answer could be 'Have a look at it, try it and decide...
 >> you're a big boy'.
 >>
 >
 > True, but that's not what people are really asking when they post
those
 > questions.  They want a feature comparison.  Plus you have to
remember that
 > Python is still one of the lesser used languages and people in a
minority
 > group tend to be somewhat defensive about their position.  To
 > test
 >

this
 > point, try staring at a goth girl in a nightclub sometime and see 
what happens.
 >
 >
 >> 2. How you keep answerring the same questions over and over again.
 >>  Style 'WIch IDE to use to develop with python' or worse
 >> 'Does python have a compiler'. If you think this is just a
 >> small part of the question here, take google and do a search
 >> on IDE or compiler on this group.
 >>
 >
 > These questions are asked a lot, but then again, given the pace of
 >  open-source software development and the beta state of most of
 >  the
software
 > in these categories, the answer may change in a relatively short
period of
 > time, so they remain valid questions.


I guess I'll have to respond to at least the first point/response ;)


In a sense, a language is just another tool (albeit, a rather
important one) and you should generally choose the right tool for
the right job.  The practical answer to this is dependent on both
the tools the programmer is familiar with, and the project 
requirements.  For example, if I were developing safety critical 
code, there's really only one viable choice: Ada (95 or in special 
cases 83).  Based on the language features and capabilities, to 
choose otherwise would be stupid.  Also, under Boeing's DO-178B 
standard, another choice would not be allowed (for good reason). 
However, I have seen too many projects (most of them in the millions 
of $'s range) have trouble because of a poor choice in languages and 
tools (and lack of SE knowledge, no process, etc, etc).  This 
happens mostly because some management dweeb only hears industry 
hype and propaganda (can you say Java?), and many programmers seem 
actually afraid of learning another language.  IMHO, a competent 
programmer (and any software engineer) should not care if he/she 
already knows a particular language or not.  They should be good at 
what they do regardless.

At the opposite extreme (from safety critical avionics code), if I
were doing processing of text data I might use AWK, Python, perl, or
even sed or tr.  It all depends on my needs (and how much reading of
man pages, etc).  In my case, I would not choose perl; mostly
because I am less familiar with perl than I am the others, and
because whenever I try and read most other people's perl code, it
makes my head hurt :-/

What usually gets left out of the argument is a true understanding
of the language design and features, and the impact it can have on
quality and productivity (in all but the most trivial of cases).
This is where Python has a significant edge over almost anything
else, for most problem domains (except the safety critical arena,
and a few others).  For very many programming chores, python makes
people an order of magnitude more productive (literally).  Kinda the
opposite of C++ or Java... [donning flame-retardant suit]  The other
important thing Python does is open up the world of programming to
virtually everyone.  Sure, (almost) everyone can learn to program,
but at what level?  Most introductory courses use other languages,
and from what I've seen, the majority of students never get to the
fun part because they're bogged down in arcane syntax/semantics,
etc.  It becomes almost impossible to focus on concepts and
applications (and many are turned off from it entirely).  Sure, many
software domains (eg, real time comm, industrial process control,
nuclear reactor emergency shutdown systems, avionics, etc) require
serious education and discipline on the part of the software 
engineer, but the average person should have the tools at their 
disposal through which they can do some of their own automation, 
etc, and perhaps graduate to creating real applications.  IMHO, 
python may not have been the first to do this, but it's the first to 
do it so well, on this many platforms, and for free.

  [shameless plug: engineering discipline is a *good* thing in the
software world; it's what raises us from the level of hacker or
programmer to that of a legitimate professional.  Before you choke
or curse me, think about it.  Would you rather the avionics code
flying the airplane you ride in was written by a team of software
engineers, or hackers?]

The key to the beauty and power of languages like Python and Ada is
that they were designed for humans and not for compilers or machine
efficiencies.  Ada has an undeserved bad rap in several areas; some
were never true, while others were only true in the first version of
the language, or back when the available compilers were still
primitive.  The reality is that (due to advances in compilers and
such) Ada code now outperforms native optimized C code in most cases
(and is *much* cheaper and easier to maintain).  Many people who
should know better think Python is "some kind of web scripting
language" when the reality is that Python is a beautifully designed
modern object oriented programming language, that just happens to
also be an excellent scripting language.  Sure, you can do most
anything with perl that you can do with python (shit, perl even has
objects now) but I don't think I'd get much disagreement from anyone
(including Larry Wall) if I said that writing anything large or
complex in perl would require an enormous amount of self-discipline
on the part of the programmer(s), as well as a very good design,
etc.  I know it can be done, but at what cost?

Maybe I'm just getting old (or experienced, or wise, or something)
but I have little tolerance left for things that get in my way, make 
things more difficult than they should be, or keep me from getting 
my work done.  This goes for tools, languages, process, and people. 
  This is why I use Python and Ada instead of C++ or perl, why I use 
Linux instead of windoze, why I'm not shy about causing a ruckus if 
it means the office is better off.  That last one could get me into 
trouble...

Sorry for the length, but every once in a while it kinda just pours 
out ;-)

-- 
*******************************************************
Steve Arnold                http://arnolds.dhs.org:8080
Visit Steve's Geeky Zope thing today!





More information about the Python-list mailing list