Jens 'n' Frens
Idle thoughts of a relatively libertarian Republican in Cambridge, MA, and whomever he invites. Mostly political.

"A strong conviction that something must be done is the parent of many bad measures."
  -- Daniel Webster

Sunday, February 05, 2006 :::

This is about computer programming, but the issues it raises are more general:
Years of whinging by lazy CS undergrads like me, combined with complaints from industry about how few CS majors are graduating from American universities, have taken a toll, and in the last decade a large number of otherwise perfectly good schools have gone 100% Java. It's hip, the recruiters who use "grep" to evaluate resumes seem to like it, and, best of all, there's nothing hard enough about Java to really weed out the programmers without the part of the brain that does pointers or recursion, so the drop-out rates are lower, and the computer science departments have more students, and bigger budgets, and all is well.

The lucky kids of JavaSchools are never going to get weird segfaults trying to implement pointer-based hash tables. They're never going to go stark, raving mad trying to pack things into bits. They'll never have to get their head around how, in a purely functional program, the value of a variable never changes, and yet, it changes all the time!


Now, I freely admit that programming with pointers is not needed in 90% of the code written today, and in fact, it's downright dangerous in production code. OK. That's fine. And functional programming is just not used much in practice. Agreed.

But it's still important for some of the most exciting programming jobs. Without pointers, for example, you'd never be able to work on the Linux kernel. You can't understand a line of code in Linux, or, indeed, any operating system, without really understanding pointers.

Without understanding functional programming, you can't invent MapReduce, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their 6.001-equivalent programming class that purely functional programs have no side effects and are thus trivially parallelizable.
Of course, the benefit of high-level programming languages is that they make it comparatively easy to dispatch the tasks that they do handle well; they can remove a lot of tedium from essentially simple tasks and allow you to attend to more essentially difficult tasks. To the extent that such tasks can be lumped together and given to programmers who couldn't handle other things, but can do these things well, I have no real problem with doing so. A lot of the time, though, such encapsulation is less clean than it superficially appears; it's just the nature of things that more than 10% of programmers are going to have to work on tasks that aren't in the 90% of things that most avoid hard implementation details.
I used to be able to tell the smart kids because they could rip through a recursive algorithm in seconds, or implement linked-list manipulation functions using pointers as fast as they could write on the whiteboard. But with a JavaSchool Grad, I can't tell if they're struggling with these problems because they are undereducated or if they're struggling with these problems because they don't actually have that special part of the brain that they're going to need to do great programming work.
The problem isn't that the language isn't useful; it's just not comprehensive, and certain kinds of problems simply aren't really expressible in it.

::: posted by dWj at 12:52 PM

Comments: Post a Comment

Comment Policy

Dollars and Jens
Steven's web-site

Kitchen Cabinet
Colby Cosh
The Volokh Conspiracy
The Corner
The Bleat from James Lileks
Tim Blair
Daily Ablution
Mickey Kaus
Dave Barry
How Appealing
Virginia Postrel
Reason's "Hit and Run"
Captain's Quarters
Roger L. Simon
Power Line
IWF's InkWell
Blogs for Bush
Chetly Zarko
Signifying Nothing
Cosmo Macero
Hub Blog
Ex Parte from Harvard Law's Federalists
Harvard CR blog
Priorities & Frivolities
Daley News
Emil Levitin
Politica Obscura
Wave Maker
Town Watch
Worcester County Repubs

Election '08
Don't Vote
Dave Barry
John McCain

Other Sites of Note
Townhall columnists Cambridge Republican City Committee
Cambridge Chronicle
Robert Winters
Boston Herald
Boston Globe
Boston Metro
Channel 5
Commonwealth Mag
Fox News
Massachusetts Republican Assembly
Robert Benchley Society

U.S. Constitution
9/11 commission report [7 Meg PDF]
Iraq Survey Group report
Fahrenheight 9/11 deceits


Idle thoughts of a relatively libertarian Republican in Cambridge, MA, and whomever he invites. Mostly political.

Powered by Blogger