views:

2493

answers:

9

Last year I read an article on http://jaortega.wordpress.com/2007/01/31/a-scheme-bookshelf/ that claimed that if you read/study SICP "It will expand your mind. It will cure your diseases", I also read Eric Raymond "The Cathedral and the Bazaar" abou the Lips experience.

I tried for a while to use it (I downloaded the SICP pdf and DrScheme), at a moment it seemed to me very cool but, I don't know, later I felt unmotivated cause it looked like I was returning to college and actually I need to produce, I don't see me developing theoric compilers but making applications for my clients.

Don't get me wrong, I like to program, I don't see me doing anything else but I think to myself "Maybe it could be an enlightment experience, maybe I could enhance my solution approaches".

What is your opinion? is it worth it to return to my SICP study?

+1  A: 

SICP is definitely worth studying. It won't directly make you any money, but it will make you a better programmer. It's a lot more approachable than some of those other "must-read" CS books (like TAOCP or Sedgewick).

Kristopher Johnson
+1  A: 

Abelson & Sussman also has video lectures on the material in SICP at this link.

I think that SICP is interesting since it gives some different perspectives on things, compared to many other book/articles. Personally, I would not rank it at the absolute top of a must-read list, but it is definitely worth the time.

Erik Öjebo
+6  A: 

It is absolutely worth going through. Personally, going through SICP on my own increased my ability to abstract out complex problems an incredible amount.

jeremiahd
I found this too. +1. Tip: I found it MUCH easier once I bought the book, the printouts of webpages were handy to "test drive" it, but past the first dozen pages they weren't worth the hassle.
Matt Curtis
+2  A: 

And do consider learning Lisp. Install the Superior Lisp Interaction Mode for Emacs (SLIME), grab Paul Graham's great ANSI Common Lisp and go through it exercise by exercise. I guarantee it will make you a better programmer.

lindelof
+1  A: 

Study as many languages as you possibly can, but take their "save the world" declarations with a grain of salt.

The key to all of this is open-mindedness.

Jon Limjap
+9  A: 

Even if you don't do the exercises, it's worth reading through Structure and Interpretation of Computer Programs at least once. Unlike The Art of Computer Programming it's written not to appease some bizarre notion of machine architecture but to demonstrate the fundamentals of computational processes, and it excels at that.

Some of what you'll learn simply by reading through SICP:

  • Functional decomposition and modeling problems;
  • Recursion, its uses, pros and cons;
  • Imperative and functional programming;
  • Control structures, and why they have the behavior they do;
  • Language design;
  • Computer architecture; and
  • Compiler implementation.

The compiler implementation bits later on in the book will be especially enlightening to many working software developers, who if they haven't had a class on the topic often think compilers are strange and mysterious beasts and that creating languages is "hard."

My feeling is that a lot of people suggest reading The Art of Computer Programming because having waded through it makes you feel smart, but that people suggest reading Structure and Interpretation of Computer Programming because it clearly presents knowledge every software developer needs a thorough command of.

Chris Hanson
+1  A: 

I just started reading SICP for a new personal project I have to make myself a better developer - something along the lines of the "what will you do in the next six months" blog meme that went around fairly recently. I've been enjoying it, and definitely learning from it, but I doubt I will have some great epiphany moment from it (your mileage may vary, of course).

Don't worry too much about the "returning to college" feeling. I'd say just take a few minutes each day to pick away at it. I view it as a nice way to work out my mental muscles after a long day of drone life (hopefully your job doesn't feel as useless as mine does most days though!).

AgentConundrum
+2  A: 

I feel very enlightment your comments, personally I thougth that somehow the SICP was strange cause nowadays there is an some kind of fashion, cause as you see or know we should always learn the top of technologies like C#, J2EE, and many others, we are bloated of all kind of tools that offer enhance productivity and some other things.

I'm not saying that these tools are not good tools, what I'm trying to say is that we should not skip the essence of our craft, the very pure seed of software developing, I think Lisp contains a good basis of our art, concepts like function as parameters and lambda calculus are (for me) revolutionary, maybe the concept although very old is definitely a must-learn nowadays cause we can see that even Microsoft target this concept in their languages solutions like F#.

I'm sure you've made think to reconsider to study again, thank you very much.

Interesting links:

  1. Lambda Expressions (C# Programming Guide)

  2. F#

  3. Eli Bendersky SICP conclusion

  4. The SICP website

  5. PLT Scheme

nmiranda
+3  A: 

Read this article in DDJ for a reason to enlighten yourself to what Functional Programming is about.

Short summary: FP helps with parallelization, which is a topic you can no longer ignore now that multi-core processors are the norm.

Jeff Allen
I knew it, I knew it!!, I thougth I was the only one to think that functional programming is NOT a waste of time. Excellent link.
nmiranda