"s.ross" <cwdinfo / gmail.com> wrote in message news:09981649-FB48-47D5-95FB-8D108FC8EF83 / gmail.com... > > The corollary implication, intended or not, is that none of these > sites could benefit from Ruby or from Rails. The answer to that is not > clear. Much of the code on larger scale sites has been C/C++ or Perl > up to this point. Taking Moore's Law into account, it seems feasible > that at some point, improvement in Ruby's performance characteristics, > along with increase in affordable hardware capability would make Ruby > just as obvious a choice as C/C++ > It might become the case that Ruby will continue to evolve so it will be more appropriate for large-scale software development involving many programmers focused on safety-critical software. The key to this is "evolution." Early programming languages such as COBOL and Fortran have continued to evolve, and their current standards are impressive. Most people are unaware of the large improvements in those languages. Some, such as PL/I, have not evolved very well, largely remaining true to the imperfect design of that language in its earliest incarnations. For a language to retain a following, it must evolve to accommodate the approaches to software practice. This means the original designers (or stewards) of the language must be willing to abandon or improve some features to keep the language design up-to-date. Evolution has been an important part of the C++ standard, the Ada standard, and the Java [non-] standard. In fact, instead of abandoning a legacy language (e.g., COBOL) in favor of an entirely new language, it is often better to simply upgrade to the new compiler for the language already in-use. Just as Fortran is no longer the FORTRAN of old, so too are C++ and Ada improved from their earlier versions. Those who remember the first Ada compilers and criticize Ada based on that experience would benefit from learning how it has improved in recent years. Those who remember COBOL-74 and learned to detest it, would be amazed to see how the language has opened to more options for practical programming. In the case of COBOL, many of the earlier, terribly messy, features are still in place for the purpose of upward compatibility, but those features can be ignored using newer features without sacrificing one's knowledge of the fundamental language design. Ruby will most certainly evolve. The language seems to be designed so it can evolve. What will be necessary, to ensure that the evolution of Ruby is not haphazard and self-limiting, is careful analysis of each new change. One of the more important changes that Ruby needs is a better model of "design-by-contract." I am not a Ruby expert, so I do not presume to know what changes are most appropriate, but for design of large-scale software such as that targeted by Ada, I think there could be some structural and architectural improvements in Ruby. Also, a newer language, named SCALA, has some design features that make it very interesting. Other language designs, during future evolutionary steps, could learn from the design of SCALA. As I look at SCALA and Ruby, I see the potential for Ruby learning from SCALA. Most important, when a language is not designed to evolve, or is designed so it cannot evolve, that language is guaranteed to fall into disuse over time and even become inappropriate for its intended niche. Richard Riehle