Live data from Hacker News

Why MIT switched from Scheme to Python (2009)

wisdomandwonder.com

141–150 of 249 posts

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

#141
post #132

Earlier quoted context omitted.

> Knowing your way around the ecosystem of one programming language does not build up the intuition necessary for identifying O(n²) (or worse!) algorithms and choosing/writing O(log(n)) (or better!) ones instead. I'll disagree with this, at least in terms of Scheme versus Python. Python is visually close enough to other languages that the skills you develop to quickly see O(n²) algorithms easily transfer to many othe…

Scheme has (trace), at least most interpreters (and his cousing Common Lisp) have some tracing and pretty-printing features. Far more powerful than anything Python could offer. Oh, and of course it has functions like sdraw or draw-cons-tree when you can print the contents of a list in seconds as an ASCII-ART chart: https://www.t3x.org/s9fes/draw-tree.scm.html The file it's in the public domain. Try that with Python.

Python has the pprint module, which takes care of this for you, and for more datatypes than are done here. (I don't see how this would handle a hashmap in a sensible way.)

But I'm not sure how this addresses what I was saying, which is that the intuitions about algorithms you get working on Python are easier to transfer to popular languages like C++, Java, Javascript, Rust, etc..

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

#142

16 years later, I'm still disappointed about this decision. The justification for it is just awful: "6.001 had been conceived to teach engineers how to take small parts that they understood entirely and use simple techniques to compose them into larger things that do what you want. But programming now isn’t so much like that, said Sussman. Nowadays you muck around with incomprehensible or nonexistent man pages for so…

His top students were capable of entirely understanding Scheme within a day or so (but not capable of entirely understanding all of Python and all of PyPI). He wanted students to be even better than that. He wanted them to lead productive and resilient collaborations even when they didn't or couldn't entirely understand the small parts.

Given a day, top students can understand enough of Python to write enough code to get the point about how programs rely on abstraction and composition.

(Of course, the latter part of the course, describing the implementation of the runtime, would need considerable rethinking.)

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

#143

> 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. Probably the best way, and maybe the only way, to learn this is by doing it. That's how I learned it, with no formal training in programming. What I learned from SICP and Sussman…

Absolutely agreed. This situation reminds me of discourse on learning natural languages, where people are constantly told that there is no substitute for time spent deliberately on immersion. But you won't accurately figure out grammatical structures that way; you'll get distracted by the parts you understand and fail to assemble them into a whole.

University (and earlier!) courses ought to focus on the kinds of things that actually require direction to learn.

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

#144
post #99

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…

This comment so obviously belongs on https://news.ycombinator.com/highlights that it's maybe a good occasion to mention that https://news.ycombinator.com/highlights exists. Thanks! (and sorry for offtopicness)

Neat. Is there any way to search the highlights?

("What are the most noteworthy things that have been said on HN about ...?" "I remember reading an excellent comment that had something to do with ..., but all I can remember is that it used the word ..." "Do I have any comments in the highlights?")

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

#145

Earlier quoted context omitted.

Executable pseudocode is an oxymoron.

And so is Python in many ways. The shoe fits.

An oxymoron is a word or phrase that contradicts itself (the word comes from Greek bits meaning "sharp" and "soft"). It doesn't make any sense at all to say that Python is an oxymoron. Python-the-language isn't the kind of thing that can be an oxymoron; "Python"-the-name obviously isn't one because it doesn't have two parts that could contradict one another.

Does your comment mean anything other than "I don't like Python very much", and if so what?

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

#146
post #43

Earlier quoted context omitted.

Human languages and programming languages are not comparable. You will need a lot more effort to become fluent in a second human language than in second programming language. Even if the human language is Esperanto (designed to be really easy for speakers of European languages), and the programming language is C++ (perhaps the most inconsistencies and foot guns) the programming language will need a lot less effort to…

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.

Have you thought through what you said?

You also have an inbuilt ability to learn a computer language. What even is an inbuilt ability?

Programming languages are something you read and write and execute. You can learn many and their definition is precise and limited. It's very easy to be able to pick a programming language and use it in relative low amount of time.

Human languages are absolutely different. You can't easily pick them up and they carry cultural context, regional variations, and a lot of ambiguity and history. Definitions of those languages tend to be complete or prescriptive but descriptive and evolving. The languages are written, spoken, read and listened to. The variation in all of those is immense.

Do you acknowledge any of this or will you double down in the most absurd of points?

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

#147

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…

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.

indeed. The problem with being expose do to something so much more clean/elegant/powerful than the languages employers are using is that you no longer want to do it. It's like having tasted good whisky. You no longer think Jack's acceptable.

These days, employers more or less get what they wanted. We're doomed.

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

#148

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…

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.

[deleted]

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

#149

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…

> There were four 15-unit courses, each about one of these "languages": The description you offer is strange to me. The Lisp family of languages are multi-paradigm (arguably paradigm-independent) and can hardly be called "procedural". The core material of SICP revolves around considering the "means of combination" and "means of abstraction" offered by a programming language — concepts that sound to me like they have…

SICP is fundamentally about the notion that programs are primarily a means of communication between people, being written by people for other people to read, and only secondarily a thing for computers to execute. And it really opened my eyes to the landscape of programming paradigms that exist—indeed, it continues to do so!

But your comment is completely off-base.

In Circuits and Electronics, as I understand it, the "structures" being discussed are circuit schematics, things like this keyboard I designed last month https://tinyurl.com/23tdsm4c. While SICP does talk about circuit schematics, I don't think anyone would claim that S-expressions are a reasonable alternative way for people to read and write such things.

You're completely confused about Signals and Systems, because you said "functionality", a word which refers to the kind of "functional" a machine might be. In that context, saying that something is "functional" means that it works. But the "functional" that describes Signals and Systems is the mathematical idea of a "function", which is a not-necessarily-computable relation of each possible input to one (possibly not distinct) output. The kinds of "functions" we're talking in S&S are the kinds of functions where you can take the Laplace transform or plot the frequency and phase response. It isn't about functionality at all!

While S-expressions are perfectly capable of expressing ideas like these, and indeed SICM investigates those possibilities in much more detail, SICM hadn't been written yet, and SICP and 6.001 touch on them only briefly. Following SICM I think even its authors were doubtful about whether Scheme was a good medium for working with those ideas.

I don't know anything about Computation Structures, so I can't really say anything about it. Maybe you're right that it would fit perfectly well into 6.001. Apparently it survived the purge; https://ocw.mit.edu/courses/6-004-computation-structures-spr... says:

> This course introduces architecture of digital systems, emphasizing structural principles common to a wide range of technologies. It covers the topics including multilevel implementation strategies, definition of new primitives (e.g., gates, instructions, procedures, processes) and their mechanization using lower-level elements. It also includes analysis of potential concurrency, precedence constraints and performance measures, pipelined and multidimensional systems, instruction set design issues and architectural support for contemporary software structures.

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

#150

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…

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.

Post reply on HN