TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Programming by poking: why MIT stopped teaching SICP

478 pointsby brunocabout 9 years ago

37 comments

jdmoreiraabout 9 years ago
Reading this made me so so sad, I do agree with the reasoning.<p>I learned to program on a course that follows SICP, I spent all my college years learning how to program from first principles, building all the pieces from scratch. Building compilers, soft threads implementations, graph parsing algorithms... and I was happy with that way of programming!<p>Today I&#x27;m an iOS developer, I spend most of my day &#x27;poking&#x27; at the Cocoa Touch framework whose source I can&#x27;t even read because it&#x27;s closed source. The startup I work for moves so fast that I&#x27;m forced to use other peoples open source projects without even having the time to read the source. I feel miserable doing the kind of programming I do nowadays! I wish I could go back to simpler times, where I actually had to reason about algorithms, data structures, hardware, etc...
评论 #11631049 未加载
评论 #11630824 未加载
评论 #11634690 未加载
评论 #11633344 未加载
评论 #11630771 未加载
评论 #11634023 未加载
评论 #11632219 未加载
评论 #11634933 未加载
评论 #11633975 未加载
评论 #11631040 未加载
评论 #11633588 未加载
评论 #11632251 未加载
评论 #11631914 未加载
GrumpyYoungManabout 9 years ago
I&#x27;m surprised and a bit dismayed to read Sussman&#x27;s reasoning:<p><i>&quot;...Sussman said that in the 80s and 90s, engineers built complex systems by combining simple and well-understood parts. The goal of SICP was to provide the abstraction language for reasoning about such systems.<p>Today, this is no longer the case. Sussman pointed out that engineers now routinely write code for complicated hardware that they don’t fully understand (and often can’t understand because of trade secrecy.) The same is true at the software level, since programming environments consist of gigantic libraries with enormous functionality. According to Sussman, his students spend most of their time reading manuals for these libraries to figure out how to stitch them together to get a job done. He said that programming today is &#x27;More like science. You grab this piece of library and you poke at it. You write programs that poke it and see what it does. And you say, ‘Can I tweak it to do the thing I want?&#x27;&#x27;. ... &quot;</i><p>Surely graduates of MIT, of all places, would be the ones building the libraries that ordinary programmers are stitching together and would still need the ability to build complex systems from fundamental CS abstractions? I&#x27;m absolutely baffled.
评论 #11629706 未加载
评论 #11630157 未加载
评论 #11630079 未加载
评论 #11630582 未加载
评论 #11629763 未加载
评论 #11631199 未加载
评论 #11629803 未加载
评论 #11630187 未加载
评论 #11629962 未加载
ng12about 9 years ago
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.
评论 #11633057 未加载
评论 #11632672 未加载
评论 #11629833 未加载
mattlongabout 9 years ago
I really wish SICP had been a 2nd year course (with a requisite increase in difficulty) instead of my very first course in the EECS department. Not having had a ton of background in programming beforehand, I feel that a lot of what SICP has to offer was lost on me to some degree due my not appreciating it at the time.<p>I suppose the same could probably be said for any intro course or just college in general...
评论 #11633442 未加载
评论 #11630424 未加载
评论 #11629871 未加载
评论 #11632384 未加载
评论 #11630565 未加载
评论 #11633302 未加载
评论 #11630015 未加载
stepvhenabout 9 years ago
All that said, it is still worthwhile to work through all of SICP, if you want a deeper understanding of how certain tools work. Writing your own interpreter is a very rewarding experience.
评论 #11629495 未加载
评论 #11629453 未加载
reuvenabout 9 years ago
Wow.<p>I took 6.001 as an undergrad at MIT. It changed my view of software forever.<p>Years later, I now spend most of my time training programmers at hi-tech companies in Python. The ideas that I got from 6.001 are pervasive in my training, and are fundamental (I think) for programmers to understand if they want to do their jobs well.<p>Given that I teach tons of Python, you might think that I&#x27;m happy that they switched to Python as the language of instruction. That&#x27;s not the case; I think that Lisp offers more options for thinking about programming in different ways.<p>One of the great things about 6.001 was that it didn&#x27;t try to teach you how to program for a job. It taught you how to think like a programmer, so that you could easily learn any language or technology they threw at you.<p>Oh, well.
qwertyuiop924about 9 years ago
Poke all you like. I&#x27;ll just be over here writing software that isn&#x27;t a broken pile of hacks. SICP is one of the most important books I haven&#x27;t read. It&#x27;s actually on my shelf right now. I still haven&#x27;t finished it.<p>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&#x27;s about building better abstractions, and despite having not yet finished it, is probably the most helpful books on programming I&#x27;ve read. Many books can teach you how to program. SICP teaches you how to program &#x2F;well&#x2F;, and why.<p>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.<p>It was the book that made me want to go to MIT. I don&#x27;t know if I&#x27;ll ever go there (I&#x27;m still in high school), but if the people there are advocating &quot;programming by poking,&quot; it probably wouldn&#x27;t be worth my time.<p>This book changed my life, and I haven&#x27;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&#x27;t budge an inch against even a hydrogen bomb.<p>Besides, imagine a metacircular evaluator in Java. Yuck.
fvtabout 9 years ago
Some day we will recognize that some areas of &quot;programming&quot; are very different and require different skill sets, and eventually different titles.<p>We tend to call everything &quot;software engineering&quot; so that everybody can feel proud of such a title (&quot;I&#x27;m an engineer&quot;), but engineering is certainly not about figuring out how to vertically center divs with CSS (and it&#x27;s also not about proving algebra theorems either -- even if it can be essential when it comes to specific problems that require it).<p>I can&#x27;t imagine Linux and PostgreSQL being built without &quot;science&quot;, they use a lot of it, and I&#x27;m pretty sure the authors all have read SICP and those theoretical books. Poking at things proved to be efficient to building things quickly, but it&#x27;s just not how one builds critical systems&#x2F;software that are robust, efficient and maintainable.
评论 #11632904 未加载
评论 #11632622 未加载
评论 #11632256 未加载
评论 #11634080 未加载
ehudlaabout 9 years ago
There&#x27;s a quote I love from the book &quot;The Idea Factory: Learning to Think at MIT&quot;:<p><i>Freshman double E&#x27;s take six double oh one (a.k.a. six double no fun) to learn to program in LISP... This is also where they begin to leave the rest of the world behind them in their ability solve problems and make things work.</i><p>He goes on to describe how the course instills the virtues and limits of abstraction.
评论 #11632949 未加载
评论 #11633692 未加载
jeffreyrogersabout 9 years ago
I read about half of SICP and thought it was OK. Not great, but okay. The programmers I&#x27;ve met fall largely into two groups, those who like systems level programming, knowing how the OS works, how it interfaces with the hardware, what the memory layout is like, etc. and those who like abstraction and the things that SICP values. I&#x27;m definitely in the former group (but I certainly appreciate people who prefer the SICP approach).<p>There&#x27;s room for both of course, but for people like me SICP was really a slog. Some of the exercises were hard sure, but more than that the material just wasn&#x27;t that appealing to me. I don&#x27;t have any comment on whether MIT&#x27;s decision was the correct one, but liking SICP or working through SICP is by no means a prerequisite of being a good programmer.
评论 #11634419 未加载
评论 #11630895 未加载
评论 #11632088 未加载
评论 #11631239 未加载
bawanaabout 9 years ago
This is the way of real life. We breathe, eat, excrete all without understanding or knowing. We poke at our bodies with junk food, exercise, video games, and other stimuli. Sometimes we achieve the desired effect, most times not. We still do not really know how we work. Poking at complexity is ALWAYS how science was done.<p>And the high priests of computer science strove to build a corpus that was intimidating, complex and beautiful. They tried to be gods and birth a new form of life. That computer scientists applied Socratic and Aristotelian principles to their framework is hubris. Human individuals really cannot be gods to machines that are useful. We have constructed masses of spaghetti code into libraries that no one has the time to read or understand and it is our own fault. These are tools and should have been kept simple and open and easy. Perhaps AI will evolve to save its parents.<p>I have a dream of the day when I can talk to Alexa, and write code for her in English just by speaking. Her built in projector would show me what I said. My words would be translated into correct Python, c++, or JavaScript. She would highlight errors that would lead to build failures. Point out race conditions. And tell jokes along the way.
shepardrtcabout 9 years ago
&gt; Sussman admitted that the SICP curriculum was “more coherent” than what they have now and that they still don’t know what the right curriculum should be.<p>The article should have led with this because I believe it would have framed the rest of it more accurately.
fintupleabout 9 years ago
Did SICP at Berkeley. Really awesome course. Thanks MIT for not teaching it anymore. Makes me a better programmer than your new grads now. Hah!
评论 #11630923 未加载
Animatsabout 9 years ago
<i>&quot;Programming environments consist of gigantic libraries with enormous functionality.</i> Some of which works. This leads to what I call ritual-taboo programming. People follow the rituals and avoid things they&#x27;re told to avoid. This is reflected in programming books. Programming books were once reference manuals, which listed each function and what it did. Now, they&#x27;re enormous compendiums of examples.<p>It&#x27;s sad, but MIT made the right decision. MIT used to produce people who designed elegant, perfect little jewels of code. There just aren&#x27;t many jobs for those people. Algorithm design just isn&#x27;t that big a deal any more. Most of the useful ones have been written and are in libraries. Who reads Knuth any more?
benwrabout 9 years ago
The article is based on this video segment, from GJS: <a href="https:&#x2F;&#x2F;vimeo.com&#x2F;151465912#t=59m36s" rel="nofollow">https:&#x2F;&#x2F;vimeo.com&#x2F;151465912#t=59m36s</a>
rhinoceraptorabout 9 years ago
If you haven&#x27;t watched the SICP video lectures [1], they are really great.<p>[1]: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2Op3QLzMgSY" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2Op3QLzMgSY</a>
Const-meabout 9 years ago
Looks like another face of a centuries-old debate between theoretical and experimental science.<p>The theoretical scientists play with abstractions they fully understand. Experimental scientists poke at things they don’t fully understand. They tend not to do well with each other.<p>When computers were in the infancy, they were viewed primarily as a scientific tools to crunch numbers and play with abstraction. That’s the theory-oriented view that I think is shared by the SICP authors.<p>Then computers became complex, fast, and capable of doing much more than crunching numbers and evaluating those S-expressions. While you can view a modern web browser, or MS Word, or a videogame, as a program for a Turing complete machine, this does not mean you should. Too little value in that: sure there’re instructions and state, but now what? More experiment-oriented mindset usually works better with those kind of problems.
sitkackabout 9 years ago
&gt; “More like science.<p>ummm, I hardly see anyone and by anyone I mean even people &gt; 20 years of experience doing empirical research while solving problems. Maybe the _like_ needs more emphasis? We don&#x27;t really teach science or the design of experiments. This is arguably the most important intellectual tool we have ever developed and it should be the core of all education.<p>Programming by poking that I see folks doing, isn&#x27;t science. It is stabbing in the dark until something appears to work. There is more to computational thinking that throwing some APIs together in a blender and making a cool demo.<p>As a longtime Python programmer, I wish more people would start with Scheme. Most Python is written like some dynamically typed Java; people are using maybe 30% of the power of the language.<p>I really wish I could have experienced those SICP lectures in 86.
wellpastabout 9 years ago
&gt; The “analysis-by-synthesis” view of SICP — where you build a larger system out of smaller, simple parts — became irrelevant. Nowadays, we do programming by poking.<p>I imagine many of us do programming by poking. But the skill set referred to here is essential if you&#x27;re going to build (create&#x2F;construct) a complex system or architecture.<p>To say the skill set is irrelevant is to say we as an industry are doing things more or less right. But when I look around, I see that we&#x27;re making a huge mess of things everywhere or are at least sorely inefficient when it comes to building and growing systems. That is to say, I believe (I know) that we could be doing much much better than we are now -- and I believe the skill set being dismissed here is a large key to doing better. So I&#x27;m sad to see it dismissed like this.
Hydraulix989about 9 years ago
That&#x27;s a shame because the theoretical grounding that comes from SICP is enough of a clue to tell you why black box library X is crashing, runs too slow, lacks feature Y, etc. and maybe even enough of a clue to help you modify&#x2F;hack it to get feature Z as a workaround.
techonupabout 9 years ago
This isn&#x27;t entirely accurate- SICP is still taught as a 4-week intensive during MIT&#x27;s IAP (January) term. It doesn&#x27;t fulfill any requirements, but the student evaluations are excellent (averaged a 6.7&#x2F;7 over the last two years).<p><a href="http:&#x2F;&#x2F;web.mit.edu&#x2F;alexmv&#x2F;6.037&#x2F;" rel="nofollow">http:&#x2F;&#x2F;web.mit.edu&#x2F;alexmv&#x2F;6.037&#x2F;</a><p><a href="http:&#x2F;&#x2F;student.mit.edu&#x2F;catalog&#x2F;search.cgi?search=6.037" rel="nofollow">http:&#x2F;&#x2F;student.mit.edu&#x2F;catalog&#x2F;search.cgi?search=6.037</a>
erikbabout 9 years ago
I think it&#x27;s also very natural for this time that &quot;[the past solution] was “more coherent” than what they have now and that they still don’t know what the right [current solution] should be.&quot; If you ask around you that&#x27;s how most people feel about their job, their families, some more advanced people even feel that way about their gender, political position, life goal, philosophy.
zerrabout 9 years ago
I was wandering what happened to those HP employees from SICP lecture videos. Where are they now, what careers they had, etc...
评论 #11641293 未加载
blktigerabout 9 years ago
Personally, I think CS students need to understand both programming by abstraction and programming by science (poking). The abstraction stuff is important for designing maintainable code. The science stuff is important for maintaining code.
kreekabout 9 years ago
If you&#x27;re learning Clojure there&#x27;s a site&#x2F;book that incorporates much of the original SICP text: <a href="http:&#x2F;&#x2F;www.sicpdistilled.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.sicpdistilled.com&#x2F;</a>
linhchiabout 9 years ago
I&#x27;m not techie, so i&#x27;d like to ask if my interpretation is ok. The switch from scheme to python is in the tidal change of conceptual thinking? Previously, giants &amp; pioneers approach AI systematically, w consistent logic and clean structure (like maths language).<p>However, for now, the narrative shifts to &quot;poking around, hoping to poke the right thing&quot;?<p>I use Racket &amp; its thinking for research. I think that structured thinking is still intellectually important. So it&#x27;d still survive, as there&#x27;d still be people sticking w it.
kulpreetabout 9 years ago
As someone who took the replacement 6.01 Intro to EECS, I would have much rather taken 6.001 SICP.<p>I&#x27;m sorry to say, but I feel very strongly about 6.01 being the least useful course I took at MIT.
varadgabout 9 years ago
As a college student who followed along Berkeley&#x27;s SICP lectures online in 2015 (taught by John DeNero), I am kinda confused by the Scheme v&#x2F;s Python debate. Did I miss out on something having used Python in the entire first half of the course v&#x2F;s say CS61A taught completely on Scheme (like when taught by Brian Harvey)?
评论 #11630975 未加载
benwrabout 9 years ago
Google cache: <a href="http:&#x2F;&#x2F;webcache.googleusercontent.com&#x2F;search?q=cache%3A%2F%2Fwww.posteriorscience.net%2F%3Fp%3D206&amp;oq=cache%3A%2F%2Fwww.posteriorscience.net%2F%3Fp%3D206" rel="nofollow">http:&#x2F;&#x2F;webcache.googleusercontent.com&#x2F;search?q=cache%3A%2F%2...</a>
chris_wotabout 9 years ago
The book can be found here:<p><a href="https:&#x2F;&#x2F;media.githubusercontent.com&#x2F;media&#x2F;sarabander&#x2F;sicp-pdf&#x2F;master&#x2F;sicp.pdf" rel="nofollow">https:&#x2F;&#x2F;media.githubusercontent.com&#x2F;media&#x2F;sarabander&#x2F;sicp-pd...</a>
topkekzabout 9 years ago
Hal Abelson on the end of SICP at MIT (2011)<p><a href="http:&#x2F;&#x2F;codequarterly.com&#x2F;2011&#x2F;hal-abelson&#x2F;" rel="nofollow">http:&#x2F;&#x2F;codequarterly.com&#x2F;2011&#x2F;hal-abelson&#x2F;</a>
shitgooseabout 9 years ago
&quot;in the 80s and 90s, engineers built complex systems by combining simple and well-understood parts.... Today, this is no longer the case.&quot;<p>yep:(
bparanjabout 9 years ago
Great concept! Soon monkeys will do all the poking. Humans can just watch.
vu3rddabout 9 years ago
I wish the original course is offered in an alternate platform like edX.
评论 #11633313 未加载
dschiptsovabout 9 years ago
Yes yes.<p>Old school, understanding based, composable via interfaces components gave us things like R4RS, Plan9, git, LuaJIT, nginx, Erlang, you name it.<p>That packing or poking crappy mindset produced so called eneterprise software with all its ole, jdbc, javaee, corba, NodeJS, and all the other meaningless bloatware.<p>BTW, this a human-universal law. Lack of understanding of grounded in reality fundamental principles will enivetably produce piles of abstract nonsense, be it philosophy (of Hegel), [Java] programming, theoretical physics or even math (500 pages Coq &quot;proofs&quot; of abstract nonsense).<p>There is the law of cancer (in terms of 4chan) - any branch of human endeavor will be ruined with enough of cosplaying idiots.<p>BTW2: teaching of principles is too difficult, because, like a good philosophy, which is a study of principles, it requires extraordinary trained and lucid mind habitually trying to separate underlying principles from human-made &quot;higher&quot; or &quot;pure&quot; nonsense.<p>This habitual mental hygiene, which guards the principles from contamination by popular memes and waves of mass hysteria is very rare trait, impossible to sell or monetize. To teach it requires a similar mindset in students. Packers would be unable to grasp what is it I am talking about.<p>The Motorcycle Maintenance book, and that part of Atlas about modern philosophers will be a much better illustration.
kamran20about 9 years ago
So painfully true. This is one of the very first things I try to determine when I&#x27;m interviewing someone: do they have the capacity to actually figure out how things work, or are they doing something rote that they picked up along the way and will just blindly change code until &quot;it works&quot; when they hit a serious obstacle?<p>And I&#x27;ve also worked with plenty of very senior engineers who will blow smoke up your ass when you&#x27;re really down in the weeds and you want to do &quot;root cause&quot; analysis.
yarouabout 9 years ago
I still swear by SICP and TAOCP for anyone who wants to learn CS seriously.
评论 #11629780 未加载