For Programmers: Free Programming Magazines  


Home > Archive > Extreme Programming > January 2005 > What makes a language agile?









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author What makes a language agile?
christopher diggins

2005-01-05, 3:57 pm

Hello,

I am curious what constitutes an agile language. More specifically what
would we see changed or added to C++ to make it more agile.

I have looked at course at the http://www.agilemanifesto.org but I have a
hard time extrapolating the characteristics that are used to decide a
language is agile, http://radio.weblogs.com/0102677/2003/04/04.html . Uche
Ogbuji's list at http://www.oreillynet.com/pub/wlg/3060 is unfortunately
quite useless as it effectively describes every major language from Fortran
to Eiffel (given an expert in that language).

Clearly there are a few commonly recognized agile processes which seem to
all seem to have the similar characteristics of emphasizing productivity and
quality through rapid prototyping, streamlining processes, and frequent
testing. It is hard to talk about a language being agile in this manner.

For me agile denotes that ability to rapidly produce defect-free code and
respond to frequently changing requirements, irregardless of the process.

A language that enables this, I would expect to have at least some of the
following features:

- short (or non-existant) build times
- extendable syntax
- produces easily reused code
- multi-paradigm ( able to choose appropriate programming methodology for
given problem, whether it is object-oriented, procedural, generic
programming or functional )
- run-time type information / type-checking
- dynamic reflection / introspection of code
- clean and readable syntax
(any other additions to the list?)

Some, likely more contentious, items I, personally, would expect from an
agile language would be:

- AOP support
- supports static type-checking when desired
- allows the writing of highly efficient code when needed
- all primitives are objects
- supports interfaces
- compiled, interpreted and mixed modes as needed
- allows shell like piping of programs
- easily mixed with other languages

A reoccuring theme, is the right tool for the job. An agile language should
help productivity by allowing the programmer to choose the technique needed
to solve a specific problem. Most languages, pigeonhole a programmer, which
hinders productivity (in certain scenarios).

Anyway, enough of me rambling, what really interests me is what other people
have to say about the topic.

--
Christopher Diggins
http://www.cdiggins.com
http://www.heron-language.com


John Roth

2005-01-05, 8:57 pm


"christopher diggins" <cdiggins@videotron.ca> wrote in message
news:RuUCd.115227$Us1.2200379@wagner.videotron.net...
> Hello,
>
> I am curious what constitutes an agile language. More specifically what
> would we see changed or added to C++ to make it more agile.
>
> I have looked at course at the http://www.agilemanifesto.org but I have a
> hard time extrapolating the characteristics that are used to decide a
> language is agile, http://radio.weblogs.com/0102677/2003/04/04.html . Uche
> Ogbuji's list at http://www.oreillynet.com/pub/wlg/3060 is unfortunately
> quite useless as it effectively describes every major language from
> Fortran to Eiffel (given an expert in that language).
>
> Clearly there are a few commonly recognized agile processes which seem to
> all seem to have the similar characteristics of emphasizing productivity
> and quality through rapid prototyping, streamlining processes, and
> frequent testing. It is hard to talk about a language being agile in this
> manner.
>
> For me agile denotes that ability to rapidly produce defect-free code and
> respond to frequently changing requirements, irregardless of the process.
>
> A language that enables this, I would expect to have at least some of the
> following features:
>
> - short (or non-existant) build times
> - extendable syntax
> - produces easily reused code
> - multi-paradigm ( able to choose appropriate programming methodology for
> given problem, whether it is object-oriented, procedural, generic
> programming or functional )
> - run-time type information / type-checking
> - dynamic reflection / introspection of code
> - clean and readable syntax
> (any other additions to the list?)


Except for extendable syntax, this sounds like Python
or Ruby. [grin].

> Some, likely more contentious, items I, personally, would expect from an
> agile language would be:


> - AOP support
> - supports static type-checking when desired
> - allows the writing of highly efficient code when needed
> - all primitives are objects
> - supports interfaces
> - compiled, interpreted and mixed modes as needed
> - allows shell like piping of programs
> - easily mixed with other languages


Well, that's definitely a contentious list! Let's see.
Python doesn't do 2, 5 or 8. I don't know what
7 means, and 1 is supported by easily availible
outside packages.

>
> A reoccuring theme, is the right tool for the job. An agile language
> should help productivity by allowing the programmer to choose the
> technique needed to solve a specific problem. Most languages pigeonhole a
> programmer, which hinders productivity (in certain scenarios).
>
> Anyway, enough of me rambling, what really interests me is what other
> people have to say about the topic.


I think one major evaluation item would be how easy it
is to write an xUnit or FIT port for the language. Agile
processes seem to place a heavy emphasis on a very short
edit / test cycle, and also on automated tests. A language
that makes it difficult to do very quick builds or that makes
it difficult to write tests or to code in a testable manner simply
isn't very suitable for an agile project.

xUnit was easy to port to Python, FIT wasn't due to the
heavy dependence on type information availible via
reflection.

John Roth
>
> --
> Christopher Diggins
> http://www.cdiggins.com
> http://www.heron-language.com
>


Gilligan

2005-01-06, 3:59 pm

I think a language that worked well in an agile environment would be
one that revealed errors and bugs quickly. Strongly typed languages
help do that. Are there more things that would make the code more
brittle around errors and more flexable when no error exists?

I think an agile language would be one that could do anything you
wanted it to do at any given time with any given requirements.

I think tools right now are a big plus. I have worked in IntelliJ and
the refactoring abilities are very nice. I understand Eclipse does the
same. I recently switched to C# development with the Visual Studio
tools. Man, I miss the refactoring abilities. Because of that I resist
refactoring code. It takes 20 minutes for what was free! Another thing
that makes a language work well in an agile evironment is if it
declares aspects of its behavior. In Java the exceptions that a class
throws are specified. This is great. It allows dev tools to generate
try-catch blocks. But it also helps me when reviewing the code's
documentation to decide how I want to proceed. I wish C# had that as
well. I really like C#'s properties(getters and setters) and I like the
enums, and such. But this isn't about C# versus Java, I am trying to
say that the IDE's refactoring, the forward declaration of exceptions
and such help me to make changes and change is good in agile
methodologies.

SirGilligan
(Geoff)

Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com