Return-Path: Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list ant-dev@jakarta.apache.org Received: (qmail 21678 invoked from network); 20 Dec 2000 04:38:43 -0000 Received: from glatton.cnchost.com (207.155.248.47) by locus.apache.org with SMTP; 20 Dec 2000 04:38:43 -0000 Received: from [192.168.0.2] (w005.z208176150.sjc-ca.dsl.cnc.net [208.176.150.5]) by glatton.cnchost.com id XAA15185; Tue, 19 Dec 2000 23:38:42 -0500 (EST) [ConcentricHost SMTP Relay 1.10] Errors-To: User-Agent: Microsoft-Entourage/9.0.2509 Date: Tue, 19 Dec 2000 20:38:41 -0800 Subject: Re: Did somebody say Shut up and Write? :) From: James Duncan Davidson To: Message-ID: In-Reply-To: Mime-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit X-Spam-Rating: locus.apache.org 1.6.2 0/1000/N On 12/19/00 12:16 PM, "James Cook" wrote: > I hate to sound like I'm a whiny child here, but you guys should really read > my proposal before you start thinking about implementation specifics like > workspace/module. I have. You state that the one of the reasons for treating everything as a task is for efficiency. And you note that Ant spends cycles analyzing the dependencies between targets. I think you over stress the impact of these on performance. In fact, in a typical build of even a small project of 10 or so class files -- Ant spends so little of its time in the setup necessary to assemble the project tree *and* analyze dependencies that this is not worth optimizing out. Almost all time is spent in the compiler or in other tasks -- the impact of which is beyond the control of the core. As interesting as it is to view the world as a tree of single type nodes, when you get into using things for long its inevitable that some sort of specialization creeps in somewhere. And its actually quite useful at times. Genericity is not necessarily your friend. Yes, this is a biased opinion -- it's based on 3 1/2 years of coding Java at JavaSoft though if that means anything. Also, as appealing as it is to say that all things should implement interfaces -- it doesn't always work out so well in practice. I've been a heavy proponent of interfaces everywhere in the past. And a strong detractor of inheritance no matter how shallow. However, after working that way for a few years, I've found that there are a few problems with this. Once you code an interface, you should *not* touch it. It's a published thing that, if you change it, breaks other things in subtle and nasty ways. Also, in *so* many cases that I've used interfaces in to allow all sorts of implementations behind -- I've found that there have been 1, maybe 2 implementations of those interfaces. And for that you pay in extra code, extra class load time, etc. That's not to say that interfaces are bad either -- they have their place. And that place is in very specifically defined long lasting unchanging code where there are going to be *lots* of implementations. I'm talking about things like JDBC, JAXP, Servlets, etc. And even there -- you'll see that there are actually quite a few abstract classes instead because there is functionality that needs to be there of some sort. -- James Duncan Davidson duncan@x180.net !try; do()