Wikipedia describes five stages of technology lifecycle:
- Bleeding edge - any technology that shows high potential but hasn't demonstrated its value or settled down into any kind of consensus. Early adopters may win big, or may be stuck with a white elephant.
- Leading edge - a technology that has proven itself in the marketplace but is still new enough that it may be difficult to find knowledgeable personnel to implement or support it.
- State of the art - when everyone agrees that a particular technology is the right solution.
- Dated - still useful, still sometimes implemented, but a replacement leading edge technology is readily available.
- Obsolete - has been superseded by state-of-the-art technology, maintained but no longer implemented.
How would you position modern programming languages withing the stages, eps. C++, Java, C#? Older (Pascal, Fortran) and newer languages (F#, Ruby)?