Live data from Hacker News

Retiring Python as a Teaching Language

prog21.dadgum.com

31–40 of 238 posts

Re: Retiring Python as a Teaching Language

#31

So incredibly in favor of this. I 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 JavaS…

And this is why I'd argue that Python 3 was a big mistake. In exchange for 6 years and counting of freezing and bifurcating the ecosystem, we got a smattering of minor improvements that don't substantially change the developer experience. What could we have had if that effort had instead been focused on things like real performance optimization and native browser support?

This makes the false assumption that resources put into Python 3 somehow prevented "native browser support," something that has always been firmly in the hands of browser vendors and was never blocked by insufficient loyalty to Python 2. The world where just giving up on Python 3 would magically bring huge benefits never existed.

If you don't want to use Python 3, keep using Python 2 through its EOL in 2020+ but why interfere with other people happily using and preferring Python 3 for years now? It is not interfering with you.

Re: Retiring Python as a Teaching Language

#32
post #17
post #11

Earlier quoted context omitted.

> 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…

> Is that some law of nature, or merely a consequence in how we've designed languages thus far? It's a game of tradeoffs, same as everything else in nature, isn't it? I would rarely say that a given language's design or implementation is universally flawed, instead it's the result that comes out of a set of premises and decisions. Yes, some of them may be objectively bad, but mostly they are just decisions made to so…

>It's a game of tradeoffs

I find that less and less true. The canonical example for me are abstract data types. They're pretty much free on a runtime level, enable clean code, and allow for more static checking. Basically a superpowered version of enums. I can't see any argument against having it in the language unless the express goal is to have no syntax (lisp).

Re: Retiring Python as a Teaching Language

#33
post #32
post #17

Earlier quoted context omitted.

> Is that some law of nature, or merely a consequence in how we've designed languages thus far? It's a game of tradeoffs, same as everything else in nature, isn't it? I would rarely say that a given language's design or implementation is universally flawed, instead it's the result that comes out of a set of premises and decisions. Yes, some of them may be objectively bad, but mostly they are just decisions made to so…

>It's a game of tradeoffs I find that less and less true. The canonical example for me are abstract data types. They're pretty much free on a runtime level, enable clean code, and allow for more static checking. Basically a superpowered version of enums. I can't see any argument against having it in the language unless the express goal is to have no syntax (lisp).

Again, that's a personal preference, not a statement of fact. There is a cost associated with different type systems, and that cost can vary with the problem you are trying to solve. It's not that I argue against the benefits of having such a system in place, but you should be aware of the fact that this too might not represent the end-all-be-all for all programmers.

One of the basic mistakes made here seems to be the notion "if programmers only _knew_ about the one true way of doing it, they'd all use the same language and tools, namely: mine".

Re: Retiring Python as a Teaching Language

#34
post #22

just the opposite. Many teachable subjects from Journalisism to data science, biology to finance increasingly include Python. NLTK, Beautiful Soup, Pandas, Ipython Notebook, Matplotlib... Programming is a tool for getting things done, and few languages offer students more tools for doing than Python. On HN we sometimes forget the ubiquity and pure value of automation and anaysis. We focus perhaps too much on software…

> Programming is a tool for getting things done

...and some of those things, python isnt any good at.

To be fair, it's very very good at others, but you can't argue with the points he's making. They're spot on.

It turns out, people learning programming in school aren't interested in processing scientific data. They're interested in games. and showing their friends what they've made on their phones.

Python is flat out bad at those things. It was never the intended purpose of python, and it's not a priority for the core team.

Why not teach kids with a tool that excites them, instead of one that frustrates them?

Re: Retiring Python as a Teaching Language

#35
I have a concern with Python as a teaching language in contexts where people are not necessarily into STEM and are inexperienced or marginally experienced as programmers.

There's no neat and tidy way to deal with Python 2 versus 3. You can say use 2. You can say use 3. You can kick the issue down the road by requiring programming via web browser. But in the end anyone who catches the programming bug winds up facing a decision that even seasoned professionals struggle with.

Python as a teaching language is great for replacing MatLab. After that it entails tradeoffs as fundamental as character encoding. Not that I'm saying JavaScript is the answer.

If I were trying to get someone juiced about programming and solving the problems that MatLab does wasn't a feature the audience cared about, I'd pick Processing. It does interesting things with sound and images and exports to HTML and JavaScript to run in the browser. All that and it's small, well documented and Googles up a low noise search results page. Yet it runs as deep as you want to dive into the JVM and its languages.

Re: Retiring Python as a Teaching Language

#37
This is always a hotly debated topic. When I learned to program, I started because I wanted to understand how computers work. Javascript in a Web browser so many layers above the basics of a computer; I just don't think it is a good choice for a first language. Obviously, it depends on your goals. If you are changing careers and you just heard that you can make all this money web consulting and you couldn't care less about computer science then maybe go for Javascript, I don't know much about people who got into programming via that route.

I think Python is probably a useful first programming language for someone interested in doing mathematics or algorithms but I still think, and this is totally against the grain, that C is a good language for beginners to programming. However, it may not be the best language to teach undergrads and expect as many as possible to stick with CS, maybe that is not a terrible thing? Though, that is elitist, I think C provide enough of an abstraction on top of the machine while still allowing you to get some idea of how computers and memory work, from a CS rather than an EE perspective.

The other benefit is that once someone wants to know how to create a game or how to make a GUI program ... the resources are readily available and in fact most of the libraries will be written in either C or C++. I think C over C++ because OOP concepts and syntax of C++ can be needlessly overwhelming for a newcomer to programming.

I feel like it also gives the beginner the feeling of actually creating a program. Those interested in learning to program will always be familiar with normal executables such as EXEs on Windows or binaries that can be executed on Linux. Using C means you can create something just like those programs they are familiar with; it gives the learner a sense of really accomplishing something, in my opinion. Creating something you have to run in conjunction with another program and does not seem like a "typical executable" can leave the user feeling like "OK, how do I create a real program, though?" This is not to knock interpreted languages, at all; it's just something I think is important for some learners.

Re: Retiring Python as a Teaching Language

#38

I have a concern with Python as a teaching language in contexts where people are not necessarily into STEM and are inexperienced or marginally experienced as programmers. There's no neat and tidy way to deal with Python 2 versus 3. You can say use 2. You can say use 3. You can kick the issue down the road by requiring programming via web browser. But in the end anyone who catches the programming bug winds up facing a…

Telling somone to use Python 2 is a neat and tidy solution. What problems would this possibly cause? Python 3 is fine too.

Re: Retiring Python as a Teaching Language

#39
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…

You realize all these "new" concepts you think exist in these "modern" programming languages have been around since the early 1960s, right? MVC Web Apps ugh ... Maybe for some ... I just think there is a class of learner that wants to actually learn about computers and not just show web sites to their friends.

Re: Retiring Python as a Teaching Language

#40

It is amazing how much of an IDE a web browser can be. I use typescript these days to prototype stuff and it is going pretty well. Reload and changes are up. Nothing else even comes close.

I think any REPL system does the same thing, though.
Post reply on HN