From: Isaac Gouy Date: 2005-10-01T02:31:45+09:00 Subject: Re: Large Ruby Apps ? Kent Sibilev wrote: > I don't agree. Static analysis captures errors that are not usually a > big problem. That's a huge generalization - can you substantiate it? afaict a trivial error can be a big problem when it causes a failure that has significant consequences. > If your unit tests have enough coverage they will capture > all these errors If I was as good a programmer as my ego pretends I wouldn't make any errors and the whole issue would be moot. If I was as good a programmer... I would have unit tests with enough coverage (and I wouldn't have made any errors writing the unit tests)... Errare humanum est. > but static typing makes your programs too noisy since you have to feed your > compiler with a lot of crap. The comment was about "static analysis" not about "static typing". Here's an example of static analysis of source code written in the dynamically typed language Erlang: Detecting Software Defects in Telecom Applications Through Lightweight Static Analysis: A War Story http://user.it.uu.se/~kostis/Papers/bugs05.pdf http://user.it.uu.se/~kostis/Papers/war_story.pdf Here's an example of static analysis of source written in C: SLAM and Static Driver Verifier: Technology Transfer of Formal Methods inside Microsoft http://www.cse.ogi.edu/~byron/papers/history.pdf > Very good example of > how bad it could be, check out java with generics. By increasing the > size of your program you increase the possibility of making a mistake > and your program becomes harder to read. > > Kent. > > On Fri, 2005-09-30 at 22:00 +0900, slonik.az@gmail.com wrote: > > Very useful discussion that highlights quite few misconceptions. > > So far in this thread posters were contrasting "old school" static > > type and variable checking versus Ruby's dynamic nature with run-time > > Unit Testing properly done. The truth of the matter is that a > > programmer's life is easier when one has both: > > > > 1: Static (aka compile time) program analysis that captures many > > "human" errors like typos, obvious flow control flaws, etc. > > 2: Dynamic, run-time program verification consisting of unit tests and > > integration tests. > > > > Ruby clearly lacks static analysis tools. > > > > Just my 2 cents