I see a lot of hatred for Python all over the place, so I have to ask: Why? What do people hate so much about Python? It's fantastic for my use-case (interacting with and managing AWS resources), so is it just a case of "good for this one thing, bad for everything else," or something different?

  • 14
    I mostly have a problem with its community. I also dislike significant whitespace in general, and dislike python’s form and syntax in particular.

    Python as a language isn’t bad in any way, at least not any more than most other languages. It has its downsides, but it’s a decent tool.
  • 6
    Seems to fall into 3 things here, by descending volume:

    - other-language preference/gnosticism
    - unfamiliarity
    - perception of value doesn't match actual value
  • 1
    That's interesting, given your taste for ruby. What's the difference that segments them to your mind?
  • 4
    I enjoy using python - but thats not to say it's not tedious at times, but it has its place, I'm not a fan of whitespace languages though, so I won't default to python unless I have no choice or it's better equiped for what I'm doing.
  • 2
    The runtime/execution environment blows ass due to the "this works in this version but not that".

    That's not a justification for hating it, just a thing I can understand if that's a reason.
  • 1
    The language "conventions" are a nightmare for a guy who enjoys strict OOP. I spend more time thinking about how to organize my modules and files than actually thinking about my implementation, as I'm a big fan of the one class one file structure which is not really a thing in Python. And the lack of type declaration sucks too. Python seems to be the best option for my current thesis (applied data science) and I'm very unhappy with that. And by very unhappy I mean losing sleep and refusing to eat, lol. I have zero industry experience though, so take it with a grain of salt.
  • 6
    Something that gets brought up a lot is significant whitespace. And that's just baffling to me. Where are you working that you can just casually fuck up your whitespace?

    It uses dynamic types so that comes with its haters.

    There was also the python 3 fiasco which is STILL not fully resolved. A lotta people hate that they just decided to introduce breaking changes.

    But at the end of the day none of that really matters. Use what works for you and/or your team
  • 1
    @M3m35terJ05h I think the same thing about whitespace. I never saw an issue with syntactically-significant whitespace because it makes it more difficult to write poorly-formatted code.
  • 2
    @M3m35terJ05h whitespace formatting is one thing, when a single space can cripple your code it's another.

    And that's not to say other team members don't copy and paste and loose the formatting, and then wonder why it don't work as expected.
  • 1
    Though I don't usually share link like this but to answer your question, I guess its a good way: https://devrant.com/rants/2703487/...
  • 0
    Where is this all over the place? I haven't seen it. Where you're developing tools for yourself and your colleagues and time is money, nothing competes with Python.
  • 0
    @gibus I may have exaggerated slightly as I've mostly seen it either here on Devrant or from a few specific coworkers who swear that Golang is infinitely superior to Python in every way. Saw another "Python sucks" rant recently and the dam broke and I had to ask why.

    So far the answer seems to be significant whitespace. Which is... odd. Yes, it sucks that your program won't run because of an indentation error. But even if it works in another language, it'll still make your linter scream at you and fail code review.
  • 2
    @C0D4 Honestly the idea of copy pasted code getting screwed up never occurred to me. That probably explains a lot. But let's just say that's not a use case I think a language should be designed to facilitate
  • 2
    The way I see it there's basically two main camps of people who don't like things:

    The first and worst is the whole "my language/OS/paradigm is better and therefore you're all idiots mnyeh" crap as just a way to put down others-- these are the insecure contrarians, and egotistic elitists.

    The other camp are people who say *I personally* dislike working with [python/java/C#] because *I* [don't like white space / have to repeat too much code / find having so many files messy]

    The people in the former often read the latter and get very emotional and feel personally attacked by this eg. "[PYTHON IS BEAUTIFUL IT SAYS SO/ I NEVER REPEAT CODE/ IM NOT MESSY] YOUR USING IT WRONG NOOB".

    Frankly it doesn't matter. Form your own opinions.
  • 2
    Is it hatred though? There are lot of reasons to dislike Python (many covered in this thread and the one linked by @Xoka), so while many of them apply as reasons to me disliking it, whitespace is not one (I like F#, after all). But I think the main reasons I personally have recently spoken against Python is both because it is such an overrated language (not a bad language, and definitely has it's use cases), and - by no fault of the language itself - it's the first language to learn for many new programmers, and due to how different as a language it is compared to pretty much anything else anyone of those fledgling devs are likely to try their hands at next, I've observed them struggle confused much more than they should (some end up sticking to Python and hating all else vocally, and I think those people are the main reason I'm vocal about my dislike of Python)... it's a good tool to have in your toolset, but not the first one you should learn.
  • 2
    This is just my personal opinion but the reason I don't like python is because of the community.

    Sure they are a lot of library but I don't like the naming inconsistency among them.

    The another reason I don't like is that I have to remember which value to put in which parameter. I mean some function which accept only predefined value for the parameter.

    It seem like it can be solved by "Enum" but I don't see many people using "Enum".

    I also feel that python force you to just look at "documentation". I have no problem with reading "documentation" but mostly I can't guess what the function does and need to read "documentation".

    I don't like it when I have to refactor python code. When I refactor the outer "if" statement , I have to go and fix the white space. Copying and pasting code something help but it's a pain to refactor in python.
  • 1
    I am not complaining much but due to lack of type system, the python cannot figure out if the class' function is removed (due to refactoring) so it break in runtime.
  • 4
    Python is OK for quick and dirty throw-away shit, but not for long-term projects. It's not just the Python2 to Python3 problem - they even introduce breaking changes in minor releases, just take a look at the change notes.

    This creates a dependency of your code to a certain Python version. Now if you have several project parts from different people, this creates a whole new setup and dependency hell.

    It's like building a city on quick sand.
  • 3
    I passionately hate languages which actively prevent easy typo detection by removing declarations.
  • 1
    Python is the most readable general purpose language i ever saw.
    It is great for building tools and small to medium sized projects.

    It is dynamically typed and duck-typing-centric though. So the interpreter does not help you finding bugs.
    But if you use type annotations (and you should), PyCharm will do the static analysis instead.

    It has an enourmous standard library featuring a somewhat consistent naming scheme and the best documentation i ever saw.

    It sadly lacks any functional features besides higher level functions (every modern language has that now).
    It uses significant whitespace (wich i like, because i correctly indent my code anyway).
    Its approach to objects and classes may be seen as odd by some (but it still is more conservative than JavaScript).

    It isn't stable!

    That is a major drawback for most.
    But in the past since Python 3, that was only an issue for fully unmaintained projects.
  • 1
    @EternalStudent what's that strict oop that python dies not confirm to?
  • 0
    I always wondered what it woukd be like to have a language that opens a block with a colon and closes it with a senicolon.

    its not whitespace based, but it retains most of the visual clarity of a language that is, without adding a big clunky "end" keyword all over the place.

    while True:
    //do some stuff
    for x in y:
    //more stuff

    and less visual noise than nested curly braces.

    yea or nay. if so, why.

    also it reserves curly braces for another data type, like maps, instead of reusing it and introducing another exception to learn.
  • 1
    @Wisecrack I'd argue it is as noizy as braces.
  • 1
    Quite new to Python 2 and 3 here, and probably just gonna use it temporarily to complete Google's Foobar challenges, to then ditch it again. So my thoughts of it are pretty much first impressions.

    I don't mind the language, it's cleaner than bash, particularly in its math expressions (which Foobar seems to be heavily focusing on). However the documentation online is now separated between 2 and 3, which are similar but definitely not the same. It's annoying to be required to always think about which version of Python this or that answer online covers. Also, it is so entry-level that there's a ton of garbage out there for it.

    Of course there's also the community. Call me a racist but many Indian Python "developers" should seriously reconsider their career choices. These are often not proper developers.

    Or just poor implementations. My Telegram userbot has a .dig module in it that somehow managed to fuck up the interpretation of just about every DNS record type you give it, except A.
Add Comment