Live data from Hacker News

Why MIT switched from Scheme to Python

wisdomandwonder.com

1–10 of 140 posts

Re: Why MIT switched from Scheme to Python

#2
Are they still going to teach Scheme in any other course(s)? Why not teach both?

I had the privilege of taking an SICP-based course at the U(C). The brain-stretching is critical, isn't it? Yes, there's a lot of head-slamming that goes into modern development, but that's not really the same thing.

Re: Why MIT switched from Scheme to Python

#3
I think there's something else here, implicit in Sussman's comment, that's important. MIT was founded on a philosophy of practicality, and everything else is secondary. If you couple that with the belief that fundamental computer science is the most efficient way to enhance practical software engineering, Scheme was a wonderful choice. Java and C++ may have been more directly practical to software engineers, but they are not good for the field or people pushing the limits of the field - you spent too much time mucking around with their paradigms and idiosyncrasies.

Python (and, frankly, a number of the scripting languages-turned-mainstream) combines this clarity of computer science with a practicality that Scheme never had. If you can convey 95% of the basic ideas in Python, and you can also open the door to learning how to deal with 3rd party code, you'd be a fool not to. It was never about programming purity anyway, so there's no reason to mourn the passing of Scheme. It's progress.

Re: Why MIT switched from Scheme to Python

#5
post #2

Are they still going to teach Scheme in any other course(s)? Why not teach both? I had the privilege of taking an SICP-based course at the U(C). The brain-stretching is critical, isn't it? Yes, there's a lot of head-slamming that goes into modern development, but that's not really the same thing.

over IAP I heard they did a bootcamp version of the scheme course.

Re: Why MIT switched from Scheme to Python

#6
post #4

Blog spam. It is a huge quote from this: http://wingolog.org/archives/2009/03/24/international-lisp-c...

Pulling a meaningful, discretely discussable quote from another place isn't necessarily 'blog spam'.

Sussman's rationale for the change in 6.001's focus and language is more interesting to me than anything else in the 'international lisp conference -- day 2' post, and is hidden near the bottom of that post. So, the pull quote blog item adds finding/filtering value for me, which is the opposite of spam. Neither the blogger nor submitter deserves the implication they are a spammer.

Re: Why MIT switched from Scheme to Python

#7
post #2

Are they still going to teach Scheme in any other course(s)? Why not teach both? I had the privilege of taking an SICP-based course at the U(C). The brain-stretching is critical, isn't it? Yes, there's a lot of head-slamming that goes into modern development, but that's not really the same thing.

Python may not be a scheme, but it does have what they used to call functional programming, low-grade continuations with the generators, and some other stuff like that.

Python may not stuff its academic credentials in your face, but I think it has one of the better balances between what you can use it to teach, and what you must teach to use it. (Referencing the common and IMHO justified complaint that the simplest possible Java program requires rather a lot of stuff to be taught before you fully comprehend it.)

Teach Scheme later... or perhaps, fully distinguish between academic and practical by starting with Python to get you going then transitioning to an ML or Haskell later. (That approach has a lot of appeal to me personally, and has the benefit of the student coming out with at least one useful-in-the-industry language (Python) without compromising academic utility very much.)

Re: Why MIT switched from Scheme to Python

#8
post #6
post #4

Blog spam. It is a huge quote from this: http://wingolog.org/archives/2009/03/24/international-lisp-c...

Pulling a meaningful, discretely discussable quote from another place isn't necessarily 'blog spam'. Sussman's rationale for the change in 6.001's focus and language is more interesting to me than anything else in the 'international lisp conference -- day 2' post, and is hidden near the bottom of that post. So, the pull quote blog item adds finding/filtering value for me, which is the opposite of spam. Neither the bl…

Thanks - I was going to point out the same thing. The linked blog has no ads, so I don't think he's going to gain much from hits.

Re: Why MIT switched from Scheme to Python

#10
post #3

I think there's something else here, implicit in Sussman's comment, that's important. MIT was founded on a philosophy of practicality, and everything else is secondary. If you couple that with the belief that fundamental computer science is the most efficient way to enhance practical software engineering, Scheme was a wonderful choice. Java and C++ may have been more directly practical to software engineers, but they…

> If you can convey 95% of the basic ideas in Python

But you cannot.

Some of the ideas in SICP can nearly be conveyed in Python (like lexical scoping, closures, data types, streams). You'll use built-in language features in Python (classes, generators) instead of implementing the functionality. I think that implementing these things is important if you want to really understand them.

An example, cons, car and cdr from nothing at all:

    (define (cons a b) (lambda (f) (f a b)))
    (define (car p) (p (lambda (a b) a)))
    (define (cdr p) (p (lambda (a b) b)))
You can do this in Python in theory, but you can't throw this into a Python course.

Other ideas, like interpreters, require a lot of effort. Try writing a metacircular interpreter!

Post reply on HN