• Ephera
    link
    fedilink
    3211 months ago

    This one’s a hot take, but: That Python is easy.

    I’ve had to work with it in three projects in the past five years and I consider it one of the hardest programming languages, for anything but very short scripts.

    You don’t get proper compiler assistance, unless you have 100% test coverage. You don’t get a helpful text editor. You don’t usually get helpful type hints in libraries you use, so you have to genuinely just study the documentation and/or code. You get tons of quirky behavior in the stdlib, build tools, async stack, imports. You get breaking changes in minor versions of the language.

    I find writing code in Python extremely mentally taxing, because you just get so little assistance, that you have to think of everything yourself.

    • AggressivelyPassive
      link
      fedilink
      2111 months ago

      Dynamically typed languages all suffer that fate. There’s a reason Typescript literally has that feature in its name.

      What does help though is type hinting. You “just” have to enforce it and its fallout in your entire codebase.

      • Ephera
        link
        fedilink
        1211 months ago

        Yeah, we invested a lot of time into type hinting and checking, but mypy would never exit without warnings and errors, because many libraries we were using had no type hints.
        It was also just exhausting/cumbersome, having to write type hints everywhere, as there’s no type inference.

        But yeah, we always joked that someone should create TypeScript for Python – Typhon.

        • @abhibeckert
          link
          3
          edit-2
          11 months ago

          Part of the investment has to be only using libraries that have type hints.

          But yeah - I definitely prefer strongly typed languages. Or at least languages like Swift where you have to jump through a few hoops to have a dynamic type (in Swift there is an “Any” type but you have to write a bunch of code checking what the variable contains before you can actually worth with it). Basically you have to convert it to a static typed variable before it can be touched. Thankfully there’s pretty good syntax for that. Including an arbitrary way to convert almost anything to a string (essential for debugging).

    • Rimu
      link
      fedilink
      7
      edit-2
      11 months ago

      Try the PyCharm IDE. It’s really smart and helpful. The free ‘community edition’ is fine.

      • Ephera
        link
        fedilink
        15
        edit-2
        11 months ago

        I’m sorry to say this, but PyCharm is precisely what we were using. I do consider it the best Python editor, but it’s several classes below IntelliJ for Java/Scala/Kotlin or even the extremely new RustRover for, well, Rust. And I’d say roughly at the level of KATE (a non-smart text editor) with just the rust-analyzer language server hooked up.

        It is extremely impressive what PyCharm manages to analyze in Python, but other languages offer similarly good tooling out of the box, or make such analysis much easier by having static types.

    • @[email protected]
      link
      fedilink
      611 months ago

      I don’t know if i qualify as a full programmer, I’m an actuarie but 90% of my work is in python, 5% SQL and 5% excel. I love python because is flexible as fuck, I can connect to the SQL server, send the queries to a pd.DataFrame, process the information, scrap some webpage for adicional information needed, and finally export to an excel file that the accounting team can use. I don’t write fully functional programs, but small specific scripts for different tasks. R is another popular programming language between actuaries and statisticians, but I haven’t find anything that R can do, that I can’t in python.

      • @[email protected]
        link
        fedilink
        7
        edit-2
        11 months ago

        I don’t write fully functional programs, but small specific scripts for different tasks.

        This is exactly why your experience is different and you like Python better than many others. You are using Python as it was meant to be used and where it excels; for small scripts.

        When people say they don’t like Python they mean that Python does a really, really bad job when it comes to larger systems. Static analysis becomes exponentially more important in larger systems and Python has basically 0 of that.

        But as long as you stick to relatively small stuff (less than a few thousand lines), Python is pretty nice and fast to develop in.

        • @[email protected]
          link
          fedilink
          311 months ago

          So you are saying using python to write the server for a federated multimedia messenger is a bad idea.

          Let me tell you, I’m shocked😲

        • anti-idpol action
          link
          fedilink
          211 months ago

          also just plain readability. Indentation-based scoping is horrible for larger codebases. Maybe if it was a purely-functional language like Haskell where this sort of scoping works better and all effects are tightly contained. But most larger codebases tend to use python in OO way and that can get messy pretty quickly. Damn, if python had a piping operator like elixir that’d be of a lot of help, actually. Plus there is so much legacy code in a language that had e.g. ternaries long before adding something seemingly so fundamental as switch-case.

      • @Feathercrown
        link
        English
        211 months ago

        I’d say if you program then you’re a programmer. What you’re thinking of is more of a software engineer, ie. someone who architects and creates software.

    • @aluminium
      link
      611 months ago

      Agree, also just in general I find many things Python very odd and syntactically isolated to some extent. Constructors, lamba, dictionaries in particular are extremly whack.

    • @[email protected]
      link
      fedilink
      211 months ago

      I’m a scientist that has been coding almost exclusively in Python for the past decade and I strongly disagree.

      Python is great at being the glue that holds everything together, and everything crunchy part of the program is being handled by a library anyways.

      I code with two terminals, one for iPython and one for vim. And you don’t need anything else. The beauty of Python is that it’s not a language that is so full of boilerplate that you need an IDE to type it for you to be remotely productive.

      Overall, Python is a language made to be used by people that need to make something that just works and don’t need to spend years learning programming paradigms and industry practices. Fortran and C are so unwieldy in comparison and everything more modern lacks the expansive and diverse libraries of Python.

      • @Feathercrown
        link
        English
        5
        edit-2
        11 months ago

        Overall, Python is a language made to be used by people that need to make something that just works

        This is why you find it easy, and why the person you replied to finds it a big pain. The friction other languages would give you exists to provide structure on a larger scale that makes that guy’s work easier. Like you implied, different languages for different jobs.