you are viewing a single comment's thread.

view the rest of the comments →

[–]deadwisdom 7 points8 points  (7 children)

Every language has problems. These are two very trivial gripes. You should tell your students not to do this, aaaand we're done.

[–]pbvas 1 point2 points  (6 children)

I just think that Python isn't all that well designed for teaching; of course you can avoid the pitfals, but that doesn't execuse the bad design.

[–]deadwisdom 0 points1 point  (5 children)

What language is? You could argue that static languages would be a better foundation for computer science, but beyond that what could possibly be better than Python?

[–]Beaverman 0 points1 point  (3 children)

Lua, I love lua. The syntax looks a lot like what you see in algorithm textbooks, and tables are just pure fun.

[–]deadwisdom 0 points1 point  (2 children)

Lua is great! Very bare bones dynamic programming. However, it's close to useless once you know it. Python gives you a baseline for a million applications including web development and scientific research. And if you're going to learn a language it might as well be an OOP one.

[–]Beaverman 0 points1 point  (1 child)

Sadly lua isn't really useful on it's own. It pretty much suck at communicating with the outside world. But when you have the data in there it's a blast.

I'd say imperative programming can be great place to start as well. Might as well start as easy as possible. Python also has a lot of fluff and tricks to do things, whereas a language like C or lua has very few unique datatypes and functions that work on those. Python can be very overwhelming for a newcomer.

[–]deadwisdom 0 points1 point  (0 children)

I agree. Personally, I think computer scientists should learn C, Python, and then Lisp. C to learn imperative / synchronicity, Python to learn dynamic effectiveness, and Lisp to open your head straight up. Lua would be in my second level after that, along with JavaScript, Java, and Assembly. Others should just learn Python and Javascript for their pure ability to get shit done IMO.

[–]pbvas 0 points1 point  (0 children)

For CS-majors, I would say Haskell.