Academics slam Java

Bryan Sant bryan.sant at gmail.com
Mon Jan 14 09:53:37 MST 2008


On Jan 11, 2008 4:40 PM, Michael L Torrie <torriem at chem.byu.edu> wrote:
> So I strongly recommend Python as a good foundational CS class.  Python
> is obviously a very high level language, and is not that capable of
> low-level programming as in hardware-level.  But it's low-level in terms
> of CS abstractions, things that do really matter in teaching CS.  It's a
> great platform for teaching functional programming, lambda calculus, and
> data structures, all of which are more or less foundational to good
> programmers and computer scientists.

I also think python would be an ideal language to start students with,
however, the complaints raised in this "Java Slam" article are equally
applicable to python and any other non-low-level language.

> >From what I've seen in CS 142 at BYU, for example, data structures in
> Java is more of just an exercise in how to use Java data structure
> libraries, something you should do as a professional programmer.  But at

If that's the goal of the course, then great.  If not, then they have
a poor set of instructors that are allowing students to use
off-the-self data structures instead of implementing their own.  Just
because Java has a comprehensive set of data structures to use,
doesn't mean you allow their use in a data structures course.  And if
you're trying to make a case that Java is high-level compared to
python, then I'll need you to fill this cup up in the bathroom.

> this stage they really don't learn how the data structures actually
> work, how to traverse them, etc.  I'm sure the same would be for C++ if
> they actually taught the language.   Using Lisp or Python to explore
> data structures is more ideal, since they provide some very flexible,
> base structures upon which all other things can be formed.  Lists and
> dictionaries.   While this won't teach them how memory is actually

These are the same primary structures provided in Java.  Lists,
Maps/Dictionaries/Associative Lists, and Sets.  Just like Python and
Lisp.

> allocated, it does teach them in an abstract way, what the data
> structures look like, how they are used, and how to build them.

This is just as true when using Java as it would be using Python.
Just restrict the use of certain pre-existing data structures.  No big
deal.

I'm not saying that Java is a better language for teaching students
compared to Python.  But Python is every bit as abstracted, and even
more high-level, and would be equally criticized by the authors of the
article.  C++ would probably be seen as an improvement by the article
authors.

-Bryan



More information about the PLUG mailing list