• flatbield@beehaw.org
        link
        fedilink
        English
        arrow-up
        3
        arrow-down
        1
        ·
        15 hours ago

        You can write Python code about 5x faster then C. Add libraries even faster.

          • flatbield@beehaw.org
            link
            fedilink
            English
            arrow-up
            1
            ·
            5 hours ago

            Go might be a close 2nd language wise but not the others. All of the above have a pretty narrow application range too. Even with a good lamguage, you would have to have the libraries too and pypi is pretty big.

      • masterspace@lemmy.ca
        link
        fedilink
        English
        arrow-up
        4
        arrow-down
        4
        ·
        edit-2
        15 hours ago

        Lazy is an overly harsh and judgemental way to put it (virtually all programmers start with some high level simplified language), but the sentiment arises because it’s syntax is designed to be easy for people writing code, but at the cost of people maintaining code.

        The whitespace delimiters, the lack of type system, the lack of semi-colons … They’re all things that people who haven’t programmed before think make programming easier. In reality they all make in the wild production programs waaay harder to maintain.

        There’s a reason that JavaScript has been surpassed by TypeScript for professional developers, and it did so remarkably quickly. All that ‘extra’ information that seems pointless for a new dev to express, in reality constrains your program, makes it more readable and understandable, reduces the amount of tests you have to write, and makes it easier for someone else to come in and make a change to it and be confident they haven’t broken anything.

        • namingthingsiseasy@programming.devOP
          link
          fedilink
          arrow-up
          2
          ·
          15 hours ago

          Python’s type system is dramatically better than Javascript’s though. Try doing things like '' + True and Javascript will do incredibly stupid things. Python will just give you a type error. Also, look at things like == vs === in Javascript as well. That’s the biggest reason why Typescript replaced it overnight. Python has found a better balance between productivity and error safety.

          In my opinion, the biggest shortcoming of Python’s dynamic typing system is that you need to have very thorough test coverage to be sure that your code doesn’t have semantic errors (a lot more than, say, Java). It has gotten better with the introduction of type hints, those I don’t have much experience with them, so I can’t say how much.

          • Feyd@programming.dev
            link
            fedilink
            arrow-up
            2
            ·
            14 hours ago

            In my opinion, the biggest shortcoming of Python’s dynamic typing system is that you need to have very thorough test coverage to be sure that your code doesn’t have semantic errors

            That is a large shortcoming.

            • namingthingsiseasy@programming.devOP
              link
              fedilink
              arrow-up
              2
              arrow-down
              1
              ·
              14 hours ago

              Sure, but as with all things, it can depend on a lot of factors. All code needs some degree of testing, though one could certainly argue that Python needs more than Java and Java needs more than Rust/Haskell/etc. So you could argue that the productivity gain of using Python is offset by the productivity loss of extra testing. It’s still hard to say which one wins out in the end.

              • Feyd@programming.dev
                link
                fedilink
                arrow-up
                4
                ·
                14 hours ago

                People underestimate the cost of testing.

                1. It has to actually happen to be effective and is something that can be dropped under time pressure where something built into the language cannot.
                2. Test code is also code that is not guaranteed to be correct, and also incurs it’s own maintenance tolls

                Removing the need for entire classes of tests cases is a huge win

    • Solemarc@lemmy.world
      link
      fedilink
      arrow-up
      2
      arrow-down
      1
      ·
      15 hours ago

      Nah, I recently had to create a program that turned a bunch of extracted CSV files into an XML file for government reporting. I also had to parse some provided government XML files to add things into my output.

      This was going to be run by non-technical people on any OS so I went for python because “install python, download this file and click on it” was easy. Python has a big standard library so I could do everything I needed in it. I was considering using Go but asking people to open the terminal and build something was probably a bridge too far.

      • esa@discuss.tchncs.de
        link
        fedilink
        arrow-up
        8
        ·
        15 hours ago

        Distribution usually isn’t considered a strong point for Python, though.

        For other languages that build a static executable, the more expected method of distribution would be some automated workflow that builds artifacts for various os/architecture-triplets, that you can then just download off the project page.

        • namingthingsiseasy@programming.devOP
          link
          fedilink
          arrow-up
          2
          ·
          15 hours ago

          Distribution usually isn’t considered a strong point for Python, though.

          It depends. If it’s a simple script with no external dependencies, then it’s very easy to distribute. But if your application has external dependencies and you are trying to install it on your host (and you aren’t using docker or similar technologies), then yes, it’s harder than just shipping an executable or .jar file. The fact that Python’s standard library is so comprehensive helps a lot in this regard, but it only works up to a certain point.

          • tyler@programming.dev
            link
            fedilink
            arrow-up
            1
            ·
            13 hours ago

            It depends. If it’s a simple script with no external dependencies, then it’s very easy to distribute

            it really isn’t. Try distributing anything that needs openssl under the hood (which is part of Python’s stdlib). I spent years deploying Python and Ruby tools next to each other to other devs machines. Python is incredibly hard to distribute, even to the same OS across a company. I really think that most people that think “Python is easy” actually haven’t ever tried using other languages and seen how easy it is there. Even Java jars are easier to deploy than Python, both if you’re making an executable and if you’re just having the user build or run the code directly. The only thing that is even close in difficulty from all the top languages for deployment is C/C++. Everything else is vastly easier. Part of that comes from Python’s ridiculous tooling (15+ different tools at this point https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/) and part of it comes from the fact that Python chooses to bundle old or out of date versions of libraries causing conflicts in newer systems, like OpenSSL.

    • chrischryse@lemmy.world
      link
      fedilink
      arrow-up
      1
      arrow-down
      1
      ·
      15 hours ago

      I use it as a beginner cuz it’s easy to use but guess I’m lazy since I didn’t start on a language that’s more in depth