Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I am one of Brian Harvey's student progeny. I still consider the SICP as my favorite computer science book, and in retrospect CS61A one of my favorite and most important courses. There is something amazing about a course that takes one from "square can be defined as (define (square x) (* x x))" to writing an interpreter, and be something a mere mortal can work through in a few months. And that's just chapter one to four out of six in SICP, if memory serves.

I like Python, and use it in industry. Ruby, Go, and C also. In the past, I wrote Common Lisp professionally as well. I do not pine for Scheme or CL, although both had some of their own unique charm. Nevertheless, I think Brian's sentiments about Scheme's clarity in stripping away what can seem to be the 'magic' in programming while maintaining an absolutely rigorous representation that can actually be executed are spot-on. There will be plenty of time in practical work to reintroduce some magic to make practical tasks easier, but there is but a precious few years -- or indeed, just a semester -- to examine the structure of abstraction at its very core.



I love the story where the creators defined a Lisp interpreter in Lisp, and then one said, "you know, we don't have a Lisp compiler, but I could compile this source by hand." It's quite an elegant concept when you accidentally create a fully-functional interpreter overnight.


The quote:

> Steve Russell said, look, why don't I program this eval..., and I said to him, ho, ho, you're confusing theory with practice, this eval is intended for reading, not for computing. But he went ahead and did it. That is, he compiled the eval in my paper into IBM 704 machine code, fixing bug, and then advertised this as a Lisp interpreter, which it certainly was. So at that point Lisp had essentially the form that it has today...

a shorter version from "History of Lisp" page 9:

> S.R. Russell noticed that eval could serve as an interpreter for LISP, promptly hand coded it, and we now had a programming language with an interpreter.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: