Nathaniel Talbott wrote: # [but neglected to cite who he quoted] # > On the pro-C++ side, I still draw comfort from a # > clean compile. I don't think I would ever feel # > safe in Ruby without a suite of unit tests # > exercising all the things that can go wrong in my # > code at run-time. Maybe so, but many others seem to feel safer with increased experience. This may also be a function of what sorts of applications you and others are doing. But I would like to see the compiler do other types of checking (yes, pun intended); see below. There are some major applications that I (and millions of other people) use (and even like) that are unfortunately semi-notorious for their run time errors, and it is my understanding that these are mostly written in C++. Too many people have drawn comfort from clean Java compiles, only for others of us to have later on encountered "NullPointerException"s rather more often then we would have liked. (This in a language once promoted as having no pointers.) IMHO, Donald Knunth is the only person on earth that could *realistically* draw comfort from clean compiles with respect to things that can go wrong at run time. :-) # Hmmm... # # "Ruby - the language that makes you feel like unit # testing" # # Sounds like an advantage, not disadvantage :-) While I see pros for # going to byte-code compilation, none of them have anything to do # with error-checking. It seems to me the compiler is a tempting # crutch to lean on instead of properly testing your code. Just my # $0.02. Hmmm.... That's also a good reason for removing Ruby's -w flag, which is just another tempting crutch. Indeed, syntax error messages should be removed too, since they are just crutches for those slothful holdouts that don't properly test after each newly added statement. :-) Actually, I think it would be nice if Ruby's -w flag were as powerful as Perl's and if there was something comparable to Perl's "use diagnostics;". These features do a fairly remarkable job of warning about and of explaining about probable/actual programming errors at compile time (although Perl is so big and complex that these features still miss lots of problems). Over the last year, the expressed consensus of the long term expert Ruby users seems to have been that they very rarely encounter the sorts of problems where strong static type checking would be useful--indeed, so rarely so that strong static type checking would actually be counterproductive in terms of overall productivity at the same level of quality. (I haven't seen a satisfying theoretical explanation of why this is the case, but I think that part of the reason is that off by one errors and dirty data cause many more problems in practice than dirty syntax ((type-wise))--and compilers are oblivious to these things.) Given this situation, about the only practically effective way to argue for adding some additional form of static type checking to Ruby is to base such arguments on actual experience with Ruby programs. Only on the basis of such (and much!) *actual* *Ruby* *experience* would you then have a reasonable clue about what sorts of things were actually needed, why they were needed, and where they were needed. I strongly suspect that some optional Ruby Way (tm) of static type-checking will eventually be developed, but I doubt that C++ will be the language that Ruby will borrow from. Conrad Schneiker (This note is unofficial and subject to improvement without notice.)