Academics slam Java
Michael L Torrie
torriem at chem.byu.edu
Fri Jan 11 16:40:38 MST 2008
Bryan Sant wrote:
> On Jan 11, 2008 7:27 AM, Charles Curley <charlescurley at charlescurley.com> wrote:
>> Academics slam Java
>> By Phil Manchester
>> Learn a real language
>> The choice of Java as a first programming language in computer science
>> courses is undermining good programming practice, according to two
>> leading academics.
> Java happens to be the king in the private sector and academia, so
> it's the standard that most measure against. I get it. But virtually
> all high-level languages share the same attributes that supposedly
> make Java a bad language to teach students with.
I disagree. C++, for example, is nearly as high level as Java. But
it's also closer to the hardware (allows low-level) and is probably a
better vehicle for teaching students how a computer actually works. Of
course I'm not saying high level is bad per se. Using assembler, for
example, can be equally bad because in stead of learning programming
theory, you learn about idiosyncrasies of a particular platform (ahem, x86).
Thus, I still would not recommend C++ as a starter language for CS
courses. When I was in BYU's CS 330, it was taught in Scheme, which at
the time really bugged me (like of like how learning Prolog bugged me in
High School). However now I realize how nice Scheme was, formally, to
do all that learning in. I will never use Scheme again, likely, but
even now as I program, I fall back on the concepts I learned with
Scheme, and get excited every time I find a really cool Scheme or Lisp
-like way of doing things in Python.
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.
>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
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
allocated, it does teach them in an abstract way, what the data
structures look like, how they are used, and how to build them.
> It's hard for me to not notice the agenda these Ada moguls obviously
> have. They have a huge stake in the Ada game and they're just doing a
> little self-promotion.
>> In a withering attack on those responsible for setting the curriculum
>> for computer science courses, doctors Robert Dewar and Edmond
>> Schonberg of New York University (and principals of Ada language
>> specialist Adacore) have said the lack of mathematical rigor and
>> formal techniques is producing "replaceable professionals" more suited
>> to the outsourcing industry than software development.
> If this argument were true then the number of job postings in the USA
> for Java developers would be near zero. Why would you pay top dollar
> for expensive American Java (or C#, Python, Perl, Ruby, etc) talent if
> persons using said language were merely replaceable robot developers?
> The fact is that the problems that a developer solves with software
> are usually hard. Automating solutions to hard problems with software
> (regardless of language) is valuable. If I can solve a problem for a
> company with C# and its many pre-existing components, then I am many
> times more valuable than a person who can't solve the company's
> problem with C or Ada.
> At any rate, their main argument about Java developers being
> replaceable by virtually anyone with a keyboard is patently false.
> The high demand for Java skills in the US job market wholely disproves
> that point. Other points made about the need to expose students to
> low-level languages is true.
> Just my thoughts.
> PLUG: http://plug.org, #utah on irc.freenode.net
> Unsubscribe: http://plug.org/mailman/options/plug
> Don't fear the penguin.
Assistant CSR, System Administrator
Chemistry and Biochemistry Department
Brigham Young University
Provo, UT 84602
More information about the PLUG