The Perils of JavaSchools, by Joel Spolsky

Maurice Naftalin and Peter Buneman both sent me pointers to this blog entry on the same day. (Peter claims to be the faculty member described in the entry as having almost killed the writer.)

My favorite quote:

I have never met anyone who can do Scheme, Haskell, and C pointers who can't pick up Java in two days, and create better Java code than people with five years of experience in Java, but try explaining that to the average HR drone.

And another favorite quote:

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, the world's largest massively parallel supercomputer.



LINQ: Microsoft goes functional

I finally had a chance to properly look at LINQ.

This is competitive with the DB end of Links. One can write (typed) expressions in the programming language that compile into SQL access. I would say that Links integrates this in a slightly smoother way than LINQ, but the difference between the two is small. So if Links is to establish itself, it will need to focus on client-server integration rather than server-db integration.

What's most interesting about LINQ is the number of ideas from functional programming and programming languages that it incorporates. Functional programmers will see many old friends here, including lists (masquerading as IEnumerable), lambda expressions (with compact syntax: v => e), fold, and the old idea that syntax in the language is just sugar for a sequence of function calls. They have also brought in the important idea of open classes (where one organization can add methods to a class defined by another, without altering the source code). So a lot of good, basic programming languages stuff is sneaking in under the LINQ banner.

I presume Eric Meijer had a lot to do with this. Well done, Erik!

This page is powered by Blogger. Isn't yours?