>In this talk at the NYC Lisp meetup, Gerry Sussman was asked why MIT stopped teaching the legendary 6.001 course, which was based on Sussman and Abelson’s classic text The Structure and Interpretation of Computer Programs (SICP). Sussman’s answer was that: (1) he and Hal Abelson got tired of teaching it (having done it since the 1980s). So in 1997, they walked into the department head’s office and said: “We quit. Figure out what to do.” And more importantly, (2) that they felt that the SICP curriculum no longer prepared engineers for what engineering is like today. 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.
>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 “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?'”. 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.
maybe, its also kind of an academic critique, theres plenty of options to do the "old style" of programming they advocate still
Jacob Peterson
Yes.
Justin Watson
especially writing control logic. engineers should know more about programming than drawing 300 pages of gates and io signals that they hand off to a mere cad draftsman.
Kevin Walker
He is right in the sense that you shouldn't read SICP in order to get a programming job. You read SICP to achieve satori.
William Cruz
lt was too hard for non-whites.
Ian Perez
this. it's fucking obvious, and you should be able to tell straight away by sussman's sad joke answer
I think the book is still useful and the techniques are good to learn, but the OPs quote about programming by poking is (mostly) right.
Some of the most used software are massive open source projects that the vast majority of people don’t fully understand. It also doesn’t make sense to roll your own Spark or Kafka when these open source projects have much more manpower and expertise than you do. It still takes skill and knowledge to understand how these tools work and how to build things with them, and to be a good engineer you can’t just blindly use these tools and hope they’ll hold your hand. But with these tools we can build software that can do a lot more than programmers were able to in the past.
Programming has always been built on abstraction. Who fully understands C or Unix?
John Turner
>Programming has always been built on abstraction. Only when they first created C to address the deficiencies of assembly. Everything after that was needless "abstraction" for the sake of "abstraction".
Chase Campbell
So basically I should read HTDP instead. Thanks OP.
Michael Cruz
Well that's an awfully diplomatic way to say that people nowadays are fucking retards that can't actual solve problems independently but merely glue libs together and fuck around until something sort of kinda works maybe.
It's not confined to CS though, I'm in an entirely different field and all around the curriculum is in decline, people aren't as intelligent or as capable of reasoning as they were in the past.
Chase Nguyen
that's what it looks like, yep
Julian White
oh wow a textbook from the 80s about computer technology is out of date. who would've guessed?
Joshua Cooper
>Who fully understands C A lot of people? It’s a very small language.
Kayden Nguyen
I bet you role your own network stacks, dbs, load balancers and messaging queues too.
Parker Jackson
The real patrician path is Euclidean geometry -> philosophy -> mathematical logic (Leibniz, Boole, and Frege) -> the fundamentals of electrical engineering -> assembly language -> C -> some contemporary high-level language like Java or Python
Caleb Campbell
>Nowadays, we do programming by poking It's come full circle. In the old days (the 80s), we did programming by POKEing and PEEKing
>Forth -> some actually good high-level language like Lisp ftfy
Noah Nelson
>people aren't as intelligent or as capable of reasoning as they were in the past
They most certainly are. The difference is that we needed warm bodies to take care of unoriginal works while those who are intelligent and capable take on new problems. Every generation thinks that the next generation is full of idiots because the things that were difficult for them are made easy. It's been going on forever, consider what Socrates thought about writing:
>[Writing] will create forgetfulness in the learners’ souls, because they will not use their memories; they will trust to the external written characters and not remember of themselves. The specific which you have discovered is an aid not to memory, but to reminiscence, and you give your disciples not truth, but only the semblance of truth; they will be hearers of many things and will have learned nothing; they will appear to be omniscient and will generally know nothing; they will be tiresome company, having the show of wisdom without the reality.
There will always be intelligent people around, and those intelligent people will help the less intelligent do work that would otherwise be far beyond their capabilities. That's progress - and while the programs these less intelligent people write are less efficient than what could be made by a genius, that genius' time can now be spent on real, difficult problems instead of the ten millionth boring-as-fuck-who-cares-if-its-slow-but-lucrative-program.
Jason White
you're missing this: >As to why they chose Python as an alternative, Sussman joked that it was “late binding” decision. Python has a ton of libraries that make it applicable to many types of projects that instructors might want to assign (like writing software to control a robot.) >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. web.archive.org/web/20160504164044/http://www.posteriorscience.net/?p=206
James Cooper
Except you can measure the decline in today's students proficiency, or lack thereof. Now guess what. They do.
Carter White
>he says, while posting within a communcations protocol, within a browser within an operating system
Isaac Robinson
Skipping calculus and discrete math ...
Brody White
lmao the actual state of "programmers" these days
Lincoln Richardson
Those are useless junk and discrete "math" isn't even math.
Connor James
Im arguing that they should not be skipped.
Alexander Lee
>discrete math Whoever knew counting could be this fucking hard? >muh generating functions Holy fuck.
>Who fully understands C Everyone who has used it for more than a week.
Ryder Lopez
That's a different thing altogether. We have an explosion in the number of students going to college. We don't have an increase in the frequency that we get geniuses. Of course the proficiency of students is going down - everybody is getting in.
That doesn't mean that there are any fewer intelligent people around, it just means that the overall quality is down because of the number of warm-body-code-monkeys they're putting through.
Leo Smith
Holy fuck. The current state of Jow Forums
Jayden Lopez
Yes. Brian Kernighan has said the same thing. If you ask more programmers and computer scientists I am sure you will find similar sentiment.
Henry Allen
then why is there debates over the nature of C in the linux kernel developers mailing list ? Surely those guys have programmed more than a week.
Christian Scott
I just took a look at this book out of curosity, the prologue was talking about how programmers were wizards, then I flipped to a random chapter and it says imperative programming is bad and it's teaching people fucking Scheme This is the shit they teach people at school? Is this is why this board is so fucking retarded?
Nolan White
He's not wrong, but it's also a magnificently stupid approach
Nolan Peterson
>we want the code monkey alumni Shame to see MIT go substandard. Even my university funnels every CS, CE, and EE major through a discrete math course taught with Lisp.
>quins The worst part about working with scientific code is all the 5-character max variable names. Fucking F77
Landon Lee
big surprise that someone throwing the term code monkey around also lacks reading comprehension.
Eli Ortiz
>Who fully understands C or Unix? >The C Programming Langauge covers the entire langauge at a level suitable for beginner programmers and experienced programmers, has a reference manual for the language, and a reference manual for the standard library in 260 pages >Who fully understands C or Unix? A lot of people, user. A lot of people.
William Robinson
People debate the philosophy of C, but the actual language is insanely small. >Since C is relatively small, it can be described in a small space, and learned quickly. A programmer can reasonably expect to know and understand and indeed regularly use the entire language. -K&R
Parker Kelly
>lol why would we want our computer science grads to understand computer science when they can just mix and match libraries in Python
Kayden Perez
this was not about philosophy but rather syntax and semantics. The language standards and compilers sure aren't the same from the day of K&R.
Luis White
nobody takes CS because they want to learn computer science. Actual computer science is largely useless
Josiah Ramirez
>The language standards and compilers sure aren't the same from the day of K&R. They've been extended, sure, but the core of the language is largely the same. Most of the debates stem from style and mannerism preferences. C is still a really small language and you're a brainlet if you don't fully understand it. You're probably also confusing people debating how to implement ideas with debating the language.
Ethan Bailey
that's a dumb distinction by that logic every language is simple (other than some troll languages people created). Writing a line of code and implementing an idea as you call it are indistinguishable in practice.
Ethan Sanders
>by that logic every language is simple No, they are not. Again, 260 pages is enough to explain C's entire feature set and house a reference manual for the language and standard library. You sound like you don't know what you're talking about. What are these discussions you're even referencing?
Samuel Taylor
except socrates was right in many regards. individually we have fallen but as a whole we have grown. the 'machina' is being built on the back of warm shoulders but cold hearts. we are being pushed in a certain direction by (((forces))) and for that greater 'good' you see The Decline of Western Civilization. enjoy it. drink some brut!