Live data from Hacker News

Why MIT switched from Scheme to Python

wisdomandwonder.com

31–40 of 140 posts

Re: Why MIT switched from Scheme to Python

#31
post #25

Earlier quoted context omitted.

Clojure is a Lisp. Lisp is 50 years old.

Don't you think that's a bit disingenuous? Clojure is still changing with a fair amount of frequency. As far as I'm aware, they have not even hit a 1.0 release yet (releases are currently referred to by their release date, which tells me it's still in the pre-final stages). It's a great language, but there is nothing to gain here by claiming it somehow is mature because Lisp is 50.

[deleted]

Re: Why MIT switched from Scheme to Python

#32
post #25

Earlier quoted context omitted.

Clojure is a Lisp. Lisp is 50 years old.

Don't you think that's a bit disingenuous? Clojure is still changing with a fair amount of frequency. As far as I'm aware, they have not even hit a 1.0 release yet (releases are currently referred to by their release date, which tells me it's still in the pre-final stages). It's a great language, but there is nothing to gain here by claiming it somehow is mature because Lisp is 50.

[deleted]

Re: Why MIT switched from Scheme to Python

#33

I wonder, if the switch had been made now, it they would have switched to Clojure instead of Python. It's a lot closer to Scheme, and its connection to the JVM gives it a lot of practical power. Does anyone have any thoughts on this?

People often say that Java has great libraries, but is it true? AWT is crufty and ugly. Maybe there are impressive XML parsers (Xerxes is 188,000 lines of Java!), but I don't want those. Numerical libraries seem bad. So what is the library that might convince me to use Java for something?

Re: Why MIT switched from Scheme to Python

#34
post #25

Earlier quoted context omitted.

Clojure is a Lisp. Lisp is 50 years old.

Don't you think that's a bit disingenuous? Clojure is still changing with a fair amount of frequency. As far as I'm aware, they have not even hit a 1.0 release yet (releases are currently referred to by their release date, which tells me it's still in the pre-final stages). It's a great language, but there is nothing to gain here by claiming it somehow is mature because Lisp is 50.

[deleted]

Re: Why MIT switched from Scheme to Python

#35
post #25

Earlier quoted context omitted.

Clojure is a Lisp. Lisp is 50 years old.

Don't you think that's a bit disingenuous? Clojure is still changing with a fair amount of frequency. As far as I'm aware, they have not even hit a 1.0 release yet (releases are currently referred to by their release date, which tells me it's still in the pre-final stages). It's a great language, but there is nothing to gain here by claiming it somehow is mature because Lisp is 50.

[deleted]

Re: Why MIT switched from Scheme to Python

#36
post #28
post #26

Earlier quoted context omitted.

Just curious, which library are you referring to when you say "good 3D graphics"? I'm writing a graphics engine using PyOpenGL, but that's just a minimalist wrapper over the standard OpenGL API that's available for dozens of languages.

Yes, I use PyOpenGL in GTK (with GTKGLExt). People have said good things about Gazebo, but I haven't used it. Most of the 3D stuff is performance-critical, so I typically prototype in Python and then convert to C++, which for graphics code isn't too painful. The Boost.Python interface makes it pretty easy. Also, the Cairo graphics interface is wonderful for drawing charts, animated robot stick figures, and many other…

Nice. Yeah, the GL graphics code is pretty easy to convert to C++ when performance matters. It's wonderful to quickly prototype graphics code in Python with full error checking.

Also, if you haven't used it yet, check out Py++. It takes a lot of the pain out of hand-authoring a Boost.Python code file. I'm using Py++ to automatically generate Boost.Python bindings for the C++ library FCollada. (FCollada is a library for accessing 3D modeling data exported into the .dae COLLADA format.)

Thanks for the tip about Cairo.

Also, glVertex3d, 3dv, 3f, etc are part of the standard GL API. The 'd' suffix indicates 'double', 'f' indicates 'float', 'i' indicates 'int', 's' indicates 'short', and the 'v' suffix indicates that the function accepts a pointer rather than 3 separate components passed by value. Of course, the glVertex* API has been deprecated because VBOs are far more efficient.

Just curious again, why do you use OpenGL for Anybots? Do you create simulations before building new robot prototypes?

Re: Why MIT switched from Scheme to Python

#37
post #25

Earlier quoted context omitted.

Clojure is a Lisp. Lisp is 50 years old.

Don't you think that's a bit disingenuous? Clojure is still changing with a fair amount of frequency. As far as I'm aware, they have not even hit a 1.0 release yet (releases are currently referred to by their release date, which tells me it's still in the pre-final stages). It's a great language, but there is nothing to gain here by claiming it somehow is mature because Lisp is 50.

I suppose my point was that the principles of Lisp have lasted 50 years. Python (which is great) is the child of many, many Lisp-y ideas, but I don't think people will be using a variant of Python 32 years from now. But I would definitely bet there'll be many cool Lisp variants 50+ years from now, some of which may have taken some really good ideas from Clojure. Let's make it happen ;)

Re: Why MIT switched from Scheme to Python

#38
post #7
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.

Python may not be a scheme, but it does have what they used to call functional programming, low-grade continuations with the generators, and some other stuff like that. Python may not stuff its academic credentials in your face, but I think it has one of the better balances between what you can use it to teach, and what you must teach to use it. (Referencing the common and IMHO justified complaint that the simplest p…

Python has some issues that can really interfere with doing Scheme-style FP in in it (no tail-call optimization, single-expression-only lambdas, closure/scope problems, general hostility from Guido), but IMHO it's a great general-purpose language, and well suited to teaching, particularly for introducing higher-order functions.

Lua has much more Scheme influence than Python does (while being otherwise pretty similar). Its design assumes proficiency with C, however, so, while very practical, it's probably not as good a language for people new to programming.

Re: Why MIT switched from Scheme to Python

#39
post #28
post #26

Earlier quoted context omitted.

Just curious, which library are you referring to when you say "good 3D graphics"? I'm writing a graphics engine using PyOpenGL, but that's just a minimalist wrapper over the standard OpenGL API that's available for dozens of languages.

Yes, I use PyOpenGL in GTK (with GTKGLExt). People have said good things about Gazebo, but I haven't used it. Most of the 3D stuff is performance-critical, so I typically prototype in Python and then convert to C++, which for graphics code isn't too painful. The Boost.Python interface makes it pretty easy. Also, the Cairo graphics interface is wonderful for drawing charts, animated robot stick figures, and many other…

For Python, there are also a number of game libraries around which you might be able to repurpose. Pyglet, Pygame and PyOgre are three which spring to mind.

Depending on exactly what you're trying to do, of course...

Re: Why MIT switched from Scheme to Python

#40
post #26
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.…

Just curious, which library are you referring to when you say "good 3D graphics"? I'm writing a graphics engine using PyOpenGL, but that's just a minimalist wrapper over the standard OpenGL API that's available for dozens of languages.

[deleted]
Post reply on HN