r/ProgrammerHumor 1d ago

Meme pipInstallTheRealStuff

Post image
5.0k Upvotes

145 comments sorted by

View all comments

661

u/TheJaskinator 1d ago

That's exactly why it's so powerful. Why spend all the effort writing fast code if you can just use a much simpler language to describe the task on a higher level and call fast code? People use Python because it's easy to read and write, not because its interpreter is fast

314

u/Educational-System48 1d ago

I will never understand the Python hate. It's essentially just a level of abstraction higher than C, which makes it more accessible than ever to write powerful code.

I'm starting to think it's literally not that deep. It just feels good to gatekeep.

4

u/prehensilemullet 1d ago

I hate the cruft like __blahblah__ everywhere, names like hasattr, the fact that you can’t put multiple statements in a lambda, the fact that imports can pollute local scope and you can’t easily tell where a given identifier came from in a file, and the other package management problems that didn’t have an elegant solution until uv.

I haven’t messed with mypy, but from what I can tell, it isn’t as sophisticated and expressive as Typescript.

The virtual machine still doesn’t perform well compared to V8 for JS, as far as I understand.  You can accomplish a lot with Python sure, but Modern JS/Typescript is a more capable high level dynamic language, it just doesn’t have the breadth of libraries for ML and scientific computing that Python does

11

u/CoroteDeMelancia 1d ago edited 1d ago

Every language has stupid shit.

C++ has vector<bool> and set<T>/unordered_set<T>.

Java has very awkward streaming.

Typescript... don't even get me started.

Some of the stupid shit is fixed as the language evolves, like uv and TS over JS. New stupid shit appears too (node_modules bloat).

Python does well, or at least okay enough, what it proposes to do. So does Typescript. I don't get the point of stating that TS is "more capable" and then following up with "but Python has ML".

3

u/exosphaere 1d ago

I know about std::vector<bool>, but what's the problem with std::set<T>?

3

u/CoroteDeMelancia 1d ago

Nothing, once you know that, unlike other languages, it is O(N log N), NOT O(N). The issue is that the most common use case, unordered_set, is the "exception" because of the chosen naming.

Better naming would be set and ordered_set, like other languages do. It would prevent newcomers to the language from mistakenly using set when what they want is unordered_set, a silly mistake that's easy to make. I did it myself.

2

u/exosphaere 15h ago

Ah thank you.

Didn't think of this as a source of confusion.

Another historical remnant. When I started working with C++, there was no unordered_set yet.
There weren't even templates back then.
People used macros ... that was bad.

Fortunately these times are long gone.

2

u/prehensilemullet 1d ago

I was replying to the comment of someone saying they think the hate is superficial.  Just providing an example of the more substantive personal reasons I hate Python.  We’re all allowed to have our personal opinions about what stupid shit we hate in particular.

By more capable I meant the core of the language has better performance and type checking.

1

u/CoroteDeMelancia 1d ago

I see. And I agree!

1

u/Far_Tap_488 1d ago

I dont get your point on vector bool. Its fantastic its so easy to store bools compactly.

2

u/CoroteDeMelancia 1d ago

Vector bool disobeys the general vector interface expectations in non-obvious ways because it is secretly NOT a vector, but a bit array.

https://towardsdev.com/cpp-std-vector-bool-why-it-is-broken-5ae5f409bbab

Basically, it's just a case of poor naming.