Python is an Agile programming language

by Uche Ogbuji

Related link:

Many Python boosters have looked for a good word to place Python among programming languages. We believe it has all the best qualities of "scripting" languages and "application" languages, such that neither term really does it justice. Kevin Altis and Ward Cunningham came up with "agile", and this seems to appeal to some at first blush. I'm not so sure yet, but it's an interesting idea. See full text for more.

When Kevin posted this idea on the Python-n-business forum, and someone asked him exactly what he was on about ("I have a qualitative sense of what you're getting at. Can you define just what you mean by 'agile' though?"), Kevin expanded thusly:


It's like art, you know it when you see it. ;-)

But seriously, For over a month I was just looking for a better way of
describing Python that sounds right and positive and the best I could come
up with were terms like nimble, which happen to be part of the definition of

Characterized by quickness, lightness, and ease of movement; nimble

Ward made the leap to saying agile. He also stated:
"Well, there are agile languages and agile methods. When you put the two
together you get agile squared."

So, at this point I don't have a set of [tenets] of an agile programming
language, but Ward and I were planning to put together a list of the things
that make a language like Python so special. I've got a rough list that I
started on the plane trip back from PyCon, but it needs to be fleshed out a
bit more and then refined so the message is tight. You'll notice some of
this comes from the success stories intro, Dana Moore's slides, Stephan's
Python pages... Ward and I will probably drink beer and revise some more
Monday night after the Portland Python user group meeting.

  • excellent for beginners, yet superb for experts
  • highly scalable, suitable for large projects as well as small ones
  • rapid development
  • portable, cross-platform
  • embeddable
  • easily extensible
  • object-oriented
  • you can get the job done
  • simple yet elegant
  • stable and mature
  • powerful standard libs
  • wealth of 3rd party packages

And I don't know where this should go, but I want to get the message out
that "Programming is fun again!"


2003-04-14 10:13:35
Interesting, but ...
What's the ultimate purpose of coining a pithy phrase for a language? Marketing? Product placement. Not to troll, but the list of features for Python looks very much like those for Perl, or, even better, Ruby. So, can we call Ruby an agile language? Of course we can (and many of us do).

Is this part of an effort to define a *class* of agile programming languages (i.e., is this an inclusive act), or an attempt to simply bolster a particular language? If the former, that's great, and certainly worth doing. If the later, well, it makes me think of Sun's efforts to paint Java(tm) as the *only* language offering write once, run anywhere.

I don't blame Python users for trying to push the language (by all accounts it's great, though it's not my cup of tea), but I'm leery of any attempts at co-opting terminology. There is much more to be gained by removing stereotypes about modern (e.g. Python, Ruby) scripting/interpreted languages in general, and removing the notion that they are not suited for "real" programming.

2003-04-14 10:29:27
Interesting, but ...
I think your thoughts are spot on. I did mention that I was uncertain about this "agile language" thing, and as you suggest, would much rather educate people away from the bias against what some term "scripting languages".

Let us not forget, though, that marketing and reason are often unrelated concepts, and that sometimes the ultimate good of marketing something worthwhile over that which is just conventionally accepted is worth the use of dodgy reasoning.

Because of this last consideration, I do accept this push to find a clever tag for Python, and I certianly think it a worthwhile effort for boosters of other excellent but non-mainstream languages, incuding Ruby.

2003-04-15 14:45:11
Tiny niggles
I generally like this, though there are some unimportant things that I feel I must comment on. :)

Though the word 'agile' is very descriptive and colorful, confusion with 'agile methods' seems like it could be a problem for 'agile languages'... also, I'm not quite sure why 'Object Oriented' is on your list of tenets. Sure, OO is a great way to frame a number of problems, but it's not always necessary, and not always ideal. It seems like a bit of an abitrary requirement.

Just my 2c

2003-04-19 23:03:19
Describing Python as an "Agile" language, rather than scripting/glue language, indeed seems very catchy! It is frustrating to always have to explain why Python, being a "scripting language", is suitable for large scale work. "Scripting language" is a derogatory moniker, in a way, while "Agile" sounds just spot on. It has no negative connotations. Good work!