Some people think that because Python is the easiest language to learn, it's going to be easy to learn programming with Python. But learning programming is still very hard, so many abstract concepts to grasp. Python just makes it a tiny less hard, almost insignificantly now that we can use an LLM to learn the syntax faster than than ever.
It's also important to note that you might come out ahead in learning those abstract concepts using a harder language.
But my first language was Pascal. from a book stolen from my dad's library. Then C++. I still wouldn't call myself anything other than an amateur.... I mean, my dad can do more with one line of C than most programmers can do in their entire career. (he really shouldn't. but he does. Calls it "job security".)
Itâs also important to note that you might come out ahead in learning those abstract concepts using a harder language.
I agree that you will learn more abstract concepts with more low level languages, but they are often not necessary. See Scala, beautiful language, lot's of fancy subtle computer science concepts, and a plummeting popularity since its main popularizer, Apache Spark, implemented a Python API.
I was hacking scripts and web shit together in perl, python and php for many years before learning C, and just a couple months learning C/C++ made me understand so many more basic concepts than all previous years experiences combined.
Comparing python env management to Ruby or rust or even Java for fucks sake just goes to show that nobody actually cares about how easy a language is to use, they just care about what is popular or what they think is popular.
That is because when you're a beginner, you read everywhere that you should be using anaconda and jupyter notebooks. I know because I did so. Neither of them lasted more than a week on my computer though.
Development environment is a mess, but given its popularity, it's not difficult to find an up to date tutorial. Then it is the easiest I think, you will be able to try programming basics and get a minimum viable product (small web app, small analytics...) easlier than with any other language.
This is why I decided to learn Nix. I built dev environment flakes that provision the devshell for any language I intend to use. I actually wonât even bother unless I can get something working reliably with Nix. ;)
For example, hereâs a flake that I use for my Python dev environment to provide all needed wiring and setup for an interactive Python web scraper I built:
It feels like magic. I think of it as the glue that makes almost all of my software work together seamlessly. I canât wait to use it for one-click deployments of my software on a server or high-availability cluster.
PS: I will never get away from the fact that user-space memory addresses are also basically keys into the page table, so it is hashtables all the way down - you cannot escape them.
This is basically what Iâve been telling people for years. Prototype in Python to get the concepts down, then when youâre serious about the project, write it in a serious language.
Good meme. However I do think that most people starting out will not really have to deal with any of those issues in the first few years apart from maybe the pip/venv/poetry/etc choice. But whatever they'll pick it'll probably work well enough for whatever they're doing. When I started out I didn't use any external libraries apart from pygame (which probably came pre-installed). I programmed in the IDLE editor that came with Python. I have no idea how I functioned that way, but I learnt a lot and hat plenty of fun.
What about the issue where people try to install new version of python sometimes try to uninstall the "old" pre-installed version on a linux system and thus borking the whole s
I may or may not have done this haha. I'm a threat to any working piece of software, just enough knowledge to be able to break shit and too little knowledge to avoid breaking shit. I think after all these years I've mostly learnt my lesson though. The package manager is the boss, and if I don't like it I have to work around it without upsetting the package manager
I think experienced programmers may have a different route to a degree. A number of years in one language, for instance, including fairly complex production settings, etc. and having to transition to python for a new job or company or decision from someone higher up the food chain. I did it from a largely perl and PHP background for both Rust (a tiny bit of experience before, but not a super complex environment) and Go (zero to prod in a few months dropping in rewritten portions of the former PHP monolith). I can talk about memory usage, race conditions, etc. but would be completely screwed with anything internal to python or its quirks.
I still sometimes bang out small perl scripts for things that are too annoying/complex for command prompt and shell scripts but not worth writing something in, say, Go. I never learned python which is probably why I never use that.
People keep saying Python, despite how it (1) sucks, and (2) is super annoying to keep up to date, with package management and the like, unlike Perl that is more stable. Though Python is also easy to use and powerful and extensible.
But I think each language type is what it is and has its own set of tradeoffs and balances. Unix is hyper-stable and secure but limited, Perl is powerful but requires discipline to use to full effect, and these days most people don't bother to learn it. Python is... "common", is perhaps the best way to put it:-). C/C++ is even more powerful, the latter bloated, and blamed for most memory management issues (although really, how much of that is merely bad programming practice? Okay, so it allows such though).