Live data from Hacker News

Why MIT switched from Scheme to Python

wisdomandwonder.com

81–90 of 140 posts

Re: Why MIT switched from Scheme to Python

#81
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.

this is the link: http://web.mit.edu/alexmv/6.001/

Re: Why MIT switched from Scheme to Python

#82
post #69
post #4

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

I'm a PhD student at MIT and arrived to my office on Monday to find the International Lisp Conference had set up shop downstairs. Let me just tell you.. I've never seen so many bearded people in one place!

I noticed this too. In one of the admissions tour groups passing by, I heard the guide comment that it was probably a Literature convention.

So I suppose beards either mean lit gurus or lisp hackers.

Re: Why MIT switched from Scheme to Python

#83
post #10

Earlier quoted context omitted.

> 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 fro…

def cons(a, b): return lambda f: f(a, b) def car(p): return p(lambda a,b: a) def cdr(p): return p(lambda a,b: b) As well as in theory you can do this in practice. It's about as elegant (hard for me to judge as I have a strong pro-lisp bias). Aside from lack of tail safety and performance issues with writing scheme-ish code I don't see why you couldn't implement those things in Python. The main difference is that typi…

The problem is not that you can't do this in Python, but that this is out of place in a Python course (you don't use linked lists in Python, for example). SICP shows that you need only a very small number of primitives to get a full programming language. You don't get this elegance with Python.

This may not be important if you teach programming to people who want use programming languages, but it is important for people who want to advance the state of the art in programming (i.e. CS students).

Maybe it's better if you teach Scheme in a seperate class class for CS students.

Re: Why MIT switched from Scheme to Python

#84

It it just me who is seeing a cowardly surrender to cultural decay here? From the renowned Sussman, no less. The glorious MIT of the 1980s and prior appears to be dead. Erased, in fact, without a trace. Consider the following: http://mitpress.mit.edu/catalog/browse/browse.asp?btype=2 These are the latest releases from MIT press. Among them you will find nothing remotely like SICP, but plenty of postmodernist/related…

MIT Press has about as much to do with the MIT undergraduate curriculum as the MIT Real Estate Office, so I don't think citing their new-books list proves anything.

Re: Why MIT switched from Scheme to Python

#85
post #61

Earlier quoted context omitted.

I beleive actually that s-expression are going to come back. Clojure, Arc, R6RS - these are harbingers of the return, I think.

JSON is much more popular than s-expressions, and not just accidentally. Explicit, compact syntax for both lists and key-value pairs is The Right Thing in a language like this. { "x": [ { "y": "a", "z": 23, "q": [ 54, 32, 45 ] } ], "r": 43 }

JSON is a subset of s-expressions. (Yes, s-expressions provide explicit and compact representations for mappings. They also handle other kinds of objects.)

The other difference is that there are JSON parsers and generators for more languages and they're not programmable.

Re: Why MIT switched from Scheme to Python

#86
post #60

Hi, I am MIT student in CS and I took 6.001 (the new course is called 6.01). When I asked the instructor why we are using some language that has almost no practical use, they told me that the reasons are: - it teaches the concepts of the class well - after it one can learn any programming language very easily. I believe both of these to be true. From my point of view the new 6.01 sacrifises depth for breadth. This is…

Then you can also take comfort in the fact that Python has enormous practical use.

Re: Why MIT switched from Scheme to Python

#87
post #70

Earlier quoted context omitted.

JSON is much more popular than s-expressions, and not just accidentally. Explicit, compact syntax for both lists and key-value pairs is The Right Thing in a language like this. { "x": [ { "y": "a", "z": 23, "q": [ 54, 32, 45 ] } ], "r": 43 }

Why can't we keep the indents and drop the parens?

It would make data generation more difficult. When you emit any given data, you'd have to know its level of nesting to get the correct number of indents. Using begin and end tokens (whatever they are) makes that much easier.

(I actually prefer Python's style of using indentation to indicate blocks, but I recognize generating such code is harder than code with tokens.)

Re: Why MIT switched from Scheme to Python

#88
post #83

Earlier quoted context omitted.

def cons(a, b): return lambda f: f(a, b) def car(p): return p(lambda a,b: a) def cdr(p): return p(lambda a,b: b) As well as in theory you can do this in practice. It's about as elegant (hard for me to judge as I have a strong pro-lisp bias). Aside from lack of tail safety and performance issues with writing scheme-ish code I don't see why you couldn't implement those things in Python. The main difference is that typi…

The problem is not that you can't do this in Python, but that this is out of place in a Python course (you don't use linked lists in Python, for example). SICP shows that you need only a very small number of primitives to get a full programming language. You don't get this elegance with Python. This may not be important if you teach programming to people who want use programming languages, but it is important for peo…

Keep in mind this is a freshmen level course. You don't have to - and shouldn't - cram every important CS concept into an intro course.

Re: Why MIT switched from Scheme to Python

#89
post #19

Earlier quoted context omitted.

I think here, "practicality" means "has a library for controlling robots". Also a good numeric library, a good matlab-like graphing library, good 3D graphics, good real-time performance, easy C++ embedding, etc. Rather than complaining about how everyone else is a bonehead for not using Lisp, write some libraries to make it useful for more things in the real world. Also, Python does pretty well for real-time control.…

Libraries aren't the issue. I use Chicken Scheme for a few things, which has plenty of libraries and a fantastic package system called eggs. Sure, other languages like Perl and Python have more libraries now, but that's not what made them popular. What made them popular was the design of the core languages. I started using Ruby because it was faster to type and easier to remember how to do things than Perl, not becau…

Clojure:

    user> (def h {:foo "hi"})
    #'user/h
    user> (h :foo)
    "hi"
    user> (h :bar)
    nil
The main difference with the Ruby is the immutable by default data structure, which is why I replaced the assignment with a literal definition of the map. In any case, I think this demonstrates how Clojure has stolen some of the good ideas from Ruby and Python in addition to stealing many of the best ideas from other Lisps.

Re: Why MIT switched from Scheme to Python

#90
post #70

Earlier quoted context omitted.

JSON is much more popular than s-expressions, and not just accidentally. Explicit, compact syntax for both lists and key-value pairs is The Right Thing in a language like this. { "x": [ { "y": "a", "z": 23, "q": [ 54, 32, 45 ] } ], "r": 43 }

Why can't we keep the indents and drop the parens?

{} means object [] means array So you would not be able to just drop them, since they mean two different things.
Post reply on HN