background preloader

Sicp

Facebook Twitter

SICP distilled. SICP in Clojure. SICP Week Two: The Technical Details. As I wrote just the other day, our study group has encountered the first really meaty part of SICP . Thanks to the combination of lecture notes, the books, and the 20-year-old videos of G. J. Sussman counting his parentheses, I have come to a few interesting conclusions about writing algorithmic programs.

I have no formal CS education. Here’s what’s interesting (to me) about the week two material: Numbers numbers numbers I’ve spent too much time thinking computer programming was primarily about building websites on top of relational databases. If you’re working with a framework, then that framework probably makes algorithmic decisions for you and hides it all behind its API and classes. That’s kind of sad, actually. Does it have to be this way? Design really matters, but not up front Speaking of theta of n, isn’t it remarkable how much difference the right algorithm design makes? But you aren’t expected to design the perfect algorithm up front. (* b (exp b (- n 1))) Eli Bendersky's website. I have the habit of writing reviews for the books I’ve read, and recently I noticed that something is missing. SICP. I’ve definitely read it, so I should probably write a review, eh ? The real reason for my writing this review is, however, its Amazon entry .

Although the first page shines with glimmering reviews by, no less, Peter Norvig and Paul Graham, the book has a 3.5 star average, which is really inexplicable. Many far inferior books have higher grades ! My first encounter with SICP was in the second year of university, where I took a course named “SICP 1″. A few years later, with much more experience behind my back, I’ve decided to tackle SICP seriously and read the whole book, solving the vast majority of the exercises. In contrast with most introductory books about programming that just teach you a language, SICP takes a far better approach. The example programs developed in the book are real, large, and exciting. A word about exercises in SICP. Related posts: SICP – conclusion. Structure and Interpretation of Computer Programs, Video Lecture.

Structure and Interpretation of Computer Programs. SICP revisited: OOP in Scheme. Quite some time ago, I set out to work through the course materials at MIT’s OpenCourseWare website for the introductory Computer Science course Structure and Interpretation of Computer Programs. I wanted to tackle the fundamental CS concepts that the course presented, but I also wanted to learn Scheme, the elegant Lisp dialect that SICP uses to illustrate its concepts. I was lucky enough to have some excellent help from a group of people who wanted to work through the course together. However, the going got tough, pressing business pressed, and soon I was stopped. Last month, I got started again. I worked through the environment model, which is itself worthy of a post, but what I’d like to discuss right now is the section on object-oriented programming, which surprised and then delighted me. Object-oriented programming in… Scheme? There was a time when I thought object-oriented programming had developed straight out of procedural, imperative programming.

Asking objects to behave OK, so? Structure and Interpretation of Computer Programs, Video Lecture. Two classic hardbacks. Two classic hardbacks February 19, 2005 | co.mments I received two hardback books for my birthday a while back. The first is the fantastic Structure And Interpretation of Computer Programs. "The evaluator, which determines the meaning of expressions in a programming language, is just another program"SICP p 360 I have always wanted the hardback, but have been put off before by the cost. For every programmer that adores this book, there's probably five who don't and ten who've never come across it, and if they did, would think it irrelevant to their working lives.

If you're of the school that a programmer's first language should be assembler or C and their first book should be K&R you might have problems with SICP - programming with register machines (that's CPUs to you and me), the root dialect for the Algol family don't appear for nearly 500 pages. Today you might be look to write it using Python or Ruby - which would make it more popular but perhaps a tad clumsier. Post a comment. Lisp: A Report from the Trenches. A year ago, I began studying Lisp and Emacs. I would ultimately get through about half of SICP and code up a few small Lisp projects that mainly showed how far I was from grasping the point. Having Emacs skills did come in handy a few times, though. Engaging in such focused deliberate practice was difficult: I rarely came up with anything truly innovative or useful, but instead had to constantly face my weak areas and incompetencies– and doing all of this pretty much in public would ensure those weaknesses would become notorious among the illuminated.

I wasted some time blogging about programming practices and things gradually culminated into a manifesto of sorts. While I now had enough technical know-how to address some of the biggest problems I’d faced as a career programmer writing simple database apps and web pages, I also had a minor crisis in choosing which language to implement my new vision. I got really lucky in the way things panned out in my career. Like this: Like Loading... SICP - conclusion. I’ve completed the SICP reading project, which I began on June 19th, 2007.

In hindsight, it seems like a very long time (almost a year!) , during which this was my main hacking project at home. So, in this conclusion I want to examine my progress, and compare the result with my initial goals. The original plan was: Read the bookSee all the video lectures by Sussman and Abelson themselves Do most of the interesting exercises in the bookDo some of the larger projects listed here and here Let’s see how I’ve managed: DoneDoneThis is the point I’m most happy with. Also, I originally planned to reimplement all the code do all the exercises in Common Lisp. Here are some numerical statistics that emphasize the magnitude of this endeavor: I’ve written 52 blog posts (not including this one) in the SICP category, spread over 10 months.The combined total length of my posts (including code snippets) is 66,265 words. A word on SICP and its exercises.

The exercises of SICP are essential to understanding.