Live data from Hacker News

Why MIT switched from Scheme to Python (2009)

wisdomandwonder.com

181–190 of 249 posts

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

#181
post #41

Earlier quoted context omitted.

Yes. One of the biggest complaints that computer science departments used to get from students is that they weren't learning any languages that employers are using.

I always found this to be a shortsighted complaint. Getting exposed to languages where computation models are clear gives you an excellent background to switch to the language du jour and become a master. Going through e.g. HtDP or CTM makes it easy to transition to Python and write excellent code, whereas traversing the opposite path is going to be tough.

Having taking a course based on HtDP as my first serious coding course in college, it was good at teaching many concepts, but it felt very verbose and was aggressive in its hiding of features that weren't that difficult to grasp.

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

#182
post #83

Earlier quoted context omitted.

One of the big shifts in academia over the past couple decades is that, for any number of reasons, students today are less likely to self-study or tinker outside of classes and internships. The increased prevalence of basic bootcamp-style classes like "Let's Build a Rails App" in CS programs is because departments can no longer assume that students will explore things like that in their spare time.

What good does that do, though? Make it harder to tell the intrinsically motivated students from the “I’m just here to get a job when I graduate”? It seems like it harms the former. Is that what we need from universities? Is that helping employers? Helping strong or intermediate students?

It's what universities have become. They are expensive, grandiose trade schools operating out of very distinguished-looking Collegiate Gothic designed buildings.

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

#183

Earlier quoted context omitted.

Hi Keith! Another consideration was that the core computer programming skills needed to be taught more broadly to basically everyone and not just course 6 students. Source: I shared an office with Keith next to Hal and Gerry--he taught me Java! Fun anecdote: we had to move RMS's stuff to the new CSAIL building because he had broken his arm punching a wall.

Ive broken my hand punching a wall, its not nice :/. Also I hated scheme in first year uni, my brain just did not get the pattern matching required... Australian uni's probably just copied the syllabus from US ones at that time.

I misremembered the story and checked on details: the arm broke in a fall while he was travelling several months prior to the move and it was Gerry joking that he punched a wall so he wouldn't have to move stuff.

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

#184
post #152

Earlier quoted context omitted.

> Whereas Python is excellent for teaching applied computer engineering, because it's essentially executable pseudocode for imperative languages It's not that simple, Python is a fiddly, complex, high-level language that has accreted features in a very ad-hoc way. This makes it very hard to teach and learn in a way that's expected to pay even the most cursory attention to actual rigor. You could probably define a Bab…

Python was invented as a language for newbies. It's come a long way! https://en.wikipedia.org/wiki/History_of_Python#Version_1 > During Van Rossum's stay at CNRI, he launched the Computer Programming for Everybody (CP4E) initiative, intending to make programming more accessible to more people, with a basic "literacy" in programming languages, similar to the basic English literacy and mathematics skills required by mo…

It was an attempt but a bad one.

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

#185
Good writeup...it's two answers in one ;)

I've come full circle from the first answer given. I wanted to get into neural nets a couple years ago. I chose Clojure because I knew I would be interfacing with components I didn't understand and wanted a system that helped me explore.

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

#186
I know, that I am just a single data point, but Scheme took the fun out of programming in my computer science studies. Of course I do understand, that it makes teaching lambda calculus obviously a lot easier and is a better vehicle for teaching theoretical computer science concepts, than say, Python.

But at the same time Scheme is limited to academia and has near zero practitioners outside academia. So the Scheme ecosystem is tiny compared to Python or Java.

Yes, you could argue, that "Computer Science" is not mere "Software Development" and academia shouldn't bow down to industry and shouldn't be a tool to provide "programmers". But again it's also important for motivation to apply the language, algorithms and concepts in other fields. Learning also has to do a lot with motivation and experimentation.

And this is a "hot take", but I always had the feeling back then, that courses are often bound to the professors curriculum and sometimes their books, so I am not surprised about resistance to changing the language.

That said, I was glad, when the Scheme lectures were over. Now I am a Software developer for more than a decade and have to admit, that learning Scheme didn't make me a better programmer at all. If I'd stayed in academia I might have a different opinion.

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

#187

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 those type of robot systems in those days, it was not that much work that it would need to be an issue determining language choice.

My uninformed guess based on what lived in the community at the time would be that the teachings were so focussed on the ideas of physical grounding, control paradigms and systems, "the world is its own best model" and reaction against the symbolic reasoning systems that came before, that Scheme/Lisp had to go because it was an icon of the symbolic paradigm, and that in the new 'subsymbolic' world we did not pay attention to the programming language at all, because basically it was all data/signal flow and intercoupled and layered differential equations from sensors to actuators anyways.

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

#188
A good computer science program should expose students to lots of different languages and teach them that they are all different for valid reasons. There are many different paradigms and there is a rich history of languages at this point.

The issue with Scheme is that it has very little relevance outside of academia. It's fine for making students learn that as an exercise to teach them that there are different ways of doing things and some of those ways can be wonderful. But you need to learn more than just that to become a proper computer scientist or software engineer.

Python is a useful language to know just because of how useful it is. But it's not a great language to teach functional or object oriented programming. I would actually use different languages for teaching those concepts. Back when I studied, those languages where Gofer and Smalltalk. Gofer is a Haskell dialect/predecessor. Haskell already existed but wasn't that common yet. Scheme was already old news in the early nineties.

I actually learned Java during the summer of 1995 as a second year student as a preparation to teach it to first year students. My university was progressive like that. I learned C in my first year. They switched to C++ the next year. By the fourth year I had been exposed to Prolog, Java, Delphi, C, C++, Gofer, Smalltalk, Modula, Pascal, Lisp (in various variants) and probably a few other things that I've since forgotten.

One of the wonderful courses we got taught us all about the UNIX command line (mostly HP UNIX at the time, and a little bit of Solaris). Things like pipes & filters, regexes, AWK, etc. Different courses would expose you to different tools and languages. I followed a few courses on expert systems and bayesian belief networks. That just required you to deal with the lisp dialects used for that. The people giving these courses were proper researchers too. And they just used what they would use themselves.

I did not fully appreciate it at the time, but Utrecht university had a wonderful computer science faculty with some amazing people. I learned functional programming from a young enthusiastic Erik Meijer who later joined Microsoft, Facebook etc. and built things like F#, LINQ and a few other things.

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

#189
>In 1980, good programmers spent a lot of time thinking, and then produced spare code that they thought should work. ... But programming now isn’t so much like that, said Sussman. Nowadays you muck around with incomprehensible or nonexistent man pages for software you don’t know who wrote. You have to do basic science on your libraries to see how they work, trying out different inputs and seeing how the code reacts.

Is that how people read code these days? I've always been weaker at reading code, but great at writing it. Iama Data Scientist, which explains why; I haven't had to read tons of code throughout my career. The topic kind of scares me. His description scares me even more.

Post reply on HN