Hacker News new | ask | show | jobs
Ask HN: Python or Scheme?
10 points by sigilyph 5526 days ago
The introductory computer science course at Berkeley (CS61A) is going to be taught in Python in Fall 2011 instead of Scheme. I've heard many moaning about no more Brian Harvey and SICP; on the other hand, MIT has long switched over to teaching in Python.

I'm currently a freshman considering a CS major with limited experience in Python. I was just wondering what HN thought of this changeover- tbh, I feel like I'm missing something by not going through SICP like most Berkeley computer scientists, but then again it'll be interesting to be in a class taught for the first time.

7 comments

Personal opinions only ...

Scheme and its relatives in the Lisp family is seriously different, genuinely attitude and mind changing, and having it no longer an essential part of the curriculum makes it much, much less likely to be learned or used.

Python is a superb language, but I for one can see the Lisp influence in my programming, and I'm a better programmer for it. I think it's a shame that universities are moving more towards "relevance" and further from "what's actually good for you, and you won't really get a chance to do elsewhere."

And that takes us back to the question of what universities are for, and what the value is they provide. People are saying "Why should I go to university - I can learn this stuff elsewhere!" And for many things that's true. But there are things you simply won't learn elsewhere.

Lisp is one of them. I think losing it is a shame.

Lisp is one of them.

Fortunately this isn't true. I'm living proof. People go to lisp for various reasons when they are ready, you don't need a university for that. In fact, teaching scheme badly to people who are not ready for it is probably a bad idea, and is the prime reason why some people actively avoid lisp later in their career.

having it no longer an essential part of the curriculum makes it much, much less likely to be learned or used

I argue that it's likely that Lisps are mostly learned and used regardless of any curriculum. In order to "get" Lisp, you have to be both endlessly curious about computing and in need for something that offers the benefits of a language like Lisp.

You will not "get" Lisp merely by being taught Lisp; you're only likely to be left with the question "Why?" until you actually need something like Lisp and can answer the "Why?" yourself.

Scheme is not used in many professional environments, and Common Lisp is on its way out, but Clojure is growing quite fast and can take advantage of the Java libraries.
My uni did the usual Java bullcrap (with a lot of assembly, a little C++, Haskell, Prolog and matlab thrown in), but since I've played with Scheme, a little Common Lisp and a lot of Clojure and they have an enormous influence on how I program and think about programming in any language. So, regardless of what language(s) they teach you in uni, I think it is worthwhile picking up a Lisp-based language along the way (in your own time, if needed). The SICP book is also an excellent read, IMHO, and an excellent investment.

I think its worthwhile learning any language that is in a significantly different paradigm to what you already know, so I wouldn't stop at Lisp.

My university started with Java. Fortunately two of the (especially intelligent) professors wanted scheme to be the first language we were taught. Of course the other professors voted against that because they wanted something more "relevant", so Java it was.

So instead there's a required programming languages course we spent half the semester learning/using scheme and the other half using it to understand other types of languages.

It's definitely worth taking the time to learn IMO.

The particular language used is not as significant as learning the principles of programming. The fundamental ideas are language independent. Programming languages help problem solution by providing a framework of abstractions, managing the many little details, and providing a plethora of libraries and tools. Why not learn both on your own?
I would speculate that students who learn Python are more likely to go off and build their own pet-projects (web-apps etc.) using the many popular frameworks and resources. When they leave, they will be better programmers for 'having actually built something.' So it's not just that Python is more 'relevant' to the job market.
For most intro CS courses, the language is not as important as the lessons being taught. That being said, Python is an amazing language. I don't believe you're missing out on anything that you couldn't otherwise pick up later on if you were interested in learning Scheme as a language itself.
In cs61a, it really takes one or two lectures to teach Scheme - that's the beauty of it, there is not much syntax to learn. Like almost every other CS class at Berkeley, it's not a language course; it's a computer science course.

A major part of the class was writing a Scheme interpreter in Scheme, which I imagine will not be possible in the new 61a (writing a Python interpreter in Python, that is). Considering how utterly jacked up Python's syntax is, compared to Scheme, I can't wait to see how they manage to pull this one off.

Really, if any Berkeley CS student can't learn Python on their own, their job prospects should be nil anyway.

I wouldn't worry about it. My school starts of with C++ (ugh), and the experience has taught me that its the teachers that matter more than the language.