Bryan Sant wrote: > On Jan 11, 2008 7:27 AM, Charles Curley <[EMAIL PROTECTED]> 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. > > -Bryan > > /* > PLUG: http://plug.org, #utah on irc.freenode.net > Unsubscribe: http://plug.org/mailman/options/plug > Don't fear the penguin. > */ > -- Michael Torrie Assistant CSR, System Administrator Chemistry and Biochemistry Department Brigham Young University Provo, UT 84602 +1.801.422.5771 /* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */
