by angrycoder on 10/22/11, 3:09 AM
This is like reading a modernized version of Shakespeare. You can still kind of tell the story is good, but it just feels lacking. It doesn't convey the same kind of weird magic, even though you aren't 100% sure what they are on about.
It is a perfect example of Rich Hickey's "Simple made easy" talk from a few days ago.
by baddox on 10/21/11, 11:39 PM
The very notion seems strange to me, because when I read SICP it was primarily a "learn LISP's model of computation" book, not a "learn how to program, and we just happen to be using a LISP" book. Because of that, it doesn't make much sense to me to port SICP to a non-LISP language.
by spacemanaki on 10/22/11, 3:35 AM
This is ok, for a CS 101 class. I'm sure the students will turn out just fine. Some of them will likely be intrigued by the purple book their class name references. Looking at the schedule, it looks like it just covers the "Structure" and not the "Interpretation". My favorite parts of SICP are the 4th and 5th chapters, on metacircular evaluation, interpreters, lazy Scheme, Prolog, and compilation to byte code. I guess it's probably too much for CS 101 though. It would also be a lot more work to do those chapters in Python, since you'd need to cover scanning and parsing, instead of just using (read).
by azernik on 10/22/11, 12:19 PM
I took CS61A in the spring of 2008, when it was still done using Scheme. Looking through the first few lectures and the titles of later lectures, I'm struck by how much the material is the same. Most notably, in the first several lectures, they've made a point of stripping down Python to a subset that makes its evaluation near-identical to Lisp - by using only named functions (no '1+2', only 'add(1, 2)'), they've kept the emphasis in those lectures on the environment model of evaluation.
Looking through the later lecture titles, it's quite clear that (despite what other commenters are saying) the "deeper" parts of the course have been preserved.
There's a bit that's been lost in translation; in particular, while the emphasis on metalinguistic abstraction has been kept (students are going to be implementing an object-class system, in a rather elegant way that uses Python's capability to redefine attribute getters) the more exotic models of computation pursued in the old 61A have been abandoned. No more ambiguous evaluator. This is perhaps inevitable - it's just impractical to create a metacircular evaluator for a language as complex as Python. Still, the core of the class has remained, which is a testament to the fundamental similarity of the the Lisp model of computation with that of many modern scripting languages.
by jinfiesto on 10/22/11, 1:07 AM
I'm simultaneously disappointed and thrilled about this. As I've suspected, teaching SICP in a language other than Scheme would require dropping chapters 4 and 5. They're simply too hard to do in any other language. Which of course is a bummer, since chapters 4 and 5 are huge amounts of fun.
All the same, I'm thrilled that SICP is being taught.
by disgruntledphd2 on 10/22/11, 8:15 AM
Well, at least they're still using Emacs. That being said, they have a weird way of describing the hotkeys. For example, for C-x C-f, they tell you to hold down C-x, release all keys, then press C-f. You don't need to release the control key, and it adds at least half a second if you do.
by wes-exp on 10/22/11, 6:11 AM
"I felt a great disturbance in the Force, as if millions of voices cried out in terror and were suddenly silenced. I fear something terrible has happened."
by Ape_Shell on 10/22/11, 12:25 AM
Won't this end in disaster considering the use of tail recursion in SICP versus Guido's flat out refusal to allow tail recursion optimization in Python?
by gonewest on 10/22/11, 3:01 AM
an abomination, pure and simple.
by kaapi1 on 10/22/11, 3:53 AM
by Apocryphon on 10/22/11, 5:30 AM
What about a compromise? Why doesn't someone translate SICP to a more widely-used modern day functional language, such as Haskell or Erlang?