JavaSchools, Scheme, and Sin

Joel Spolsky has a great essay on the perils of JavaSchools, those CS programs that adopt Java (or .Net, to be fair) because it is easy for students to learn. In it, he sings the praises of learning Scheme and being exposed to functional programming.

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. The very fact that Google invented MapReduce, and Microsoft didn't, says something about why Microsoft is still playing catch up trying to get basic search features to work, while Google has moved on to the next problem: building Skynet^H^H^H^H^H^H the world's largest massively parallel supercomputer. I don't think Microsoft completely understands just how far behind they are on that wave.
From The Perils of JavaSchools - Joel on Software
Referenced Wed Feb 08 2006 10:53:20 GMT-0700 (MST)

In another article Sriram Krishnan says that "Lisp is sin:"

I was on vacation a couple of weeks ago at my parents' house in Chennai. My dad and I share a love for James Bond movies so my dad had bought a set of DVDs containing all the Bond movies in existence. I can't help but strike a politically incorrect analogy - Lisp is like the villainesses present in the Bond movies. It seduces you with its sheer beauty and its allure is irresistible. A fleeting encounter plays on your mind for a long,long time. However, it may not be the best choice if you're looking for a long term commitment. But in the short term, it sure is fun! In that way, Lisp is...sin.
From Sriram Krishnan : Lisp is sin
Referenced Wed Feb 08 2006 10:55:40 GMT-0700 (MST)

Sriram is tempted by LISP, but put off by some of it's raw "hacker power."

At BYU, we teach Scheme in the Concepts of Programming Languages class. There's a continual struggle to maintain Scheme in that class. I never apologize to the students for teaching Scheme--I think anyone who calls themselves a Computer Scientist ought to have done some programming in it. Beyond that, however, it's the best vehicle I know for allowing me to challenge student's notions about what programming languages are and how they should work.