So after a month of research into "agile languages", I must conclude there is no such thing. Barbarian coders are constantly looking to increase their speed to build the next new thing. Java developers are frustrated with their language's bureaucracy. Students entering the workforce are disappointed when a programming career is less fun than they imagined. None of these things relate to agile development. I'm not convinced a language could be built that would be a significant advantage to agile development. Software development methods are mainly concerned with people, while programming is about crafting code. They are really two separate problem domains. Anyone claiming a language is agile is trying to deceive you with hype.
-- What is an Agile Language? by Ken O. Burtch
You gave one fairly general example of where you are coming from:
The more logic one puts into a single statement the harder that becomes.
For me SQL is the obvious case in point. But the same may also be true for Perl code.
Perl code development could be impeded by excessive compacting of code.
To give us a clearer understanding of where you are coming from,
please give us specific examples of how
"excessive compacting of code" impeded Agile development or of SDLC
problems that could be solved by the programming language becoming more agile.
BTW, I laid down what I consider important in programming in On Coding Standards and Code Reviews, for example:
- Correctness, simplicity and clarity come first. Avoid unnecessary cleverness.
- Establish a rational error handling policy and follow it strictly.
- Plan to evolve the code over time.
- Don't optimize prematurely. Benchmark before you optimize. Comment why you are optimizing.
- Write the test cases before the code. When refactoring old code (with no unit tests), write unit tests before you refactor.
and many more. I went through these just now, but struggled when trying to decide which of these were more "agile"
(update: they seem to be more aligned with Software Craftsmanship
than Agile Software Development;
see also Readability vs Maintainability).
What is an Agile Programming Language?
The agile manifesto defines agile development:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
To be anti-agile therefore, a programming language needs to:
- Inhibit interaction between individuals and demand business process
- Prevent working software while forcing the writing of unhelpful docs
- Block collaboration with customers and refuse to function without a legal contract
- Make code changes impossible without compliance to a project manager's plan
It's hard to imagine such a language.
Updated Jan 7 2021: Added "What is an Agile Programming Language?" section.
|