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.
Well. yes. it does strongly depend on what you intend to do with it.
Python is a great language that’s very broadly used; there’s a reason that Apache added the python API; after all. (and why Scala is plummeting.) I wouldn’t even say Pascal was all that useful, to me. I think I ‘learned it’ enough to get through the dumb book, and then went on to something else. C++ was more fun anyhow.
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.
I took a compiler course focused on optimization and porting. So I worked with x86 and ARM. There’s very little reason in modern computing to write assembly by hand, but it’s still useful to be able to read and understand.
Having to work within such constraints, it really showed me difficulties that modern languages try to entirely abstract away from you. e.g. there are only so many “registers” that physically exist, before you have to start using much slower to access memory locations - a very far cry indeed from automated variable garbage collection!!
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.
Ruby, of all the examples you could come up with? My Redmine is updated only every few years because I rarely have a whole day to deal with the mess that is Ruby deps managent.
Huh? I assume you mean RubyMine and I have no clue what dependency issues you could be dealing with unless you’re on windows (which python is even worse with). You have one package manager and one build tool on Ruby, compared to Python’s now 16 tools. Ruby is the gold star for package management which is why both Rust and Elixir copied enormous parts of it when creating their tools cargo and mix.
https://www.redmine.org/ is a standard rails webapp. Nothing special. Straightforward to update, just a few commands, the only quirk is that at least one step always fails. Some obscure bug in a dependency, some problem with expected vs installed system libraries, or my favourite, a Segmentation Fault.
Conflating a Ruby on Rails app to all of Ruby is just not really fair. It’s like comparing Lombok to Java. Lombok is a hot fucking mess and Java app with it is gonna have difficulty at later points.
Aside from that (I think rails is honestly terrible), just looking at the repo I can see that RedMine doesn’t use bundler, which is the singular standard in the Ruby community, so it’s like saying “a project I use uses Ant under the hood so Java is bad”. Like I said, there’s a reason that Rust and Elixir based their build tools off of Ruby’s.
I haven’t had any problems with redmine itself but with dependencies and the Ruby runtime.
And if you’re saying I don’t have enough experience to make claims about Ruby dep management, I can say the same about you Python. Works flawlessly for me.
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.
Nah, php over python any day. Equally easy to start, equally fucked up core, but the ecosystem around it is so much saner and easier. And I’d argue it’s even easier for beginners.
Unless you need something that only has python bindings, I’d never choose python.
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”.)
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.
Well. yes. it does strongly depend on what you intend to do with it.
Python is a great language that’s very broadly used; there’s a reason that Apache added the python API; after all. (and why Scala is plummeting.) I wouldn’t even say Pascal was all that useful, to me. I think I ‘learned it’ enough to get through the dumb book, and then went on to something else. C++ was more fun anyhow.
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.
Try assembly then - it’ll freaking blow your mind!:-)
I took a compiler course focused on optimization and porting. So I worked with x86 and ARM. There’s very little reason in modern computing to write assembly by hand, but it’s still useful to be able to read and understand.
Having to work within such constraints, it really showed me difficulties that modern languages try to entirely abstract away from you. e.g. there are only so many “registers” that physically exist, before you have to start using much slower to access memory locations - a very far cry indeed from automated variable garbage collection!!
In practice, Python is not easy to learn programming with. Not at all. I see beginners wrestling with Anaconda and Jupyter notebooks and I weep.
The fact that pip is intentionally broken on macOS and some modern Linux distros sure doesn’t help. Everything about environment management is insane.
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.
Ruby, of all the examples you could come up with? My Redmine is updated only every few years because I rarely have a whole day to deal with the mess that is Ruby deps managent.
Java deals with this ellegantly.
Huh? I assume you mean RubyMine and I have no clue what dependency issues you could be dealing with unless you’re on windows (which python is even worse with). You have one package manager and one build tool on Ruby, compared to Python’s now 16 tools. Ruby is the gold star for package management which is why both Rust and Elixir copied enormous parts of it when creating their tools cargo and mix.
https://www.redmine.org/ is a standard rails webapp. Nothing special. Straightforward to update, just a few commands, the only quirk is that at least one step always fails. Some obscure bug in a dependency, some problem with expected vs installed system libraries, or my favourite, a Segmentation Fault.
Conflating a Ruby on Rails app to all of Ruby is just not really fair. It’s like comparing Lombok to Java. Lombok is a hot fucking mess and Java app with it is gonna have difficulty at later points.
Aside from that (I think rails is honestly terrible), just looking at the repo I can see that RedMine doesn’t use
bundler
, which is the singular standard in the Ruby community, so it’s like saying “a project I use uses Ant under the hood so Java is bad”. Like I said, there’s a reason that Rust and Elixir based their build tools off of Ruby’s.I haven’t had any problems with redmine itself but with dependencies and the Ruby runtime.
And if you’re saying I don’t have enough experience to make claims about Ruby dep management, I can say the same about you Python. Works flawlessly for me.
I have thousands of hours programming in python. Ruby is several thousands more. I know exactly how shit the Python ecosystem is. https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/
(Now we’re at 15 now since that article came out, with the introduction of Rye).
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.
Nah, php over python any day. Equally easy to start, equally fucked up core, but the ecosystem around it is so much saner and easier. And I’d argue it’s even easier for beginners.
Unless you need something that only has python bindings, I’d never choose python.
as a complete layman and hobbyist i also personally think that “more pythonic” coding can sometimes be more confusing.
I dont think any beginner reads “j for j for i in k” and instantly gets it.
maybe unpopular opinion idk
Anything that’s not an integer or a range doesn’t belong inside
[]
. Much more readable to use zip, map, filter, etc. And more powerful.EDIT: that was meant for indexing lists. Strings inside
[]
for indexing ducts are fine.