4 ms·
Not to detract from the real thrust of what you're trying to say, but here's a controversial opinion: Continuing to push first-time programmers towards Python
by cxr 4y ago
Not to detract from the real thrust of what you're trying to say, but here's a controversial opinion:
Continuing to push first-time programmers towards Python is net long-term harmful. It was excusable in 2013, but shouldn't be happening in 2023.
Konrad Hinsen (who is by no means a Python hater) has several years of blog posts that together make up part of the case for why.
From an earlier, now-deleted comment in response to a comment in a previous thread comparing Python to Go in particular:
> Folks probably _should_ stop writing Python—or at least stop pushing it on non-technical people as the easy path to "learn to code". Python and the Python ecosystem have real problems that make it less suitable for that demographic than is popularly imagined. It's more or less an unfortunate accident of history that so many academics who don't first and foremost consider themselves to be programmers are shunted in that direction. If it weren't for the self-perpetuating science-gets-done-with-Python meme and if things were selected through a sober decisionmaking process that took into consideration the actual merits of the language, its tooling, and accessibility, then Go would be killing Python. Heck, even Pascal would fare well. A focused Pascal distribution that concentrated on things like direct runnability (i.e. no build step required, unless compiling for deployment to other machines) and a few choice language extensions for [...] [Python-like] cuteness would go a long way towards making that a reality.
In re <https://news.ycombinator.com/item?id=34850852 https://news.ycombinator.com/item?id=34850852>
Thinking it over, GDScript seems perfectly positioned to make a dent in the Python problem—at least as a starting point. (Expecting a toy language for a game engine to go anywhere else might seem laughable, but stranger things have happened.)
- pcwalton 4y agoGDScript is a bad idea as a teaching language because it's so niche, practically a DSL. You really want people's first language to have broad applicability. Yes, Python has deployment problems, but so does Godot.
- cxr 4y agoJS was a DSL. (Everything you meant to communicate by this comment was already accounted for when I posted mine—hence the parenthetical disclaimer about the idea being laughable.) I was also fingering GDScript specifically as a _starting_ point for the sort of thing described in the quoted/deleted comment: a concentrated effort to produce a RAD-ish environment meant to dethrone Python from the seat it unreasonably occupies today.
- tptacek 4y agoI went looking for Hinsen posts that supported this argument and couldn't really find any. Can you be more specific? I don't like Python. But it is difficult for me to look past the empirical evidence that it is (a) remarkably easy for new programmers to pick up, and (b) an extraordinarily popoular, load-bearing tool for actual practitioners in the field. It isn't the last word on software development (I don't use it), but it's the language I'd reach for first if I was teaching someone how to code. I think the class system is archaic and it goes a little out of its way to resist some functional programming idioms, but makes up for that in other ways.
- cxr 4y agoNote that cancelling Python is my thesis, and khinsen just provides the evidence to support it. He doesn't come out and say, "Don't use Python," but I am. From my notes, here are (some? of) the posts I had in mind: - <https://blog.khinsen.net/posts/2015/11/06/a-rant-about-software-deployment-in-2015/ https://blog.khinsen.net/posts/2015/11/06/a-rant-about-softw...> - <https://blog.khinsen.net/posts/2017/11/16/a-plea-for-stability-in-the-scipy-ecosystem/ https://blog.khinsen.net/posts/2017/11/16/a-plea-for-stabili...> - <https://blog.khinsen.net/posts/2017/01/13/sustainable-software-and-reproducible-research-dealing-with-software-collapse/ https://blog.khinsen.net/posts/2017/01/13/sustainable-softwa...> - <https://blog.khinsen.net/posts/2017/11/22/stability-in-the-scipy-ecosystem-a-summary-of-the-discussion/ https://blog.khinsen.net/posts/2017/11/22/stability-in-the-s...> - <https://blog.khinsen.net/posts/2019/02/11/the-computational-notebook-of-the-future/ https://blog.khinsen.net/posts/2019/02/11/the-computational-...> - <https://blog.khinsen.net/posts/2019/05/09/the-computational-notebook-of-the-future-part-2/ https://blog.khinsen.net/posts/2019/05/09/the-computational-...> --- > I don't like Python [...] but it's the language I'd reach for first if I was teaching someone how to code Damn, that's crazy. Considering how many of those people would be coming from Windows and Python isn't actually[1] a batteries-included situation, I'd go with JS. I'd say, "Look: here's how you can get started right away making little programs that run in your browser right now even when you don't have WiFi," then at the point where other people might start introducing Node (or Deno), I'd say, "You should really learn Go." I'd preface the JS stuff by saying, "mostly ignore EVERYTHING that you come across telling you how tech influencers on the Internet think you should be writing JS. (For example, if at any point during this stage you find yourself pressing the key for the equals sign three times in a row, then you have already lost sight of the trail—and the plot.) Instead of listening to StackOverflow and GitHub, here's a copy of ECMA-262, 3rd edition (notice how it's still accurate, even though it's from 1887) and an offline copy of developer.mozilla.org for reference." 1. <https://news.ycombinator.com/item?id=34833619 https://news.ycombinator.com/item?id=34833619>