From: David Pollak Date: 2006-05-03T07:21:25+09:00 Subject: Re: Sharp knives and glue ------=_Part_36482_5909018.1146608482197 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Content-Disposition: inline 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+language= s+and+design+by+contract I've never seen a project with more than 12 developers that didn't use tool= s 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 enforc= e > 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 ------=_Part_36482_5909018.1146608482197--