Feel your inadequacy
April 1, 2009 9:32 PM   Subscribe

If you're like me, you are not a top computer science researcher, and you haven't written a classic book about programming and made it available online for free. Let's review who we're not. We're neither Abelson nor Sussman, and we haven't written Structure and Interpretation of Computer Programs (previous proof). We're not part of TeachScheme and we had no hand in the writing of How to Design Programs (not even the second edition, natch). Shriram Krishnamurthi didn't need our help to write Programming Languages: Application and Interpretation. We wish we were Simon Peyton-Jones and had a hand in The Implementation of Functional Programming Languages.

And since we're in a depressing mood, let's say Van Roy and Haridi are not us, and we have nothing to do with Concepts, Techniques, and Models of Computer Programming. (not really online...)
posted by Monday, stony Monday (45 comments total) 76 users marked this as a favorite

Computer scientists? Seriously? Aim high. You could not be an Astronaught, or an explorer, or a World Cup winning footballer. Why limit yourself to not being some speccy type that no-one's heard about?
posted by pompomtom at 9:41 PM on April 1, 2009 [1 favorite]

Because computer scientist have the best shirts?
posted by Monday, stony Monday at 9:49 PM on April 1, 2009

Aim high. You could not be an Astronaught

Aren't we all really Astronaughts?
posted by delmoi at 9:56 PM on April 1, 2009 [4 favorites]

Maybe I'm just drunk on homemade cider, but being a 'name' because one made an important contribution doesn't mean that the rest of us can't be a 'name' when we end up making an important contribution.

Heck, you do realize that a lot of metafilterians are multiply published in high impact factor journals?

Yes, yes, nice links, but what do those treatese contibute to the benefit of humanity and, Monday, stony Monday, why don't you volunteer at your local homeless shelter or let streetchildren take a shower at your apartment so they can go interview for jobs?
posted by porpoise at 10:00 PM on April 1, 2009

No, but we don't use Scheme either, so doesn't that even things out?
posted by demiurge at 10:02 PM on April 1, 2009 [1 favorite]

Er, maybe my framing isn't as great as I thought. I don't think you and I are fundamentally inferior to the writers of the books in the links. After all, they're just hard-working and smart people who thought there was a book to write, and wrote it. Which is why I think they're awesome, and that's really what I want to say.
posted by Monday, stony Monday at 10:04 PM on April 1, 2009 [2 favorites]

Hi, sorry about being touchy, but can you tell us why these people are awesome without us reading through all of the links? We don't go through the same academic circles as you do and don't know who these people are. Aside from their books, have they accomplished anything in particular? Are they titans in their field? Pariahs? Visionaries? Slow-and-steady plodders who prove against all odds that they're right?
posted by porpoise at 10:09 PM on April 1, 2009

Dude, porpoise, I think you need to go back to your cider and find a nice political thread to throw your poop around, because this really isn't a thread that deserves better-postier-than-thouness.
posted by aspo at 10:13 PM on April 1, 2009 [12 favorites]

Weird, I just bought The Little Schemer the other day... nostalgia mainly. Somehow I'd got on the topic of the Y Combinator (hard to really grok; not that useful; interesting though)

Matthias F. taught my intro CS class at Rice. (I think Shriram was his grad student.) Though I can't say Scheme has come up much since I graduated, I will always remember that stuff fondly since it really transmitted the joy of programming in a way that C++/Java could not. All about the command line. These days I find Python equally fun (and way more useful.) Nothing beats answering a question @ the language by firing up a command line interpreter and trying things out.

All that said, this post does seem a bit diffuse... what were you aiming at?
posted by jcruelty at 10:14 PM on April 1, 2009

And back to the subject at hand, while it's not available for free on the web, if you love these kinds of CS books, Lisp In Small Pieces needs a place on your CS bookshelf.
posted by aspo at 10:17 PM on April 1, 2009

The first three books are known enough that, in the right circles, you can call them by their initials. SICP, HTDP and PLAI are "household names" for people who frequent Lambda the Ultimate. All of the authors are well-known in the Scheme community. SICP (1st ed: 1986) is widely acknowledged as a "classic" introduction to programming. HTDP is another try at an introduction to programming, aiming for something less math-intensive, and especially at high-school students. PLAI is an introduction to more advanced topics.

Simon Peyton-Jones is one of the inventors of Haskell, a lazy, purely functional, staticly typed language that has been one of the main research vectors in programming languages in the last two decades.
posted by Monday, stony Monday at 10:24 PM on April 1, 2009 [1 favorite]

jcruely: I seem to have a problem focusing my posts. It was going to be more of the same, but then I found out none of Leroy's books are online, and the pdf to Smolka's book has been pulled off-line.
posted by Monday, stony Monday at 10:30 PM on April 1, 2009

aspo - I'm not overly political, and yes, I was throwing porpoise poop around. Apology-es.

The links are to poorly formatted deeply-linked text; as someone who's career is in science, I acknowledge that to be an effective disseminator I have to write to both to the audience and anyone else who might want to access my output. I've also noticed that to attract lay interest in my work, I have to preface and contextualize in lay language my work. After that, then I can 'get it on' with jargon or 'us speach' but only after explaining it the first time it's presented.

Can you tell us why these people's opinions are important and why we would want to a) learn their language/jargon and b) critically read their opinions?
posted by porpoise at 10:33 PM on April 1, 2009

Monday, stony Monday - I'm sorry for derailing... it looks like you made a good post but your wording put it on the wrong foot.
posted by porpoise at 10:35 PM on April 1, 2009

I think this is the best-worded post ever.
posted by swift at 10:41 PM on April 1, 2009 [1 favorite]

Bob Harper from CMU has a bunch of drafts of his books available electronically on his site (under the "Books" section). He's nowhere as famous as the other guys, but he is one of the major forces behind Standard ML. A lot of the stuff he discusses in those draft books are from the cool realm of type theory.

(I took a couple of classes under him in college... he's pretty cool, if overly-passionate about ML and overly-dismissive over all other languages, from Java to Lisp/Scheme and Haskell too.)
posted by destrius at 10:41 PM on April 1, 2009

For a little more background, Scheme is a programming language that is both loved and loathed for its purity, it attempts to be a useful language while being as small as possible, by having simple rules with few exceptions to them. Most programmers never get past the fact that the syntax looks funny, though. One thing that differentiated Scheme in the early days was a relative disinterest in efficiency. Java, Javascript, VB, Ruby, Python etc. etc. etc. are all much slower, but Scheme (after it's parent language, Lisp) took the simplicity vs. efficiency route first, and still carries a bit of a reputation for it.

In many ways Haskell follows in Scheme's footsteps, even less interested in efficient implementation, and even more interested in the elegance of the syntax. Haskell code is often a direct translation from a mathematical formulation. Many of the beginnings of what became C#/ the CLR for Microsoft started as Peyton-Jones' experimentation with Haskell at Microsoft Research.

For a non coder, I think the most succinct description would be that whereas most programming languages are languages designed for documentary expository prose, these languages are designed for carefully worked out poetry and koans, the kind of ah-ha! code where you tend to either stay perplexed, or once you actually figure out how the program is doing what it does, you step up to the next level of understanding programming as an art form.

Many have said that even if you never write any Scheme code for a production system, you will be a better programmer for having learned the language.
posted by idiopath at 10:45 PM on April 1, 2009 [1 favorite]

It's all right porpoise.. but since I'm on it.. Sussman wrote, with Steele, the Lambda papers, which gave LtU its name. SICP revolutionized computer science teaching by focusing on concepts, and not on their realization in a particular language. HTDP and PLAI continue on that path. So does Van Roy and Haridi's CTM, but with another language, Oz (instead of Scheme), and a focus on concurrency and multiple paradigms.

Peyton-Jones's book is just a total geekout on my part.
posted by Monday, stony Monday at 10:46 PM on April 1, 2009

Incidentally, I'm trying to learn Haskell. Anyone wanting to study with me id invited to mefimail.
posted by orthogonality at 11:13 PM on April 1, 2009

In MSM's defense, these are not obscure books. SICP is a classic. If you're interested in programming, you've read or heard of the rest of these books.
posted by rdr at 11:53 PM on April 1, 2009 [1 favorite]

Who are these pompomtom and porpoise guys?

Nice post - and WELL FRAMED and don't think otherwise.
posted by krilli at 1:14 AM on April 2, 2009 [3 favorites]

Items 5 and 6 on Sussman's publication list; I edited that book.
posted by gene_machine at 2:19 AM on April 2, 2009 [2 favorites]

Thanks for the linkage! I studied many of the linked books as textbooks during my misspent university days; rather gratifying to see them shared under CC licenses on the web. Yes, I'm one of those who cut his teeth in Scheme and Lambda calculus, and while being associated with the Evil Empire, still tries to use F# and lambda functions via LINQ as much as possible at work.

More to the point, I just discovered Shriram Krishnamurthi's argument against programming-language paradigms refreshing and stimulating enough to be kensho-like.
posted by the cydonian at 2:33 AM on April 2, 2009 [3 favorites]

If you can't figure out that this is a list of important books on computer science written and given away for free by notable CS researchers, with links to them, too, then you are really in the wrong thread and need to go away. One of the better computer-techy FPPs we've had in a while, actually.

This is an awesome post, and the poster cannot be blamed for not pre-chewing your food before serving. Follow the nice collection of links and educate your own damn self.
posted by Slap*Happy at 4:07 AM on April 2, 2009 [6 favorites]

Great FPP.

Porpoise, don't hate.
posted by unSane at 4:27 AM on April 2, 2009 [1 favorite]

Really great post that I wish I hadn't read. I don't have time to learn Scheme again!
posted by DU at 5:06 AM on April 2, 2009

Distracting me with Haskell again, you you ... sputters and shakes fist at Monday, stony Monday
posted by needled at 5:49 AM on April 2, 2009 [1 favorite]

My first year in undergrad I took Data Structures and Algorithms, on the way to my CS degree. We used SICP in that class, and the entire thing was taught in Scheme. While working on our joint final project and studying for the exam, my friend and I managed to cover the majority of my side of my dorm room with stickie notes that read "I hate Scheme" on them. Despite that, to this day (now in law school and haven't programmed a computer in I don't know how long), I am glad that I learned Scheme. It is an overwhelming elegant language.
posted by Inkoate at 5:50 AM on April 2, 2009

I'm not very smart but one of those links has a chapter called "A Defense of Lazy Product-Making" which sounds like something I can get behind in a big way.
posted by Potomac Avenue at 5:52 AM on April 2, 2009

This is an awesome post for people (and there are many) who work with computers and software, but never got that CS degree that a lot of folks have. Just the other day someone was asking o the NYC Ruby list about resources for teaching yourself CS. (SICP was mentioned a lot.)

If the subject interests you, I would also strongly recommend iTunes university - the stuff from UC Berkeley and MIT is especially good.
posted by bashos_frog at 5:54 AM on April 2, 2009

Looks like a lot of summer reading for me. Thanks for this well made post!
posted by JoeXIII007 at 6:31 AM on April 2, 2009

I rather liked the way this post was formatted, even if I didn't click through to the content. (I'm neither a compsci researcher nor a programmer.)
posted by zarq at 7:24 AM on April 2, 2009

Fantastic links and great formatting.

I always held to the position that understanding programming languages at an axiomatic level and not just studying the syntax of specific languages creates a better developer. These texts are a bedrock.

Also, Scheme rocks.
posted by HumanComplex at 8:15 AM on April 2, 2009

porpoise, stop blaming others for your inability to understand written English when drunk.

Monday, stony Monday - look at how many people favorited your thread, and stop apologizing to the troll. You did good here.
posted by IAmBroom at 8:29 AM on April 2, 2009

Oh man... this post. This is just another fine example as to why I pay five bucks.

I feel so nerdy.... so very, very nerdy.
posted by PROD_TPSL at 8:44 AM on April 2, 2009

What a dreadful posting style.
posted by Ynoxas at 8:52 AM on April 2, 2009

I don't know -- personally, I thought the posting style was fantastic. This is an awesome thread, and if I could favourite it a hundred times, I would. Thanks!
posted by tickingclock at 11:50 AM on April 2, 2009

Aren't we all really Astronaughts?

Our Russian friends are really Astronyets.
posted by tommasz at 12:47 PM on April 2, 2009

The posting style is twee, but the links are extra-great. An overall win, I'd say.

(And I've seen an Astronut around here, but Astronaughts? Not so much.)
posted by Crabby Appleton at 1:03 PM on April 2, 2009

Another source of Intro to CS info is this thread on Lamdba the Ultimate. Other "four-letter" books are mentioned: Essentials of Programming Languages (which covers some of the same ground as PLAI), Pierce's Types and Programming Languages and the aformentioned Lisp in Small Pieces.

There's also the Little Books: The Little Schemer is a short and interesting book that you can go through in just a few sittings. The Little MLer is a bit basic, and it gets repetitive, but I found it good practice for staticly-typed languages like SML and Haskell. A Little Java, A Few Patterns is a mix of the first two, but using Java instead of ML and Scheme. I didn't like it much: the code feels very, very clunky. The Seasoned Schemer is what it says on the tin: much more challenging than its predecessor (Continuations are hard to grok). The Reasoned Schemer... well, Oleg is one of the authors, and he's to computer science as Chuck Norris is to the rest of the universe.
posted by Monday, stony Monday at 3:50 PM on April 2, 2009

You'll have to pardon idiopath, he just stepped out of a time machine from 1996. Java wails on Scheme and Haskell is about as fast as Java. Simon Peyton-Jones is one of the main developers of the Glasgow Haskell Compiler which places a lot of emphasis on efficiency.
posted by scope the lobe at 8:12 PM on April 2, 2009

The word "twee" is a bit twee.
posted by mubba at 10:33 PM on April 2, 2009

scope the lobe: plt is one of the slower schemes, and GHC has done amazing, revolutionary, and groundbreaking things with optimization, and continues to generate slow code for idiomatic haskell (Ie. the kind of haskell that haskell coders generally recommend and write), despite this.
posted by idiopath at 11:49 PM on April 2, 2009

Well, I've met Simon Peyton-Jones, does that count!? Can I stop feeling inadequate now?
posted by polyglot at 1:08 AM on April 3, 2009

Can I stop feeling inadequate now?
posted by polyglot at 3:08 AM on April 3

posted by Ynoxas at 11:40 AM on April 3, 2009

« Older A philosophy professor takes on the financial syst...  |  The Worst Homemade Star Wars C... Newer »

This thread has been archived and is closed to new comments