David Buck pointed me to a thread on slashdot. I had noticed, but I rarely delve that deeply into the slashdot threads. Dave points out two interesting replies: From the "Java is great (but they don't realize Smalltalk does it better)" camp and From the "They just don't get it" camp For instance:
no stack objects; I don't know the internals of the stack management and the complexity of C++, but since C++ managed it, why not Java ? why should I have to create an object on the heap just to use it locally ?As Russ Pencin used to say in Smalltalk classes, Why do you care? or this:
I don't know why the garbage collection is such an advantage. In the place that I work we have written apps with milions of lines of code using C++ and we never had a problem with memory leaks. Of course, being military and scientific apps, there was a good design before coding, so we had a pretty good knowledge of when to allocate/free stuff. But it is not hard to make C++ objects garbage-collected. All that is needed is a base class that upon its construction puts the object in a global list and a template pointer that increases/decreases automatically the reference counter of the garbage-collected object when assigned to it; later, the list will be traversed and objects with no reference will be deleted.Chuckle. Either he's effectively written his own GC system and doesn't realize the sunken investment, or he's just clueless. Then there's this:
For the second point, I don't like either interpreted or byte-code languages with virtual machines. I think they are a waste of CPU time and resources. I am 100% certain that there is no point in having static Java apps executed by a virtual machine: they are very slow, even with top-of-the-range Pentiums. And when we say slow, we mean slow enough for an experienced user to handle: for example, I have personal experience of a versioning and control application that we use at work which is very slow, although it runs on a P4 at 1.8 GHz. It may not be slow, but it definitely feels slow.That's right, one badly written app condemns an entire paradigm. Why doesn't he write machine code?