Retiring Python as a Teaching Language
prog21.dadgum.com
Retiring Python as a Teaching Language
1–10 of 238 posts
Re: Retiring Python as a Teaching Language
#2However, 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 teachers should make a habit of pointing out that writing code is a journey that will require students to learn new tools all the time.
Re: Retiring Python as a Teaching Language
#3JavaScript (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…
Not that I disagree, but could you elaborate your reasoning here?
Re: Retiring Python as a Teaching Language
#4Re: Retiring Python as a Teaching Language
#5Javascript is a flawed, quirky language, but with the upcoming ES6 and ES7 standards it's going to be a much, much better. I'd call it a tossup comparing it to Python or Ruby. I wouldn't have recommended JS to a beginner a few years ago either but that's where the momentum is now and, as the author says, the ease with which a newbie can get something interactive up on screen trumps smaller concerns. For a little more rigor you can use something like Typescript.
Re: Retiring Python as a Teaching Language
#6Giving a Pygame game to your friend is pretty easy. It has usually very few dependencies and should be trivial to package. And it's multiplatform (Mac, Windows, Linux including even exotic devices like the Raspberry Pi).
Putting a python game on a phone is definitely more of a problem, but at the same time something that is NOT made for a Phone touch controls will anyway perform poorly if you intend to do a demonstration with it.
Re: Retiring Python as a Teaching Language
#7Re: Retiring Python as a Teaching Language
#8JavaScript (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…
> This can't possibly work well. Not that I disagree, but could you elaborate your reasoning here?
Even objectively, a good language to write an OS kernel in isn't necessarily equally well suited to, say, game development, or web development, or scientific computing. That doesn't mean there won't be heroic efforts to make a language work in every arena, but at some point most people draw a line based on pragmatism.
Also, often overlooked, there is the aspect of a language mapping well to a given developer's brain. Different people are drawn to different languages for different reasons, including borderline-intangible ones where they just feel more "at home", which translates into tangible outcomes like productivity.
Re: Retiring Python as a Teaching Language
#9Yes, there is still the issue of response time but no language works for everything. You have to accept certain limitations and make compromises.
Actually, I might no longer even use webapps. Nowadays it is pretty cheap to give every kid a Raspberry PI so WxPython or Pygame can be used for everything. The showing problem boils down to borrowing a monitor, keyboard and mouse. You could actually carry around a small portable bluetooth keyboard and a mouse in your backpack with the Raspberry PI.
So, why stick with Python? It is because Python is a leader in moving up the evolutionary curve towards functional languages and functional reactive programming. I still think that Python is easier to get into that Erlang or Scala because you can "make mistakes" but still have a working program. And by examining the implications of mistakes you have a learning opportunity too. Note that Javascript has been following Python's lead in adding more functional features.
There is a general language evolution going on and Python is in the thick of it, maintaining compatibility with the old imperative style beloved of data crunching scientists along with the functional goodies that Haskell, Erlang and Scala focus on. It is not out of date. It is not mired in the past like PERL and PHP. What was good about Python 5 years ago is still good.
Re: Retiring Python as a Teaching Language
#10I love python, it's probably my favorite language. I taught a class on it in Boston. But these exact questions have indeed brought doubts into my mind.
Year after year I'm disappointed by what python simply cannot provide in any straightforward way. The options are very few for making games. The options are very few for desktop GUI (I tried to do PyQt and then discovered QML with JavaScript and quickly left python behind for that project). The options are few for back-end web development-- yes, there's Django, but it just doesn't have the clarity, documentation, and community that Rails has, or Wordpress (different type of entity, I know), or many others. Flask is amazing but small in scope and community.
I'm a professional JS developer by day and I used to think JS was awful for teaching, because the functional side of it is nightmarishly confusing IN GENERAL, let alone to someone new to programming. Its objective/prototypal system takes quite a bit of getting used to, also, and it has many other quirks.
But, for the EXACT reasons mentioned in this linked post, I changed my mind. The fact that JS can be used for almost anything nowadays, is ubiquitously in demand, has a massive, massive worldwide "community," and allows easy GUI manipulation via HTML/CSS, makes it the best candidate for teaching by far.
It'll just take some careful consideration as for how to approach it best.