2018-02-23 18:58:03 +00:00
|
|
|
|
---
|
|
|
|
|
created_at: '2017-04-21T17:22:46.000Z'
|
|
|
|
|
title: Why MIT Switched from Scheme to Python (2009)
|
|
|
|
|
url: https://www.wisdomandwonder.com/link/2110/why-mit-switched-from-scheme-to-python
|
|
|
|
|
author: behnamoh
|
|
|
|
|
points: 205
|
|
|
|
|
story_text:
|
|
|
|
|
comment_text:
|
|
|
|
|
num_comments: 97
|
|
|
|
|
story_id:
|
|
|
|
|
story_title:
|
|
|
|
|
story_url:
|
|
|
|
|
parent_id:
|
|
|
|
|
created_at_i: 1492795366
|
|
|
|
|
_tags:
|
|
|
|
|
- story
|
|
|
|
|
- author_behnamoh
|
|
|
|
|
- story_14167453
|
|
|
|
|
objectID: '14167453'
|
|
|
|
|
|
|
|
|
|
---
|
2018-03-03 09:35:28 +00:00
|
|
|
|
> Costanza asked Sussman why MIT had switched away from Scheme for their
|
|
|
|
|
> introductory programming course, 6.001. This was a gem. He said that
|
|
|
|
|
> the reason that happened was because engineering in 1980 was not what
|
|
|
|
|
> it was in the mid-90s or in 2000. In 1980, good programmers spent a
|
|
|
|
|
> lot of time thinking, and then produced spare code that they thought
|
|
|
|
|
> should work. Code ran close to the metal, even Scheme — it was
|
|
|
|
|
> understandable all the way down. Like a resistor, where you could read
|
|
|
|
|
> the bands and know the power rating and the tolerance and the
|
|
|
|
|
> resistance and V=IR and that’s all there was to know. 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
|
|
|
|
|
> 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. This is a fundamentally different job, and
|
|
|
|
|
> it needed a different course.
|
|
|
|
|
>
|
|
|
|
|
> So the good thing about the new 6.001 was that it was robot-centered —
|
|
|
|
|
> you had to program a little robot to move around. And robots are not
|
|
|
|
|
> like resistors, behaving according to ideal functions. Wheels slip,
|
|
|
|
|
> the environment changes, etc — you have to build in robustness to the
|
|
|
|
|
> system, in a different way than the one SICP discusses.
|
|
|
|
|
>
|
|
|
|
|
> And why Python, then? Well, said Sussman, it probably just had a
|
|
|
|
|
> library already implemented for the robotics interface, that was all.
|