Live data from Hacker News

Why MIT switched from Scheme to Python (2009)

wisdomandwonder.com

191–200 of 249 posts

Re: Why MIT switched from Scheme to Python (2009)

#191

This story has been reposted many times, and I think GJS's remarks (as recorded by Andy Wingo) are super-interesting as always, but this is really not a great account of "why MIT switched from Scheme to Python." Source: I worked with GJS (I also know Alexey and have met Andy Wingo), and I took 6.001, my current research still has us referring to SICP on a regular basis, and in 2006 Kaijen Hsiao and I were the TAs for…

>the department has largely deprecated the idea of an EECS core curriculum

From my perspective, a tragedy.

Re: Why MIT switched from Scheme to Python (2009)

#192

Earlier quoted context omitted.

They're not directly comparable because humans have an inbuilt ability to learn human languages. The vast majority of people on the planet know more than one human language and know zero computer languages. It's literally the opposite of what you're claiming.

They’re not directly comparable because programming languages are much simpler and much easier to learn. Becoming a good programmer is hard, but that’s not due to difficulty of learning a programming language. Once you’re a good programmer, new languages are easy. A decent programmer should be able to do something useful in a new language in a week or less, and be reasonably competent in a month or two. See how long…

> Once you’re a good programmer, new languages are easy.

Not always. Languages can differ radically. If the new language uses concepts you've never encountered before, you're going to need to do the work of learning those new concepts.

An example I've used before: 20 years writing C code for embedded systems won't give you any insight into Haskell's applicatives or monads.

Re: Why MIT switched from Scheme to Python (2009)

#193

This story has been reposted many times, and I think GJS's remarks (as recorded by Andy Wingo) are super-interesting as always, but this is really not a great account of "why MIT switched from Scheme to Python." Source: I worked with GJS (I also know Alexey and have met Andy Wingo), and I took 6.001, my current research still has us referring to SICP on a regular basis, and in 2006 Kaijen Hsiao and I were the TAs for…

"And why Python, then? Well, said Sussman, it probably just had a library already implemented for the robotics interface, that was all." I was from the same "Nouvelle AI"/Robotics cohort as Leslie Kaelbling. Autonomous Robotics in AI back then was a fairly small community, so everyone (at least in the nato and friends) knew each other from conferences and workshops. Having written kernel and interface libraries for t…

"it was all data/signal flow and intercoupled and layered differential equations from sensors to actuators anyways."

And the you need a pure CS dude like me to turn that into readable, maintainable, efficient code.

(I work with these guys who just see the differential equations... Leave them a few years on their own and they produce a huge pile of code and then wonder why none of the students use it :-)

(it's just my own experience, and although I'm a bit cynical here, I like that job and these guys a lot, we learn a lot from each other)

Re: Why MIT switched from Scheme to Python (2009)

#194
post #77

Isn't this just part of the broader trend of CS departments switching away from teaching computer science to teaching computer engineering, which in turn is part of the more general trend of colleges becoming more vocational? LISP dialects like Scheme are excellent for teaching pure computer science because they are the closest thing to executing lambda calculus expressions. Whereas Python is excellent for teaching a…

I think it's absurd to start with Scheme. A graduate who knows Python but not Scheme has a hope of doing something with computer science. A graduate who knows Scheme but not Python is basically unable to use computers at a technical level. The only choices here are "Python" or "Scheme + Python". (Yes, of course, they could teach themselves Python at that point---but if we're talking about things that people can teach…

I think it is absurd to fail to learn the basics and focusing on 'deliverables' from day one.

You need to get the ideas first. The language used is the least of your concerns.

This is even more poignant on this era of vibe coding.

Re: Why MIT switched from Scheme to Python (2009)

#196
post #77

Earlier quoted context omitted.

I think it's absurd to start with Scheme. A graduate who knows Python but not Scheme has a hope of doing something with computer science. A graduate who knows Scheme but not Python is basically unable to use computers at a technical level. The only choices here are "Python" or "Scheme + Python". (Yes, of course, they could teach themselves Python at that point---but if we're talking about things that people can teach…

I and about a million other programmers started with BASIC. My second language was Pascal. I don’t imagine I’d be very employable if that’s all I knew, but it turns out that you can learn many programming languages and it’s not all that much effort after the first two or three. There’s no reason to think the language you start with should be one that you could get paid to use. And no, I wouldn’t recommend starting wi…

> it’s not all that much effort after the first two or three. There’s no reason to think the language you start with should be one that you could get paid to use.

Definitely!

This inspired me to list out languages I've learned to at least some minimal level and written programs in. Here they are, with the contexts in which I used them:

BASIC - middle school ;

Fortran - high school ;

C++ - self-taught & later some work;

Pascal - university;

Motorola 68k assembly - university;

Miranda - university (Programming Languages class only);

Ada - university (Programming Languages class only);

Lisp - university & work (CLOS);

sh - work;

ColdFusion - work;

bash - work and personal;

Java - work;

Atmel microcontroller assembly - hobby;

C - hobby (to replace Atmel assembly);

Ruby - work and hobby;

Scala - work;

Elixir - work;

Solidity - work;

Typescript - work and hobby;

Elm - work;

Clojure - work;

Javascript - work;

Python - hobby (with a tiny smattering of work usage over the years)

Re: Why MIT switched from Scheme to Python (2009)

#199
post #11

I was one of the last batches of students on the old Scheme curriculum. I absolutely loved it! Understanding that all loops could be done via recursion, and what a side effect is, is what fundamentally made me fall in love with CS. I've heard good things about the new, and now newer, curriculum but I know I wouldn't have had the awakening I did if it weren't for scheme. RIP SICP --- ps another fun story: we had some…

I worked an MIT programmer who bragged about the Scheme curriculum. He was also the worst programmer that I’ve worked with. He really liked clojure and would constantly complain about Python syntax, and ended up quitting abruptly when his hand spun Datomic based system was rejected. I think there is a trap in thinking that a strange way of being taught puts one at an advantage. It is really annoying to work with peop…

Every person I know who has studied SICP is a tremendous programmer.

Re: Why MIT switched from Scheme to Python (2009)

#200

When I read this I just feel like Sussman is getting out of touch and maybe a little disillusioned. From the wording he seems annoyed about the change, isn't even sure why it was made "probably because there's some library for robots", has gone from someone who would have a complete understanding of complex systems to someone who sounds more like a frustrated beginner. "Doing basic science on libraries to see how the…

Can you not see that there is a philosophical difference between these two approaches and why someone might have a preference for one or the other?
Post reply on HN