From: Clifford Heath Date: 2003-11-21T10:33:39+09:00 Subject: Re: "stereotyping" Julian Fitzell wrote: > Well, I've never had a discussion about this that has changed the minds I'm not the religious type, and I appreciate you taking the time to write, and in fact I agree with a lot of what you say, including about Java. Although I've only done smaller projects using it I agree that a lot of things about it are windy and annoying, and lack of proper generics makes it less type-safe than promoted. C# has most of the same problems, but it'll be interesting to see how generics change that. > In my opinion, no language is ever used successfully for "large" projects > when using the former definition. Well, that's probably a fair generalisation over the industry, but my experience is different - all three products on which I've worked (C, C++, C#, with Perl, Ruby, Java and horrors! VBScript in parts) are/were large in most relevant senses, including extent and depth of maintenance over time by a changing team. It's really the human factors that allow or deny success in this kind of project. > Our project is an enterprise level application for a university community of > 30,000 people; many of the large smalltalk applications out there are being > used in similar environments and have been around for more than 6 years. One customer, right? Try doing that with fifty customers, all on different old versions, all abusing the system in different ways that the designers didn't intend, and all wanting their issues attended to without having to take the hit for an upgrade to the most recent version. Your comments on refactoring are well-taken, but I feel would be solved better by better tool support in a more strongly-typed language. To safely refactor in any language, you must be confident of limiting side effects. A dynamic language just makes side effects will occur at runtime instead of compile time - and if your test suite doesn't give very high code coverage how will you know that the system can be released. Remember, you can't just patch it after it's in production because it's not just one local customer, it's dozens. How often during your time on this project have you needed to quickly patch a critical error recently introduced into production? That sort of thing is simply impossible in our product environment, and would guarantee business failure almost immediately. > I really don't understand your statement... Perhaps what I've said clarifies it a bit. Clifford.