Im currently doing a run of SICP using a pdf, the original lectures, and dracket as lisp interpreter set on R5RS. I dont know how to program and was hoping after finishing the book, I'd have an understanding of programming and compsci thats good enought to jump into other programming books that teach me the languages rather than how to program. Is this a realistic expectation? Reusing a dark wojak.
Im currently doing a run of SICP using a pdf, the original lectures, and dracket as lisp interpreter set on R5RS...
Other urls found in this thread:
pkgs.racket-lang.org
archive.org
twitter.com
I think its fascinating that there is such a split between those who love and hate this book. For most books, the review is a bell-shaped curve of star ratings; this one has a peak at 1, a peak at 5, and very little in between. How could this be? I think it is because SICP is a very personal message that works only if the reader is at heart a computer scientist (or willing to become one). So I agree that the book's odds of success are better if you read it after having some experience.
To use an analogy, if SICP were about automobiles, it would be for the person who wants to know how cars work, how they are built, and how one might design fuel-efficient, safe, reliable vehicles for the 21st century. The people who hate SICP are the ones who just want to know how to drive their car on the highway, just like everyone else.
Those who hate SICP think it doesn't deliver enough tips and tricks for the amount of time it takes to read. But if you're like me, you're not looking for one more trick, rather you're looking for a way of synthesizing what you already know, and building a rich framework onto which you can add new learning over a career. That's what SICP has done for me. I read a draft version of the book around 1982, when I was in grad school, and it changed the way I think about my profession. If you're a thoughtful computer scientist (or want to be one), it will change your life too.
Some of the reviewers complain that SICP doesn't teach the basics of OO design, and so on. In a sense they are right. The book doesn't directly tell you how to design and write an object-oriented program using the subset of object-oriented principles that show up in the syntax of Java or C++. Rather, the book tells you what those principles are, how they came to be selected as worthwhile, how they can be implemented from the ground up, and how a different combination of principles might be more appropriate for some particular problems. This approach requires you to understand the range of possibilities, and to think about trade-offs as you go through the design process. Programming is a craft that is subject to frequent failure: many projects are started and abandoned because the designers do not have the flexibility, experience and understanding to come up with a suitable design and implementation. SICP gives you an approach that will succeed, but it is an approach based on principles and wisdom, not on a checklist. If you don't understand the principles, or if you are the kind of person who wants to be given a cookbook of what to do rather than to think creatively, or if you only want to work on problems that are pretty much like the problem you worked on last time, then this approach will not work for you. There are other approaches that will be more reproducible for a limited range of simple problems, but there is no better way than SICP to learn how to address the truly hard problems.
Donald Knuth says he wrote his books for "the one person in 50 who has this strange way of thinking that makes a programmer". I think the most amazing thing about SICP is that there are so FEW people who hate it: if Knuth were right, then only 1 out of 50 people would be giving this 5 stars, instead of about 25 out of 50. Now, a big part of the explanation is that the audience is self-selected, and is not a representative sample. But I think part of it is because Sussman and Abelson have succeeded grandly in communicating "this strange way of thinking" to (some but not all) people who otherwise would never get there.
Use the SICP language instead:
pkgs.racket-lang.org
There are subtle differences between the Scheme in the book and the various implementations. For 99.9% of the time it doesn't matter, but there is going to be that one time that you will be scratching your head. Scheme is the least portable language in the world (if you don't count assembly as a language).
Don't expect to finish it like a normal book, it should take at least 6 months. Some of the exercises take for fucking ever unless you want to skip them. And you should skip some if they don't seem fun, there's something like 400 exercises in the book (though some are as short as 2 minutes, and others long-ish capstone style projects).
And you probably don't want SICP to be your introduction to programming. The biggest motivator is results, and you'd be better off doing something YOU think would be fun, not what Zig Forums or /g/ LARPers think is fun. Make a shitty game, a chatbot, a tool that rips your bank statement into your budgeting program of choice, whatever. THEN come back to SICP in a year or so once you found out if you actually ENJOY programming or not.
Do you think reading SICP will gave me a framework about programming that will help me alot later on?
Thanks, that probably would've fucked me big time later
Thats disappointing. I haven't started any exercises yet but its been fun learning about stuff like black box abstraction. What would you suggest for a first book? I picked SICP because most intro to programming books are slow as fuck. I like it when a book makes me feel stupid and challenges me a bit. Y'know like when you have to read a page 5 times and look up all the terms before you finally get after sleeping on it. Should I start with think python or something?
That's so that everyone reading it is on the same page. Books are either too slow and get you up to speed so you understand the fundamentals that are necessary in later chapters.
I have no idea, but a beginner "intro to comp sci" online class is a good idea. The MIT or Berkely ones seem good. It's been so long since I learned to program I have no idea what a beginner needs in a book anymore.
Pythton is good, yeah. It's easy to make stuff with and despite what people will say, past the surface level the langauge goes just as deep as Java/C++/C, etc.
It's worth remembering that MIT doesn't even use SICP for their intro comp. sci. course anymore (though IIRC they still use it for another course). The class they used SICP for was one that most students barely survived, and that was with attending not only the classes, but additional tutorial sessions, and of course lots of private study. Keep in mind that these students were some of the brightest STEM kiddos in the country.
Although the word "Programs" appears in the title, the book isn't really about programming. It's about a branch of mathematics called computer science, and it merely uses programming as a teaching method. If you want to "do programming" or "be a programmer", pick another book. If you want to study mathematics (a particular subdiscipline known as computer science), keep on with SICP.
That's not to say that insights from the study of computer science can't/don't inform programming practice: they certainly do. But SICP is a hard place to start. At least I found it so. To give you a yardstick, I've taken a real, proctored IQ test (not an online one) and scored 135, and I could already program in Perl, Python, and C (and had successfully written programs of ~5000 lines) when I tried SICP, and I found it difficult and ultimately didn't finish it.
God this place is so much more mature than 4chan. Where do you recommend I start? I'm ambitious and learn quick but I dont want to sit through some hello world shit. Whats a good book for getting into programming?
It's a phenomenal book and one of the few classics computer science has produced.
Also one of the few books where the title is actually accurate; SICP is not about Scheme, and it's not about functional programming, it's about how complex programs are constructed from basic principles and how they're evaluated.
That said, I would not recommend SICP if you're don't yet know if you're interested in programming, it's quite theoretical and very difficult at times. Get a few little projects under your belt before you dive in. Think of something (simple) you'd like to write and search for the things you need to make it. Even just python or shell scripts could qualify. If, after that, you're hungering for more, come back to SICP.
Another book I'd recommend to get a taste of SICP is The Little Schemer, it's short, very fun, and covers the same material without as much formalism.
You can also find a modern set of lectures for SICP here:
archive.org
I've skimmed a few and they seem quite good, he talks about how this relates to more modern languages, so that might be good for some perspective.
not the same person, but feel that "How to Code: Simple Data" definately belongs with The Little Schemer as an intro course.