Code Comments
Programming Forum and web based access to our favorite programming groups.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
Post Follow-up to this message"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 >
Post Follow-up to this messageI 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)
Post Follow-up to this message
Show a Printable Version
Email This Page to Someone!
Receive updates to this thread
Powered by vBulletin
Copyright 2000-2006 Jelsoft Enterprises Limited.