Live data from Hacker News

Retiring Python as a Teaching Language

prog21.dadgum.com

41–50 of 238 posts

Re: Retiring Python as a Teaching Language

#41
As a proponent of python and a full time python developer I fully endorse this decision.

There is a compelling need to be able to distribute graphical python applications that isn't met (and that https://www.python.org/dev/peps/pep-0441/ isn't even a step in the right direction is an indication of how far away a solution is).

Don't get me wrong, python is a great language, but its not the right solution for teaching programming for exactly these reasons.

Re: Retiring Python as a Teaching Language

#42
post #9

I would actually solve the game/show problem a different way. I would teach kids how to build MVC web apps and set up a cheap server so that apps could be "shown" to anyone on any device. If you use a mobile-first design philosophy for the webapps then phones are not likely to be an issue. Yes, there is still the issue of response time but no language works for everything. You have to accept certain limitations and m…

>I would actually solve the game/show problem a different way. I would teach kids how to build MVC web apps and set up a cheap server so that apps could be "shown" to anyone on any device. If you use a mobile-first design philosophy for the webapps then phones are not likely to be an issue.

Emm, MVC web apps are not appropriate for games. The could be the backend for SOME games, quizzes, RPGs maybe etc, but for the vast majority of games you need a canvas to draw in.

So that would still require using Javascript, not just Python on the server side.

Re: Retiring Python as a Teaching Language

#43
I still recommend Ruby as the first language because it has all of the features you want to know about as a newbie and at the same time there are very few quirks. The things you sacrifice are performance and memory efficiency. I have seen junior programmers picking up Ruby as be able to write production ready code in couple of weeks. I guess the learning curve is not as steep.

Re: Retiring Python as a Teaching Language

#44
I think this author has lost his focus. Maybe there's only 1 choice if you want something to sit "on top", but anything can interact with "an unprecedentedly ubiquitous cross-platform toolkit for layout, typography, and rendering". Including Python.

For games, an introductory class using Python with Kivy or PyGame doesn't fit the bill because they may not always be around? If a student really wants to go deeper into game dev, they're going to need to learn at least one of Swift/ObjC/Java/C# and their respective native libraries anyway. You're not indoctrinating them into a platform like the web or iOS, you're introducing them to programming.

The rant about libraries not always being maintained is really brilliant considering the library churn than in the JS space. After all, they may be "well-intentioned today but unsupported tomorrow?". TkInter? This was around before Angular 1.x was a glimmer in daddy GOOG's eye. It'll be around after Angular2.0, and long after 2.0 is buried and the next JS framework/library rears its ugly head only to be put down in short time. Given the choice of having invested my time into TkInter, or Angular 1.x, I know which I'd rather have dumped my time into.

So what's the goal here, to teach programming with something you can show others? If so, then you can do it with almost anything, especially Python.

Use what you want to teach, but don't delude yourself with half-baked reasoning to justify what you clearly always considered an inferior choice to do it in- for the last 2 decades.

Back to the drawing board, professor.

Re: Retiring Python as a Teaching Language

#45
I agree. As a beginner - and even as a professional, in an average-case situation - what you need in terms of abstractive power and optimization potential tends to be something akin to a classic microcomputer Basic, plus some modern API calls. You're already way ahead of the game when you consider JS in that light. You can write a lot of practical, maintainable JS that only uses arithmetic, string manipulation, branches, loops, arrays and simple function calls. POD objects, too, if you get a little more fancy.

Teaching towards that subset is also a healthy instruction in rule of least power - once you grasp how to use the basics, you have a fighting chance of picking up most other languages too. It's way more unhealthy to guide newbies into cargo cult thoughts about "proper" something-something design(insert favorite methodology here) - a learner has to make their own mistakes to learn properly, but they should do so from within the subset of programming concepts that predate current languages, because those are the things that have lasted through multiple generations of software.

If we consider Python, Ruby, JS, C#, and Java - the design of most of their core features was locked down all the way back in the 1990's. So all the new ideas they brought to the table tend to be "baby implementations", frozen in a half-correct state of refinement. But the things they got _really_ right tend to be the things that were there and usable, but not refined so well in prior languages.

Re: Retiring Python as a Teaching Language

#46
You can program in Python using Kivy [1] to create apps for Android, iOS, and the desktop. I made a simple app and took it through the entire process it is now on the Android app store. You are still using Python so you can focus on programming and not language features, but you get the benefits of programming something your students can show off.

[1] http://kivy.org/docs/gettingstarted/intro.html

Re: Retiring Python as a Teaching Language

#47

As a proponent of python and a full time python developer I fully endorse this decision. There is a compelling need to be able to distribute graphical python applications that isn't met (and that https://www.python.org/dev/peps/pep-0441/ isn't even a step in the right direction is an indication of how far away a solution is). Don't get me wrong, python is a great language, but its not the right solution for teaching…

From the link:

> This feature is not as popular as it should be mainly because no one’s heard of it

Count me as one. As someone who does a lot of development in Python, I'm surprised I never heard of that feature either.

Perhaps another reason this feature goes unnoticed is because it still requires the end user to have Python installed. Therefore, when distributing a Python application, most people just bundle it into an EXE/ELF/etc and don't bother looking for other solutions.

Re: Retiring Python as a Teaching Language

#48
I figured this out when I was teaching my nephew programming. I started him on Python. He got bored quickly because he really couldn't see the results of what he did and he really wanted to make simple games.

Javascript turned out to be much better for making simple games and doing simple puzzles.

Re: Retiring Python as a Teaching Language

#49

As a proponent of python and a full time python developer I fully endorse this decision. There is a compelling need to be able to distribute graphical python applications that isn't met (and that https://www.python.org/dev/peps/pep-0441/ isn't even a step in the right direction is an indication of how far away a solution is). Don't get me wrong, python is a great language, but its not the right solution for teaching…

From the link: > This feature is not as popular as it should be mainly because no one’s heard of it Count me as one. As someone who does a lot of development in Python, I'm surprised I never heard of that feature either. Perhaps another reason this feature goes unnoticed is because it still requires the end user to have Python installed. Therefore, when distributing a Python application, most people just bundle it in…

Basically that's because you can't bundle c libraries in a zip file like this, so effectively you can't actually use it for any of the reasons you might want to use it.

(.exe bundlers, by comparison, bind the shared library into the executable or with it)

Re: Retiring Python as a Teaching Language

#50
post #11
post #2

JavaScript (or rather: a subset of it) is a fine teaching language too, especially since it's easy to publish runnable code - even for beginners. However, there is no language that can do everything equally well. It's a common reaction displayed by the proponent base of many languages, even here on HN, to advocate the use of their language for every conceivable need. This can't possibly work well. Programming teacher…

> It's a common reaction displayed by the proponent base of many languages, even here on HN, to advocate the use of their language for every conceivable need. This can't possibly work well. Is that some law of nature, or merely a consequence in how we've designed languages thus far? A well designed type-infered statically typed language with a REPL/interpreter, a fast AOT compiler, an optional GC, good documentation…

It's because languages are designed to be niche. There are so many languages, that to be used you just need to be good at one or two things.

The "universal" language would be fairly low level, but would allow you to create your own DSLs. So you'd really be designing your own language for each task. That language would be 100% suitable to the task at hand. For example, you'd embed SQL directly into your code, not as a string, but actually parsed by someone's library so it's syntax checked.

Post reply on HN