From: "M. Edward (Ed) Borasky" Date: 2006-05-03T14:12:53+09:00 Subject: Re: Sharp knives and glue Yeah, but ... There actually *is* a language designed more or less from the ground up for extensive compile-time error checking, package management, enforcing good programming habits and just in general making the discipline of software engineering a reality. That language is Ada, and it's still around. So ... why hasn't it dominated software engineering? Is it just because programmers are mostly undisciplined creative cowboys who refuse to program in languages that hold them accountable to some kind of discipline? Why, when Ada has been around so long, is there a need for Java, Perl, C++, Ruby, Javascript, Visual Basic, Python, PHP, etc.? David Pollak wrote: > Yep... unit tests help, but don't cure everything. Design by Contract > puts > the unit tests in the code rather than separating them out. Ruby has > a DbC > module. See my rant: > http://dppruby.com/dppsrubyplayground/show/Rant+about+weakly+typed+languages+and+design+by+contract > > > I've never seen a project with more than 12 developers that didn't use > tools > like lint or compile-time type checking to help developers catch errors > early. Strong typing allows IDEs to help developers write better code. > Yeah, once you know all the methods/attributes/etc. on > ActiveRecord::Base, > you don't need method completion, but until then, having an IDE to > help you > learn the environment is wicked nice. > > Ruby is in fact a very sharp knife... much like C was/is. C++ evolved to > include lint-style compile-time checking because the complexity of > software > developed with C and team sizes required it. Java evolved to include > garbage collection, code verification, and exception handling with DbC > (explicit declaration of exceptions) because of the complexity of the > systems built with Java. > > See the following rant: > http://dppruby.com/dppsrubyplayground/show/Ruby+must+be+careful > > I totally love Ruby. It's an awesome and amazing environment for me > and a > small team to build prototypes of cool software. However, I've > managed the > development of large scale systems for financial institutions. I > would not > swap Ruby for Java into these projects. There are too many security and > stability issues that Ruby introduces (when I say "stability" I mean the > stability of a code base where the functionality of a class can be > changed > out from under the class.) > > Ruby is great, but it needs some tools and mechanisms to allow it to > scale > to enterprise sized projects and teams. > > > On 5/2/06, kate rhodes wrote: >> >> having worked in perl and php and Java i have to say that when you're >> working with inexperienced programers and / or programmers who just >> don't >> care about doing things the right way flexible languages like perl, >> ruby, >> and php are IMNSHO dangerous. It's far too easy to write crap code. When >> there are 50 solutions to every problem people tend to use whatever >> works >> instead of the best solution. These languages are great in that they're >> easy >> to get started programming with...but they suck in that they don't >> enforce >> good habbits. >> >> *IF* you can convince your team to actually use test driven >> development i >> think that these languages would probably be fine, but if the problem is >> that you're dealing with people who aren't using best practices to begin >> with then I would have to say "Yes, go for Java". There are far fewer >> solutions to every problem and thus far fewer stupid options. >> >> Of course if you REALLY want to enforce good practices you might want to >> look into languages like Eiffel with its static typing and >> enforcement of >> design by contract. Then again... selling a project written in Eiffel >> to a >> client is probably even harder than selling Ruby one. >> >> -kate / masukomi >> >> > > > -- > -------- > David Pollak's Ruby Playground > http://dppruby.com > -- M. Edward (Ed) Borasky http://linuxcapacityplanning.com