• argv_minus_one@beehaw.org
    link
    fedilink
    arrow-up
    6
    ·
    2 years ago

    Dynamic typing is insane. You have to keep track of the type of absolutely everything, in your head. It’s like the assembly of type systems, except it makes your program slower instead of faster.

    • Cratermaker@discuss.tchncs.de
      link
      fedilink
      arrow-up
      1
      ·
      2 years ago

      Nothing like trying to make sense of code you come across and all the function parameters have unhelpful names, are not primitive types, and have no type information whatsoever. Then you get to crawl through the entire thing to make sense of it.

  • AdmiralShat@programming.dev
    link
    fedilink
    English
    arrow-up
    5
    ·
    2 years ago

    If you don’t add comments, even rudimentary ones, or you don’t use a naming convention that accurately describes the variables or the functions, you’re a bad programmer. It doesn’t matter if you know what it does now, just wait until you need to know what it does in 6 months and you have to stop what you’re doing an decipher it.

    • lysdexic@programming.dev
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 years ago

      Python is only good for short programs

      Was Python designed with enterprise applications in mind?

      It sounds like some developers have a Python hammer and they can only envision using that hammer to drive any kind of nail, no matter how poorly.

      • hue2hri19@lemmy.sdf.org
        link
        fedilink
        arrow-up
        0
        ·
        2 years ago

        I mean, it’s still a very nice language. I can see someone, marveled by that, would endeavor to make bigger things with it. I just don’t feel it scales that well.

        • lysdexic@programming.dev
          link
          fedilink
          English
          arrow-up
          0
          ·
          2 years ago

          I agree. The GIL and packaging woes are a good indication that it’s range of applications isn’t as extensive as other tech stacks.

          • scubbo@lemmy.ml
            link
            fedilink
            arrow-up
            0
            ·
            2 years ago

            packaging woes

            My own hot take is that I hear this criticism of Python a lot, but have never had anyone actually back it up when I ask for more details. And I will be very surprised to hear that it’s a worse situation than Java/TypeScript’s.

            • r1veRRR@feddit.de
              link
              fedilink
              arrow-up
              0
              ·
              2 years ago

              We used to have a Python guy at my work. For a lot of LITTLE ETL stuff he created Python projects. In two projects I’ve had to fix up now, he used different tooling. Both those toolings have failed me (Poetry, Conda). I ended up using our CI/CD pipeline code to run my local stuff, because I could not get those things to work.

              For comparison, it took me roughly zero seconds to start working on an old Go project.

              Python was built in an era where space was expensive and it was only used for small, universal scripts. In that context, having all packages be “system-wide” made sense. All the virtual env shenanigans won’t ever fix that.

              • scubbo@lemmy.ml
                link
                fedilink
                arrow-up
                1
                ·
                2 years ago

                In that context, having all packages be “system-wide” made sense. All the virtual env shenanigans won’t ever fix that.

                Sorry, but you’ll need to explain this a little bit more to me. That’s precisely what virtual env shenanigans do - make it so that your environment isn’t referencing the system-wide packages. I can totally see that it’s a problem if your virtual env tooling fails to work as expected and you can’t activate your environment (FWIW, simply old python -m venv venv; source venv/bin/activate has never let me down in ~10 years of professional programming, but I do believe you when you say that Poetry and Conda have broken on you); but assuming that the tools work, the problem you’ve described completely goes away.

    • NBJack@reddthat.com
      link
      fedilink
      arrow-up
      1
      ·
      2 years ago

      Python should not be used for production environments, or anything facing the user directly. You are only inviting pain and suffering.

      • hue2hri19@lemmy.sdf.org
        link
        fedilink
        arrow-up
        1
        ·
        2 years ago

        I don’t mean it doesn’t work for larger projects. Just that it’s a pain to understand other’s code when you have almost no type information, making it, to me, a no go for that

        • fhoekstra@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          2 years ago

          Larger projects in Python (like homeassistant) tend to use type-hints and enforce them through linters. Essentially, these linters (with a well-setup IDE) turn programming in large Python projects into a very similar experience to programming a statically typed language, except that Python does not need to be compiled (and type-checked) to run it. So you can still run it before you have satisfied the linters, you just can’t commit or push or whatever (depending on project setup).

          And yes, these linters and the Python type system are obviously not as good as something like a Go or Rust compiler. But then again, Python is a generalist language: it can do everything, but excels at nothing.

          • nous@programming.dev
            link
            fedilink
            English
            arrow-up
            2
            ·
            2 years ago

            Go and rust are also generalist languages. Basically all main stream programming languages are and are equally as powerful (in terms of what they can do, rather than performance) as each other as they are all Turing complete. So you can emulate c in python or python in c for instance).

            Anything you can do in python you can do in basically any other mainstream language. Python is better at some niches than others just like all other languages are with their own niches - and all can be used generally for anything. Python has a lot of libraries that can make it easier to do a large range of things than a lot of other languages - but really so do quite a few of the popular languages these days.

          • hue2hri19@lemmy.sdf.org
            link
            fedilink
            arrow-up
            1
            ·
            2 years ago

            That’s actually a good idea, enforcing it. Still, do these linters protect against misuse? E.g I have an int but place a string on it somewhere?

            • sirdorius@programming.dev
              link
              fedilink
              arrow-up
              1
              ·
              2 years ago

              Yes, in a good dev workflow mypy errors will not pass basic CI tests to get merged. Types are not really a problem in modern Python workflows, you can basically have a better type checker than Java out of the box (which can be improved with static analysis tools). The biggest problem with Python remains performance.

  • million@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    2 years ago

    Refactoring is something that should be constantly done in a code base, for every story. As soon as people get scared about changing things the codebase is on the road to being legacy.

    • NoXzema@lemmynsfw.com
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 years ago

      Been with a lot of codebases that had no unit tests at all and everyone was afraid to change anything because the QA process could take weeks to months.

      The result is you have a codebase that ages like milk.

  • Vince@feddit.de
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    2 years ago

    Not sure if these are hot takes:

    • Difficult to test == poorly designed
    • Code review is overrated and often poorly executed, most things should be checked automatically (review should still be done though)
    • Which programming language doesn’t matter (within reason), while amount of programming languages matters a lot
    • Xylight (Photon dev)@lemmy.xylight.dev
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 years ago

      I’ve been wanting to make my applications easier to test. The issue is, I don’t know what to test. Often my issues are so trivial I notice them immediately.

      What are some examples of common things in, let’s say a web server, that could be unit tested?

  • r1veRRR@feddit.de
    link
    fedilink
    arrow-up
    2
    ·
    2 years ago

    Compiler checked typing is strictly superior to dynamic typing. Any criticism of it is either ignorance, only applicable to older languages or a temporarily missing feature from the current languages.

    Using dynamic languages is understandable for a lot of language “external” reasons, just that I really feel like there’s no good argument for it.

  • MrTallyman@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    2 years ago

    My take is that no matter which language you are using, and no matter the field you work in, you will always have something to learn.

    After 4 years of professional development, I rated my knowledge of C++ at 7/10. After 8 years, I rated it 4/10. After 15 years, I can confidently say 6.5/10.

  • Masterkraft0r@discuss.tchncs.de
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    2 years ago

    As an embedded firmware guy for 10ish years:

    C can die in a fire. It’s “simplicity” hides the emergent complexity by using it as it has nearly no compile time checks for anything and nearly no potential for sensible abstraction. It’s like walking on an infinite tight rope in fog while an earth quake is happening.

    For completely different reasons: The same is true for C++ but to a far lesser extent.

  • bidenicecream [none/use name]@hexbear.net
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 years ago

    Computer hardware has been getting faster and faster for decades at this point, but my computer still slows down. Like WTF. The dumbass programmers take the extra power given to them and squander it instead of optimizing their code. Microsoft word could run pretty well on a windows 98 PC, but the new Word can slow down PCs that are 5-10 years old. Programmers are complete idiots sometimes…

  • lysdexic@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 years ago

    Duplicate code can be a code smell, but it’s far better to have the same function definition or code block appear twice in the code than extracting a function that tightly couples two components that should not be coupled at all.

    See Write Everything Twice (WET) principle.

  • pelotron@midwest.social
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 years ago

    Carbon? Just what we were all hoping for, yet another programming language from Google. They can keep it.

  • OADINC@feddit.nl
    link
    fedilink
    arrow-up
    1
    ·
    2 years ago

    This is the only way;

    if (condition) {
        code
    }
    

    Not

    if (condition)
    {
        code
    }
    

    Also because of my dyslexia I prefer variable & function names like this; ‘File_Acces’ I find it easier to read than ‘fileAcces’

    • alcoholicorn [comrade/them, doe/deer]@hexbear.net
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      2 years ago

      I use all 3.

      If it’s very short and there’s 2 or more in a row, I’ll put it all in one line.

      If there’s a bunch of nested if statements, I’ll use the second.

      If neither of those conditons, I’ll use the first.

    • a Kendrick fan@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      2 years ago

      I’ve only seen the second type in C#, to be fair it makes code neater but i’m glad I left it for Java.

      • icesentry@lemmy.ca
        link
        fedilink
        arrow-up
        1
        ·
        2 years ago

        How does it make code neater? All it does is add a ton of empty vertical space. It makes files arbitrarily longer at essentially no benefit.

      • Evilsandwichman [none/use name]@hexbear.net
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 years ago

        I’m not a programmer (I tried learning programming and unity but got lazy so…) but when I learned about if-then statements, the second one seemed like the way it’s supposed to be; I mean it looks so clean and simple. Do actual programmers prefer the first method?

  • gpopides@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    2 years ago

    Not everything should be beginner friendly. Trying to nerf things because they are not beginner friendly should not be how tools/patterns of languages are designed.

    Its ok to have more advanced topic that require more knowledge and that people don’t understand from the first moment they see them.