Why MIT switched from Scheme to Python
wisdomandwonder.com
Why MIT switched from Scheme to Python
1–10 of 140 posts
Re: Why MIT switched from Scheme to Python
#2I 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
#3Python (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
#4http://wingolog.org/archives/2009/03/24/international-lisp-c...
Re: Why MIT switched from Scheme to Python
#5Are 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
#6Blog spam. It is a huge quote from this: http://wingolog.org/archives/2009/03/24/international-lisp-c...
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
#7Are 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 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
#8Blog 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…
Re: Why MIT switched from Scheme to Python
#9Re: Why MIT switched from Scheme to Python
#10I 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…
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!