
On 1/27/08, Dipankar Ray
Hello Jerzy and Bulat,
Thanks for your perspectives. Bulat, I can understand that you find it shocking that the folks at Moscow University still study Lisp, but I wouldn't be so quick to condemn them for being dinosaurs. After all, they just stopped teaching the SICP course (using Scheme) at MIT, and I don't believe that they replaced it with an intro to CS course that uses (say) Haskell or ML! Nor has Berkeley, far as I know.
Correct -- CS 61A at Berkeley (the 6.001 analogue there) is still taught in Scheme, and I suspect that anyone who wants to change that will have to pry the course out of Brian Harvey's cold, dead hands.
What I mean by this is that if I look at the CS programs at Berkeley, MIT, CMU, I don't see a huge emphasis on PL. Looking now at the MIT opencourseware offerings in EECS, I see no undergrad course that suggests that you'd learn anything about modern type theory.
As a former graduate student instructor for the undergrad compiler class at Berkeley, I can confirm that this statement is mostly but not quite true for Berkeley. (As Dan Licata pointed out, CMU is an exception here; I get the feeling MIT is more like Berkeley than MIT in this respect.) The compiler class there (CS 164) is required for all CS majors, and depending who's teaching it in a given semester, students might well get to see formal presentations of both static and dynamic semantics for a simple object-oriented language (at least the the time when I taught a section of the class, though I see that right now their target language is Python.) Granted, students have the option of either Java or C++ for the implementation languages, which is less than ideal.
Of course we know here of success stories involving modern fp languages. But there is no haskell or ml book that has had close to the influence of K&R's C book. One might argue that adoption on that scale is not the goal of the haskell community (was it Kernighan, Ritchie, or Thompson's goal? I think not), but still, it's weird to me that:
At least based on my own experience and that of my peers, I think people from my generation who got interested in FP languages mostly got turned on by a particular teacher who was really into it, rather than by a particular book.
1) we're clearly on to something, but still
2) many smart people who are interested walk away frustrated (not so easy to learn (is the hardness necessary? perhaps?), relative to K&R, for example).
For #2, note my comment above about teachers. It's always easier and more motivating to learn when you have someone a little more experienced to guide and encourage you. But for FP, there are fewer people around to do the teaching, thus more people get discouraged. I feel like I'm saying something tautological here, though: if nobody teaches, nobody can learn. For some reason or another, I think being self-taught when it comes to FP is hard in a way that being self-taught when it comes to programming in general isn't -- perhaps it's for the same reason that being a self-taught mathematician is hard, though some people pull it off. Personally I think I'm pretty self-motivated, and am self-taught in a lot of other areas, but I don't think I ever would have learned Haskell on my own. So what does that say about programmers as a whole?
3) most of the canonical US universities for CS (MIT, Berkeley, Stanford, CMU, etc) basically don't teach haskell or ML, or even talk much about it, relative to how much they talk about, say, Java.
It's one thing that companies don't move forward; yet another thing that Universities don't either. Why is that? Why, in 2008, is Java taught more than Haskell?
There's really only one reason for this: at least in the United States, universities are becoming more and more like businesses, and faculty feel they have to give students what they want in order to "compete". Computer science undergrads, as a whole, want to learn Java or C++ "so they can learn something that'll be useful and help them get a job." The faculty know this is ridiculous, but a lot of them buckle under anyway because they need to boost their enrollments. The notion of the university as a place where students pay faculty members so that they might benefit from the vaster experience and judgment of the faculty -- which means deferring certain decisions to those who are wiser than you -- seems to be going out the window along with paper registration cards. Moreover: At Berkeley, the faculty didn't teach Haskell or ML because they didn't believe in Haskell or ML. If you personally don't think that a language is ever going to be adopted -- if you think that it's elegant but will never be practical -- it's going to be hard for you to sell it to a 300-person hall full of undergrads, most of whom are likely to start checking email the moment you say something that bores them. Disclaimer: This entire message consists of my personal opinions and does not represent the opinions of anybody else, and probably won't represent my opinions either in another day or two. Cheers, Tim -- Tim Chevalier * http://cs.pdx.edu/~tjc * Often in error, never in doubt "don't you understand / in the day to day / in the face to face / i have to act just as strong as i can / just to preserve a place where i can be who i am" -- Ani DiFranco