Im currently doing a run of SICP using a pdf, the original lectures, and dracket as lisp interpreter set on R5RS...

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.

Attached: a379e90193f9ae6b87740a72f5ca413bef6fbaf4f587a66da4c066e8c0dcc5c4.png (999x815, 358.42K)

Other urls found in this thread:

pkgs.racket-lang.org/package/sicp
archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E
twitter.com/SFWRedditVideos

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/package/sicp

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.

Attached: 99dcb2e8611bcbb46560bd17fc1a1d5fbce20e6c96b3a4d2bdd9f31c659a85ca.png (500x706, 442.8K)

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/details/ucberkeley-webcast-PL3E89002AA9B9879E
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.

Attached: sicp-manga.jpg (2236x1600, 730.02K)

not the same person, but feel that "How to Code: Simple Data" definately belongs with The Little Schemer as an intro course.

I'm not familiar with any good intro to programming books, but I can recommend an approach you might try based on my own experience.

When I first started programming, I had a couple of particular goals in mind. One was to solve a math puzzle I found in New Scientist. It had a "mathy" solution that required no actual calculation, but I couldn't figure it out. I realized that there was also a brute force solution (not the way the puzzle was "supposed" to be solved), that would require thousands of calculations, and I didn't want to do those by hand. So I needed to learn programming in order to have the computer do them. The other goal was to program a sudoku solver.

I picked Perl to learn. It wasn't as odd a choice then as it would be now, because this was almost 20 years ago. I found a good, free tutorial online, and started following it. Eventually, I encountered data structures that seemed like a fit for the sudoku solver (arrays), so I started working on that, then went back and forth between that and the tutorial.

So, in my experience, it's helpful to start with something you want to do, as that will give you something concrete to work on as you learn from the (generally pretty contrived) examples in whatever tutorial you use. I wouldn't recommend Perl 5 (stagnant) or Perl 6 (not enough good documentation or help online), but Python or Ruby or any other language with good documentation and lots of users would be fine. Both the official Python and official Ruby documentation are pretty good, and there are tutorials available online.

For a somewhat more off-the-wall suggestion, if you want to stay in the Lispsphere, you could try the book Practical Common Lisp. It's readable for free online. I believe the author's recommended development environment ("Lisp-In-A-Box", IIRC) is no longer available or no longer being developed, so you'd be on your own for getting a development environment set up if you wanted to use Emacs and SLIME. Or you could just fire up Lisp and use it that way.

Your first project doesn't have to be (and probably shouldn't be) too ambitious. It could be something like a single player craps game, for example. You'd learn about how to get random numbers (for the dice rolls), how to store numbers (for the bets), how to use conditional statements (if you make a bad roll, then you lose your wager), and that sort of thing.

That's How to Design Programs, isn't it?
I haven't personally read it, but a friend has, and to me it seemed to be a rather dry, modern programming book, even if it did cover the material well.

SICP and TLS are from a time when computer science could be fun, I don't mean that in the pathetic sense, like modern companies advertising 'code your own emoji', but the prose can often be lighthearted or playful, even if the subject is serious. The Little Schemer has Alice in Wonderland on its recommended reading list and SICP probably assumes you've already read it, but I don't see HtDP's authors doing anything like that.

Someone once described Lisp literature as a mix of cute and smug, I think that's why I like it so much.

That's a shit attitude to have if you want to learn something, in order to understand more complex applications of the tools you have, it's very necesarry to figure out exactly how they work individually, otherwise you will find something complex you've built isn't working because you expect because something to work differently than it does. At the core everything is just thousands of simple instructions strung together to perform something more complex, so you need to learn the simple instructions. I'd recommend K&R for C, it's not at all what you're asking for, but it's simple, short, you'll get through the basics quickly, and you'll get the understanding necessary to try and build something genuinely useful very quickly. Once you've done actual programming, you'll have a much better perspective going into something like SICP, and you'll get much more out of it.

How is it that there is any kind of C/C++ discussion on this board that some lisp degenerate comes in and derails the thing, but this MIT-laden, academic-oozing waste of a thread moseys on without any kind of criticism or acknowledgment regarding that this entire thread is baited bullshit?

What are you talking about?
OP wants to learn and people are helping him. SICP is not a book about Lisp.

He's talking about a lisp degenrate. Where have you been the last weeks?

I see and choose to ignore.

One day we'll be free to actually have threads about programming and technology again.

SICP is ridiculously good for learning computer science. It's only brainlet """coders""" who hate it.

This. I find the “cross the bridge when one comes to it” approach the most fruitful one. The main issue is finding that “not-too-ambitious” project, as Mr. 930097 said.

yes, and if it's dry, it's worth it. It's much different than any other book on the topic of intro programming that I've read or seen.

They certainly don't, but it makes a nice compliment to the abstract magic presented elsewhere in the other resources you mentioned. This book and MOOC is all about following the rules and reducing problems into smaller components in an algorithmic fashion. For what it aims to do, it's incredibly efficient, but it does take some strength to get through the dryness.

The biggest takeaways are a better toolset for approaching problems, I walked away so much more organized in my thought process for tackling and designing programs after HtDP and the associated MOOC. Nothing else I've found quite covers that same *crucial* ground.

Maybe it's analagous to dry bread sitting next to some delicous soup. They both come together to form an excellent meal, but nobody wants dry ass bread by itself.

I seriously hope you were baiting this image otherwise you should end yourself.

Attached: CS.gif (320x240, 2.42M)