Re: Some errors in MIT's intro C++ course
On Sep 12, 3:48 pm, Daniel <danielapar...@gmail.com> wrote:
On Sep 11, 3:54 pm, James Kanze <james.ka...@gmail.com> wrote:
Very small projects. Small enough that scripting languages
have a definite edge. (Up to about 1000 LOC, I tend to use
AWK, rather than C++.) And none of the studies mentioned
study the maintainability of the results.
perl is pretty good for a lot of tasks - complex reporting, data
extracts, etc. A comparable Java/C++ would probably have 10x/40x more
lines of code respectively.
Perl is probably the worst language I've ever seen. But it does
have a large number of ready-made modules which can simplify
a lot of tasks. (So do C++ and Java, for that matter. But
their generally a lot more difficult to find.)
In general, scripting languages are good for smaller projects.
They do require less lines of code: no variable declarations,
etc. What they leave out is what is generally necessary to
manage a large project: if I consider AWK, in a couple of
hundred lines, it's pretty simple to keep track of which
variables have been used, what they contain (including the
logical type---AWK variables are untypes), etc. Make that tens
of thousands of lines, or more, and it rapidly becomes
impossible. So you require declarations, and let the compiler
do the checking for you.
(although Java does
work well for smaller projects, just above the size for
which typical scripting languages work).
Interesting. James, everyone respects your programming
skills, but your writings on Java are frankly nuts :-)
It's based on concrete experience. Java has some serious
Look at the open source
world, there are tons of very highly regarded Java projects,
particularly in the areas of XML processing, data processing web
I'm not saying it's impossible. Just more difficult than with
a better designed language. Most of the larger Java projects
I've seen have been, in fact, GUI front ends to other tools
(e.g. Eclipse). Java is very good for GUI's, not because of the
language, but because of its libraries.
Depending on what you're targetting, Java's distribution model
(with one jar file for all platforms) may be an advantage or
a disadvantage (the "write once, debug everywhere" syndrome).
Some are collaborative, some are single author. A good
example of a widely used single author tool is Saxon maintained by
Michael Kay. I checked an older version, and it has about 1000
classes, organized into packages, typically from 100-200 loc, although
some are larger. I maintain a rather less widely used Java open
source tool, which has about 2800 classes, organized into packages,
which seems to be a workable size for one person to maintain. My
experience is that scripting languages won't work for this size of
Totally agreed. They do seem to be somewhere in between, where
Java is still quite usable. Whether you choose Java, C# or C++
for such projects depends on a lot of issues: Java is clearly
the least powerful langauge of the three, but distribution
issues may make it preferrable.
There are C++ counterparts for some of the Java projects, e.g. Apache
xerces and xalan C++ versions, but they tend to have fewer features,
larger code bases, weird syntax, custom classes for things like
strings, and the consequent need to spend a day on google to figure
out how it all works.
A lot of the open source projects seem to be open source just to
show off how poorly they are engineered:-). (This isn't
necessarily the case for the ones you mention: from what I've
seen, Apache is on a level close to many professional
projects---better than a lot I've seen, even. Historical
reasons also lead to e.g. using your own string class.)