4 ms·
I'm doing the same thing, except it's Rust and Go that I'm pushing (and more often than not, succeeding in getting through). Python is a liability at this poin
by creamytaco 5y ago
I'm doing the same thing, except it's Rust and Go that I'm pushing (and more often than not, succeeding in getting through).
Python is a liability at this point, not only because of performance but primarily due to it being badly designed. This bad design is at the core of every major Python debacle.
- shawnz 5y agoThe parent's point seems to be that Python is too opinionated. But aren't Rust and Go even more opinionated, particularly Go? What makes you think Go et al won't continue to make highly opinionated decisions like Python did through its development?
- busterarm 5y agoI wouldn't exactly say that. I'm fine with strong opinions made for the greater good. Python's opinionation tends to be to satisfy personal itches people have. Often the justifications aren't good enough for the results. I have my criticisms of Golang and Rust as well, but Go is finally getting generics. It's not that they were never open to it, but the proposal needed to be good. Rust seriously needs to stop this rustup, curl | sh nonsense as an install method though. It's really embarrassing for a language that goes around beating everyone over the head about how secure it is. Rustup.rs is an enormous target if you want to go and sneak malicious code out into the world.
- shawnz 5y agoI think everyone's opinion of how to achieve the greater good could be construed as just a "personal itch". I am not sure there even could be a singular "greater good" which would be best for everyone. Furthermore it's often not obvious what the results will be until the design is used in practice. There are lots of decisions that Go has made where I don't see them as clear and obvious wins, but I could be convinced after seeing how developers incorporate the ideas into their code. Newer languages have an advantage here, because if their opinions turn out to be unsuccessful, then people will just forget about the language. They won't feel like a language they previously liked was made worse, like some felt with the Python 2->3 transition. But as languages like Go age, there will be more people to get upset with each change. So I worry that simply switching to a newer language doesn't really solve the problem, even if you feel like its opinions align well with your own at the current time.
- busterarm 5y agoOkay so like...question time. You decide that you're going to write a new HTTP request library in Python. Do you a) wrap libcurl, a blindingly fast and complete library that has had more man-hours of effort put into it than most other codebases on the planet, or b) write something from scratch? Because out of the 8 or 9 popular Python libraries in use for solving this problem, only PycURL chose a.
- shawnz 5y agoI would probably write it from scratch to avoid bringing in a big dependency which requires a FFI to use it just for a simple protocol like HTTP. What languages use libcurl in their idiomatic HTTP library? As far as I can see, only Rust uses it in the standard library (EDIT: actually it doesn't). Go has its own HTTP implementation.
- busterarm 5y agohttps://everything.curl.dev/bindings https://everything.curl.dev/bindings In many cases on this list the listed library is a popular option.
- steveklabnik 5y agoWhere does Rust use libcurl in the standard library? I didn't think it did, but it's very possible I'm wrong.
- shawnz 5y agoMy mistake, I just quickly googled it and misinterpreted some documents I saw. In fact it doesn't
- steveklabnik 5y agoIt's all good! We certainly rely on it in other ways, like the build system and such. libcurl is so ubiquitous I would have totally believed that we somehow developed a dependency on it.
- VectorLock 5y agoYou say "for the greater good" when really you want for YOUR greater good. The people who designed Python made decisions that they thought was best for everyone.
- creamytaco 5y agoYou can be opinionated and make good decisions. Python does the opposite. Its primary focus on user experience and low barrier to entry (by hiding upfront complexity that has a tendency to explode in your face later) made it a popular language, but also severely handicapped it, especially when it comes to pragmatism and suitability to solving hard engineering problems. Go is very opinionated but the focus is strong on pragmatism and engineering. One could say that this strong focus makes for a very cohesive language. It doesn't support all the bell and whistles but that's not necessarily bad, if it doesn't detract from its purpose. Looking at the engineering landscape today, one can definitely say that Python missed the mark by a very wide margin and Go nailed it. (Which is not to say that Python is going away, research and data science are its bread & butter)
- dagw 5y agoOpinionated things are good when I agree with the opinion, and terrible when I don't.
- bern4444 5y agoTop comment right here
- VectorLock 5y ago"Opinionated is bad when it clashes with my opinions."
- CameronNemo 5y agoWell FWIW Go made a lot of opinionated decisions up front, and has not changed a whole lot since. Not my favorite language, but definitely a stable one.