Academics slam Java

Levi Pearson levi at cold.org
Mon Jan 14 11:33:35 MST 2008


"Bryan Sant" <bryan.sant at gmail.com> writes:
> Yet their article blames Java specifically for this problem.  This
> problem would be just as true with students taught with any non-low
> level language.  Java is too high-level for the type of preparation
> these persons are wanting for systems and device driver development.
> This is true.  Students should be getting exposer to C, C++, ASM, and
> Ada if they plan on doing any low-level development.  However, moving
> from Java to <insert your favorite scripting language here> isn't
> going to solve that problem.

The article could have been worded better in its introduction, but
what it's really arguing for is not the elimination of Java.  Java
just happens to be what a lot of schools use nearly exclusively.  If
they were using Python nearly exclusively, they'd have used Python as
their primary target.  It doesn't make sense to argue against
something that isn't currently happening, though, so they used Java.
I'm sorry that you get offended whenever Java is mentioned in a less
than perfect light, but you're going to have to learn to deal with
that eventually.

They simply want greater emphasis on how computers actually work,
systems software skills, and some understanding of math and formal
methods.  These are hard topics, and they're somewhat expensive to
apply, but if they're not taught in the universities, then where will
they be taught?  Trade schools, task-specific training facilities,
etc. are well suited to teaching people how to use software tools and
techniques.  Universities are not, but they are well-suited to
teaching hard stuff like math and formal methods.  These guys are
calling for universities to take back their proper role so that in the
future, we'll have people that understand the hard stuff so that we
can continue to build airplanes and stuff after the current
programmers retire.

> Agreed.  If that is the niche market a student wants to prepare for,
> then don't study Java, Lisp, Ruby, PHP, or anything other than C, Ada,
> and maybe C++.

You may have noticed that they didn't call for an exclusive study of
C, Ada, and C++.  They also mentioned the importance of Lisp-like
languages and, yes, even Java.  They said that variety was more
important than the specific languages used.

> See, I never saw where they stated what you have in parenthesis.  For
> the safety and security/DoD/avionics industry, yes, high-level
> languages may not be the right fit.  However, saying so for "today's
> software industry" is too broad.  If I want to be prepared for
> "today's software industry", then I had better know high-level
> languages very well.

I'm beginning to doubt that you did anything more than skim the
document.  Look at bullet point 3 in the intro, and find the
parentheses there.  And if you don't think safety and security are
important to the software industry at large, you've got your head in
the sand.  Also note that they don't advocate *not* learning
high-level languages.  They specifically state that programmers should
know Lisp, Java, C++, etc.

>> The thing is, anyone who knows the Java libraries well and can string
>> them together adeptly can take one of those jobs.  There are a lot of
>
> Ha.  That's totally wrong.  I have yet to work on system where I could
> be easily replaced by a person who has some basic Java know-how.  A
> professional using a high-level language is going to be using
> components and libraries that improve their efficiency.  That merely
> frees them to solve larger and more interesting issues in the guts of
> their problem domain.  If you were hired to create yet another
> inferior version of a hash map or some generic algorithm for Java,
> then yes, you're going to be replaced easily.  However, if you're
> building gmail, eBay, Overstock, eTrade, etc, it's a little harder
> than you think.

There are indeed jobs that require Java knowledge that also require
other skills that make those positions valuable.  The value is not in
the Java skills (those are easy to replace!) but in the
domain-specific skills, which in your examples are probably things
like scalability and database knowledge.  You haven't mentioned any
problem domains in particular, though, so I can't be sure what the
hard problems you're talking about are.

>
> Quick!  Tell all authors to stop writing books in English, because
> lots of people know English, and they could be replaced by virtually
> anyone!  As we know, all authors are equal because they all use the
> same language, and thus they are all drop-in replacements for each
> other.

You'll never scare any crows with that straw man.

>> them in the business software world, which is, frankly, not full of as
>> many hard problems as you say.  That's why they choose Java; it's easy
>> to replace developers.
>
> No, they choose Java because it is an enabling factor for them to
> produce the software they need.  Without high-level languages like
> Java, most of these projects would have no chance for success.

Sure.  So, why do they pick Java instead of some other high-level
language?  Because there are a crapload of Java developers out there,
so they're easier to find/replace.  Java developers who also have a
solid foundation in math, low-level understanding, and some training
in formal methods are not so easy to find, and are becoming more
scarce as those other skills are less frequently taught.

>> compilers, real-time operating systems, inertial navigation systems,
>> avionics, etc. for systems that cannot have serious flaws.  Those are
>> the kind of problems these guys are dealing with and having a hard
>> time finding qualified candidates for.

> And Ada works perfectly for these systems.  I like Ada.  It's a fine
> language with many useful features that I personally appreciate.  I
> wish that Java would adopt more concepts from Ada.  However, it's a
> niche language that would be crippling for creating applications at
> the scale that Java does.  They each solve different problems well,
> and in my opinion, Java has a much broader applicability.  Should
> students take a class or two in Ada?  Sure.  Are they all becoming
> mindless, replaceable, Java-drones?  No.

I think you underestimate the size and complexity of these kinds of
projects.  And, on the contrary, I think Ada's strict nature enables
complex systems designed an implemented by large teams rather than
crippling them.  There just aren't enough Ada programmers to pick
from, and they're all going to work for Gov't contract shops right
now, and Java works well for business support systems.

Anyway, my point (and the point of the article) is not so much to
trumpet the virtues of Ada or to demonize Java, but to point out some
weaknesses in the currently recommended CS curriculum.  "A Real
Programmer Can Write In Any Language," says one of the article
subheadings, and when a graduate can only write code in Java or a very
similar language, something is wrong.  When a graduate can't write a
simple device driver for an RTOS in C, C++, or Ada, etc. something is
wrong.  Being able to write a cool app in Java is a great thing, but
it's not the *only* thing one should learn.

                --Levi




More information about the PLUG mailing list