News for hackers. Stuff that matters.
Re:Why MIT uses Python instead of Scheme for its undergradua... by jcelerier on Saturday December 29, 2018 @06:27AM (#18783140)
> Compared to C, Python is the better choice. However, it seems like you haven't learned a Lisp dialect. I would love to know if you would still prefer Python once you know Scheme.

the school I went used to teach C, Python and Scheme in the first year (nowadays it's C, Python and Racket). I don't think I remember more than one or two people actually liking the LISP experience, how bad it was when comparing to other languages is actually a common joke subject amongst alumni.

Re:Why MIT uses Python instead of Scheme for its undergradua... by dimmwit on Saturday December 29, 2018 @01:27PM (#18784952)
I also went to a school where racket was the intro programming language, and during that class, most of the student also hated it (myself included). However, over time, I found that those who stuck with CS and had to learn C(++), JS, etc, came to appreciate racket.

The issue with the line of reasoning that “X language is bad because it was bad during an intro programming class” is that your experiences in that class do not generalize well. Sure, python might be better for writing some basic algorithm that you fully understand before writing a single line of code, and for fairly small codebases. However, try writing a large codebase and you’ll realize that, for example, managing state is really hard.

Sure, racket and other functional languages might require a greater learning curve than other languages, and of course they’re not the language of choice for performance critical applications (nor will Matthias Felleisen claim it is). However, as a systems developer who uses almost exclusively C++, I would argue that starting out with a language that forces you to think about your contracts, mutability, scope, etc, invariable create a better programmer down the line

Re:Why MIT uses Python instead of Scheme for its undergradua... by kazinator on Saturday December 29, 2018 @12:32PM (#18784665)
The language known as Scheme has done a lot of damage to Lisp's image. When undergrads are exposed to Scheme, they tend to forever carry a negative image of Lisp by association.

A lot of the time when you meet someone who had a bad experience with Lisp, if you interview them a bit, you soon discover it was actually Scheme.

Scheme twenty years ago, R5RS was even worse than now. It had nothing practical in the spec. No way to write a program consisting of multiple files. No error handling. R5RS talks about situations that trigger an "error", but nothing about how such a thing can be handled and recovered. Or how an error can be generated on purpose and then caught.

Anyone who studied R5RS in school was learning an utter piece of academic garbage; a serious regression from real Lisp.

Re:Why MIT uses Python instead of Scheme for its undergradua... by kbp on Saturday December 29, 2018 @09:03PM (#18786917)
I agree that there's a problem of people (even the people who rave about how enlightening it is) misunderstanding that a toy Scheme interpreter is what Lisp is, but I don't think that's an issue with Scheme. Introductory FP classes that use Common Lisp don't leave any better a taste in students' mouths, and real world Scheme is a lot more capable than a toy implementation designed for pedagogical purposes. I don't think the standard's conservatism is very much a factor.
Re:Why MIT uses Python instead of Scheme for its undergradua... by jcelerier on Saturday December 29, 2018 @12:46PM (#18784734)
They tried many LISP dialects over the years: Scheme, CommonLisp and Racket - and I don't remember student reactions ever changing about it.
Re:Why MIT uses Python instead of Scheme for its undergradua... by jimhefferon on Saturday December 29, 2018 @07:00AM (#18783242)
I'd be interested in what aspects strike people as bad. (Honest question. If you reply, I promise not to come back with "But, but, but ...")
Re:Why MIT uses Python instead of Scheme for its undergradua... by jcelerier on Saturday December 29, 2018 @12:42PM (#18784708)
I will answer your question through its dual : the people who love LISP and functional programming are in my experience people who love maths - as in, algebra, etc. . You can easily recognize them, because they say weird things such as "this demonstration is so elegant !".

Functional programming of course maps (heh) very cleanly to this line of thought.

But most people hate maths and this way of thinking. In contrast, you get first year students "re-discovering" OOP ever year - for instance a common trick to make them learn design patterns is just to put a problem that calls for it in front of them, and three times out of four in my experience they will even come up with a pattern name close to the original ones.

Re:Why MIT uses Python instead of Scheme for its undergradua... by jimhefferon on Saturday December 29, 2018 @02:02PM (#18785139)
Thank you.
Re:Why MIT uses Python instead of Scheme for its undergradua... by bjoli on Saturday December 29, 2018 @08:39AM (#18783500)
One thing that comes to mind is that looping is limited to recursion in scheme. This becomes quite coumbersome IMO since it is a pretty important thing. Writing named lets for simple things is not anyone's preferred way.

It is however pretty easy to implement something like racket's for loops on scheme using lower level macros, and there are some available.

Implementing something like common lisps iter is actually not very hard, and even improving upon racket's for loops is far from complex.

Re:Why MIT uses Python instead of Scheme for its undergradua... by jimhefferon on Saturday December 29, 2018 @02:02PM (#18785136)
> looping is limited to recursion in scheme

I believe that Scheme's DO is looping.

Re:Why MIT uses Python instead of Scheme for its undergradua... by bjoli on Saturday December 29, 2018 @02:12PM (#18785183)
Which is still painful to use compared to python's for loops or comprehensions