Live data from Hacker News

Why MIT switched from Scheme to Python (2009)

wisdomandwonder.com

121–130 of 249 posts

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

#121

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…

Thanks for the history. I was an undergrad at the time and remember having a choice between 6.001 and 6.01. I don’t think I formally switched into course 6 yet and by the time I did, 6.01 was the only option.

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

#122
post #2

Scheme it's far easier to grasp. With SICP you basically rewrite a Scheme within a Scheme. And you teach Calculus to the interpreter to solve further problems. Online SICP: http://sarabander.github.io/sicp/

The official SICP site is here, including the text. https://mitp-content-server.mit.edu/books/content/sectbyfn/b... pdf https://web.mit.edu/6.001/6.037/sicp.pdf

Yep, and there's a Texinfo version too. With Chicken, 'sudo chicken-install srfi-203 ; sudo chicken-install srfi-216; Emacs, Geiser and this ~/.csirc, you can run SICP exercises on really constrained environments.

~/.csirc

   (import scheme)
   (import (srfi 203))
   (import (srfi 216))
Texinfo version:

https://zv.github.io/sicp-in-texinfo

Run Emacs. Press

   Ctrl-u Ctrl-h i 
and choose the sicp.info.gz file.

Then, run:

Alt-x

package-refresh-contents

Alt-x

package-install

geiser-chicken

wait.

Run Alt-x geiser, and if it ask you which Scheme interpreter to run, choose 'chicken'.

Later,

press Ctrl-x f

to choose a file, create a new one called "hello.scm".

Write in that file:

(display "Hello world").

Run Ctrl-c Ctrl-c

and then the Scheme code in that file will be evaluated. To choose the running Chicken interpreter, press

Ctrl-x b

and choose the Geiser buffer.

Run Ctrl-h t for the Emacs tutorial, it will be handy.

If you want the same tutorial in Spanish, Japanese, French...

press

Ctrl-u Ctrl-h t

and just input your language, press [TAB] to autocomplete.

Happy Hacking.

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

#123

Earlier quoted context omitted.

There were plenty of less rarefied CS departments that were concerned about this, and they taught C, C++, or Java in their introductory classes. Ultimately, it doesn't matter. It's your first language, not your last.

How many people do you know who are monolingual?

programmers, and good ones imo, are almost always polyglots on some level, and i tend to think have a better than average ability to even pick up natural languages.

programming languages have a small, manageable and finite set of vocabulary, idioms, and constructs that most languages share but express differently depending on their intended use. a programmer fluent in programming will be able to pick up most languages. how those pieces are cobbled together to form more complicated abstractions becomes the skill obv.

that does not mean they'll be an expert right away, but it does mean they are usually competent enough at minimum to dive in and work with it just like any other tool -- they know they'll need a screwdriver, maybe a hammer, so they look up what it looks like and how it is used.

my daily drivers are python, cmake/Makefiles, c++, and c, with a sprinkling of bash, powershell.

i've worked with microsoft stacks C#/SQL, JavaScript, and i've written a ton of Lua. i've studied concepts and swe fundamentals in languages i don't really write code in and transcribe into code i do intend to write code in. i learned mostly using Lua first, then i picked up c++.

these are just the tools of my job overall. my main skill is communication and learning imo, and knowing which tools are better suited for a task at hand depending on requirements and limitations (mine or technical or both).

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

#124
post #43

Earlier quoted context omitted.

How many people do you know who are monolingual?

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…

having actually learned esperanto and become a fluent speaker in just half a year, i am not so sure. esperanto grammar is trivially easy compared to any other language (the rules fit on a postcard in regular sized print), but if you'd take any other language, i'd agree.

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

#125

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 far more to do with "structure", "architecture" and "functionality" than with "procedure".

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

#126
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)

Wow, no idea highlights existed. Glad you used this opportunity to …uhh… highlight it via this great post.

I was at MIT just before this switch, and treasure having gotten to take these deep dive courses, even if .002 and .003 kicked my ass.

6.004 (followed up by 6.033) is probably the course that really drove my career into systems dev.

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

#127
post #77

Earlier quoted context omitted.

I think it's absurd to start with Scheme. A graduate who knows Python but not Scheme has a hope of doing something with computer science. A graduate who knows Scheme but not Python is basically unable to use computers at a technical level. The only choices here are "Python" or "Scheme + Python". (Yes, of course, they could teach themselves Python at that point---but if we're talking about things that people can teach…

I and about a million other programmers started with BASIC. My second language was Pascal. I don’t imagine I’d be very employable if that’s all I knew, but it turns out that you can learn many programming languages and it’s not all that much effort after the first two or three. There’s no reason to think the language you start with should be one that you could get paid to use. And no, I wouldn’t recommend starting wi…

BASIC has a thriving hobby scene and there were compilers available for many platforms even if they weren't for "serious" computers. Scheme by comparison has essentially no community.

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

#128
post #8

Ga Tech used to teach Scheme as an intro to CS course. I vividly remember sitting in lecture and being struck w/ the implications of functional programming as the professor said you could pass functions into functions and modify them. It was as formative of a moment as my 2nd Grade teacher showing us a really complex looking (at the time) rainbow flower in LOGO (she had one of few color Mac classic), and showing us i…

>It was as formative of a moment as my 2nd Grade teacher showing us a really complex looking (at the time) rainbow flower in LOGO (she had one of few color Mac classic), and showing us it was simply the work of drawing the path of one petal, then repeating same “work” after changing two values (starting angle and color).

I also well remember the epiphany I felt while learning Logo in elementary school, at the moment I understood what recursion is. I don't think the fact that the language I have mostly written code in in recent years is Emacs Lisp is unrelated to the above moment.

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

#129
post #11

I was one of the last batches of students on the old Scheme curriculum. I absolutely loved it! Understanding that all loops could be done via recursion, and what a side effect is, is what fundamentally made me fall in love with CS. I've heard good things about the new, and now newer, curriculum but I know I wouldn't have had the awakening I did if it weren't for scheme. RIP SICP --- ps another fun story: we had some…

> turns out the entire scheme specification is short enough to fit on a double sided page if condensed I think this only held for R4RS and earlier. You can fit War and Peace on one page if you condense it enough.

>You can fit War and Peace on one page if you condense it enough.

"I took a course in speed reading, learning to read straight down the middle of the page, and I was able to go through War and Peace in 20 minutes. It's about Russia." —Woody Allen

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

#130

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…

Colleges becoming more vocational is a consequence of colleges becoming more expensive for students. If you are paying all of that money for college, you better get a good job out of it. I don't see that as a bad thing necessarily, but it would definitely be nice if we had better paths for those who want to end up in research. I'd argue that SML (or derivative thereof) would make for a better teaching language, for b…

I attribute the curriculum shift to something slightly different, which is the changing perception of CS as a career.

When I was in college in the late 1980s, CS was not perceived as the moneymaking career it is today. Accordingly the kids who went into CS were typically the nerds and hackers who truly loved the field.

Many kids now perceive CS as a safe, lucrative career option akin to becoming a doctor or lawyer. It attracts many students who are smart but perhaps not as intrinsically excited about the field. The universities adjusted their curricula to what these students care about: Less beautiful theory, and more practical training.

A similar thing happened in statistics. At one time it was hardcore stats nerds. Now "data science" has brought a ton more people into the field and the teaching methods have changed dramatically.

Post reply on HN