• nous@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Overall I agree with what the author says, though I have a few further thoughts:

    One might argue that writing types are time consuming, and the bugs are not an issue when programmer can cover those cases with automated tests.

    These two arguments contradict each other and together are an argument for static typing, not against. Which just shows how weak these arguments are.

    but a more powerful type of inference that can actually infer the whole type of a function by analyzing the body of the function.

    This bit I am not convinced by. Inferring the API of a function from its body makes it harder to see breaking changes when you refactor the body. It can be useful for internal private helpers, but IMO public APIs should be explicit about their signature.

    Functional Programming

    I would go one step further here. It should support OOP and procedural paradigms as well. No single programming paradigm is best suited to all problems. Sometimes a mixed approach is best. Any language that heavily leans oneway at the expense of the others limits itself to the problems it can best solve. I do admit the far too many languages lean too much towards OOP at the expense of functional style.

    So it is easy to push for a functional style over OOP in new languages. But I would be weary of purely functional language as well.

  • Valmond@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 year ago

    Python is basically (IMO) C/C++ made easy.

    Billions of libraries, works on even obscure hardware, simple syntax, no compiling(it’s behinde the scene and just like always works) or linking etc. etc. etc.

    Edit: this implies that C/C++ is the best language ever of course. Let the flame wars begin!

    • philm@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      Wow I pretty much disagree with everything you said haha. E.g. packaging/venv in python is absolute hell compared to something like cargo/crates in Rust. Try to manage a large project in python and you’ll likely revise your answer (if you actually know all the nice alternatives out there…)

      • valence_engineer@programming.dev
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        In my experience managing a large project comes down to having a consistent process/standards and enough experienced engineers in that language. Remove that and every single language leads to abominations.

        • philm@programming.dev
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          I agree, that having a consistent process and good engineers is definitely most important, but a language itself definitely can guide you in the right direction. I think ironically Rust and C++ are good vice versa examples (unrelated to their target area, which happens to be the same (systems programming)), C++ has zillion ways to program in, finding the right and best way is definitely no easy task and requires massive experience in all kinds of paradigms, while Rust generally promotes you to do things in one/the “right” (IMHO) way, otherwise the borrow-checker annoys you all the time.

  • JackbyDev@programming.dev
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    With regards to immutability and pure functions, I don’t really care where the language falls on the scale the author defined so long as there is a way to easily express deeply immutable objects and pure functions. There are a ton of benefits of those two things and a lot of optimizations and assumptions that can be made with them. So I don’t really care if everything is immutable by default but just being able to tell the compiler/runtime “Hey listen, this thing won’t change ever, got it? So go crazy with passing it to threads and stuff” or “This function will 100% definitely return the same value if given the same input so if it takes a long time you can cache the result if you’re able to.” both seem very appealing.

    • abhibeckert@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      arrow-down
      1
      ·
      1 year ago

      Hey listen, this thing won’t change ever, got it? So go crazy with passing it to threads and stuff

      I don’t really care about that - none of the code I write is compute bound anyway. The CPU is generally twiddling it’s thumbs idle for millions of cycles with occasional brief moments of activity when the SSD finally responds to the read operation that was requested an eternity ago. Or worse, it might be waiting on a network request.

      I want immutability so I can, for example, make a copy of it and know my copy will always be the same as the original. In other words I want to be able to do my own caching/etc (possibly to avoid SSD access).