Live data from Hacker News

Programming by poking: why MIT stopped teaching SICP

posteriorscience.net

131–140 of 245 posts

Re: Programming by poking: why MIT stopped teaching SICP

#131
Poke all you like. I'll just be over here writing software that isn't a broken pile of hacks. SICP is one of the most important books I haven't read. It's actually on my shelf right now. I still haven't finished it.

The fact is, as a self-taught programmer, programming is intimidating. I can reason about code, and write it, and understand it if I squint at it long enough, but I still choke on any production code I read, and have trouble solving complex problems. SICP is a book all about this. It's about building better abstractions, and despite having not yet finished it, is probably the most helpful books on programming I've read. Many books can teach you how to program. SICP teaches you how to program /well/, and why.

Along with The Lambda Papers, it taught just how powerful Scheme could be. And I maintain that Lambda the Ultimate Declarative contains the only good explanation of what a continuation DOES.

It was the book that made me want to go to MIT. I don't know if I'll ever go there (I'm still in high school), but if the people there are advocating "programming by poking," it probably wouldn't be worth my time.

This book changed my life, and I haven't even finished it yet. It should be Required Reading™, and the thought of doing it in Java makes me sick. And not just because I despise Java. Java is probably the worst language for this sort of book. SICP is an exploration of programming paradigms and concepts. Java is married to one set of paradigms and concepts, and won't budge an inch against even a hydrogen bomb.

Besides, imagine a metacircular evaluator in Java. Yuck.

Re: Programming by poking: why MIT stopped teaching SICP

#133
post #124

Earlier quoted context omitted.

My point is that it DOES. My single statement assertion was making that implicit assertion...

Why do you think you know more than they do about this?

I am simply expressing my preference and opinion.

Re: Programming by poking: why MIT stopped teaching SICP

#135

Earlier quoted context omitted.

One reason I went with different algoritm books is that they were for languages I use. Did the use of a fake ISA hamper your understanding at any point?

I think it works for the same reason _A Modern Method for Guitar_ works.. by not using a familiar context (tunes/languages), you have another vantage point to help internalize the lesson.

That could be. Someone redoing Knuth's stuff with his lessons and modern asm/HLL might create an interesting effect.

Re: Programming by poking: why MIT stopped teaching SICP

#136
post #114

Some day we will recognize that some areas of "programming" are very different and require different skill sets, and eventually different titles. We tend to call everything "software engineering" so that everybody can feel proud of such a title ("I'm an engineer"), but engineering is certainly not about figuring out how to vertically center divs with CSS (and it's also not about proving algebra theorems either -- eve…

> I can't imagine Linux and PostgreSQL being built without "science", they use a lot of it, and I'm pretty sure the authors all have read SICP and those theoretical books.

Unless you restrict "authors" to the people that worked on the original Postgres95 (and maybe not even then), I'm certain that that's not generally the case (being a postgres committer and not having read SICP).

Re: Programming by poking: why MIT stopped teaching SICP

#137
post #8

Eh. Many students will have the rest of their lives to perfect the art of poking at a library. Getting the chance to play with the more sublime CS stuff is much harder outside of university.

Exactly, by all means force your students to use different libraries and program in modern paradigms which may be centred around different libraries but I wouldn't do a CS or SE degree where that was the focus. I didn't go to uni to learn any programming languages, it was just a side effect of everything else I learnt about computers.

Re: Programming by poking: why MIT stopped teaching SICP

#138
post #46

Earlier quoted context omitted.

The ecosystem is thus becoming infested by horrible hacks which kinda-sorta work, and which everyone uses, because they kinda sorta work, and there is nothing else. Yes, but the reason it has changed for everyone is that no one understands the fundamentals any more, because they aren't being taught to anyone. I mostly agree with both of these statements, but with a slight twist. To some extent, I feel like the reason…

> no one has time to learn everything Nonsense. The fundamentals don't take a long time to learn. And once you know them, everything else becomes much easier to learn. That's the reason that learning the fundamentals matters: it's a huge lever. Here's a single, small, very accessible book that takes you all the way from switches to CPUs: http://www.amazon.com/Code-Language-Computer-Hardware-Softwa... SICP gets you fr…

> SICP gets you from CPUs to Scheme

I don't recall anything about CPUs in SICP. Its more about data driven programming and writing of intepreters.

What i liked about SICP and scheme programming was that it is a pretty good environment for tinkering - the REPL makes it easy to combine functions, and to work in a bottom-up manner. (btw you had less of that in common lisp, and most other environments that teach you to work in a top down way, however you can still work with the Python REPL).

Maybe this bottom-up approach is what Sussman really has in mind when he is talking about first principles, because SICP is really not about working up from the atoms to the scheme interpreter/compiler.

Re: Programming by poking: why MIT stopped teaching SICP

#139
post #37

Earlier quoted context omitted.

Yes, but the reason it has changed for everyone is that no one understands the fundamentals any more, because they aren't being taught to anyone. The ecosystem is thus becoming infested by horrible hacks which kinda-sorta work, and which everyone uses, because they kinda sorta work, and there is nothing else. The idea that programmers need to understand how to "program by poking" thus becomes a self-fulfilling prophe…

Formally, I think this to be a good list of fudamentals: programing paradigms, algorithms, data structures, compilers, operating systems, networking, math for CS. What else would you recommend adding to the fundamentals list?

Digital logic and computer architecture.
Post reply on HN