Earlier quoted context omitted.
> 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 l…
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…
Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)
121–130 of 141 posts
Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)
#122Earlier quoted context omitted.
Which scheme are you using? Chez, chicken, guile and gambit all have pretty good debugging facilities, and a macro like chez's trace-lambda is a lot better than misusing print-debugging in most cases. Nobody ever said most list operations is anything else than o(n), and if you are using lists you are probably using the wrong data structure. Vectors or hash tables would probably be a better choice (which are provided…
Ours is probably some 20 years old initial MIT Scheme implementation added with homegrown features like "Object Oriented Scheme" etc., but a debugger was never implemented for the same. Talks have been going on to move to an implementation that has a debugger, but at such a scale changing that would be difficult.
Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)
#123Earlier quoted context omitted.
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.
> 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 l…
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 undergraduate CS program (2009)
#124https://hn.algolia.com/?query=mit%20python%20scheme%20points...
Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)
#125Earlier quoted context omitted.
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 ...")
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 no…
Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)
#126Earlier quoted context omitted.
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 ...")
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 no…
I believe that Scheme's DO is looping.
Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)
#127Earlier quoted context omitted.
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 ...")
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…
Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)
#128Earlier quoted context omitted.
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 no…
> 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 undergraduate CS program (2009)
#129I couldn't be more thankful that python was one of my first languages, and this is something that I've passed on to everybody I've ever mentored. Python is a real language that does real things, but it's also completely approachable to a newbie. If programming seems hard, then you have a bad teacher that is probably just trying to evangelize their hobby to you. And god help anybody that tries to start with JavaScript…
I don't get why people hate on starting with JavaScript. Since ES6, JS strikes a really nice balance between practical usage and theoretical value. Like Scheme it's a dynamically typed language focused around a single data structure (list for Scheme, object for JS), with first class functions. Sure, it has weak typing and there's some scoping complexity. But, that's a completely reasonable tradeoff for being one of t…
For instance: brush your teeth, then put on your clothes, then get in the car, then start it.
The "JavaScript" way to do this is that starting your car is somehow nested inside of the brush your teeth event. Everything is a callback of everything else, so trying to explain to your computer what you want it to do ends up as a giant spaghetti mess.
Obviously there is a JavaScript way of thinking that allows you to think of brushing your teeth as a dependency to starting your car, but I don't think that this is how most humans think by default, so it's a terrible way to teach students.
It makes them think that computers are these complicated things that take some immense skill to operate, but they're not anymore. You just need to tell the machine what to do, and good languages like python make that really easy.
At this point in my life, I'm mostly writing C++, JavaScript, and golang, but I'm extremely thankful that I started with python. When I need to bang out a prototype, or test something in code, it is always my go to.
Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)
#130Earlier quoted context omitted.
> I am not quite on board with you [sic] claim that Python is chosen for monetary benefits. I can see it. I used to make a lot of money doing Python programming. About $40k a year more than I ever made doing C, Java, C# or C++. Of course, I did Python more recently, so there is the wage inflation between 1992 and today to consider. Still, you can make a lot writing Python code.
~70k today. Programming python in 92 - nice :)
Also, some languages and applications require a higher degree of knowledge, training, and expertise than others. For example, I would expect to pay a programmer working in robotics more than I'd expect to pay a React or Angular developer.
Having grown up working in construction, I completely agree with your tool analogy though (and used the same analogy in another comment).
@gronne - About three times that, but close. ;)