• Zement@feddit.nl
    link
    fedilink
    arrow-up
    14
    arrow-down
    1
    ·
    7 days ago

    I really enjoyed the text.

    From the perspective of a python programmer it all seems valid.

    A Java-Dev would probably write the same about an embedded engineer.

    • MajorasMaskForever@lemmy.world
      link
      fedilink
      English
      arrow-up
      6
      ·
      7 days ago

      As embedded dev, the stack trace alone scares me. It would be funny to watch the Java runtime blow the 8 frame deep stack on a PIC18 tho

    • sugar_in_your_tea@sh.itjust.works
      link
      fedilink
      arrow-up
      4
      ·
      edit-2
      7 days ago

      Honestly, I prefer C to Java, it’s incredibly simple without all the BS that Java throws at you:

      • interfaces - compiler will fail if you provide the wrong types; w/ Java, figuring out what types to pass is an effort unto itself
      • functions - everything needs to be in a class; even callback functions are wrapped in a class (behind the scenes if you use modern Java); in C, you just pass a function
      • performance - Java uses a stop the world GC, which can cause issues if you have enough data churn; in C, you decide when/if you want to allocate or free memory, no surprises

      There are certainly some bad parts, but all in all, when I run into an issue in C, I know it’s my fault, whereas in Java, there are a million reasons why my assumptions could be considered valid, and I have to dig around the docs to find that one sentence that tells me where I went wrong w/ the stuff I chose.

      That said, I prefer Rust to both because:

      • get fancy stack traces like I do in Java (I really miss stack traces in C)
      • compiler catches most of my stupid mistakes, Java will just throw exceptions
      • still no stupid interface hell, I just satisfy a specific trait and we’re good
      • generally pretty concise for what it is; I can rarely point to a piece of syntax and say it’s unnecessary

      I use:

      • Python - scripting and small projects
      • Rust - serious projects or things that need to be fast
      • Go - relatively simple IO-heavy projects that need to be pretty fast
      • C - embedded stuff where I don’t want to mess w/ the Rust toolchain

      Java has been absent from my toolbox for well over a decade, and I actively avoid it to this day because it causes me to break out in hives.

      • NakedGardenGnome@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        1
        ·
        6 days ago

        For over a decade?

        In the last decade java finally is starting to catch up! The latest java releases have finally given us the ability to pass through a function, and work more functional.

        And you can choose any GC you want, even less “stop the world” ones, but who got the time to figure out which GC they actually want… The memory allocation from C is what haunts my dreams more than the GC from java.

        Still, I really want to give Rust a look, if only I gave myself enough time.

        • sugar_in_your_tea@sh.itjust.works
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          6 days ago

          The latest java releases have finally given us the ability to pass through a function, and work more functional.

          Which AFAIK is still a class under the hood. That doesn’t particularly matter for developers, but it’s still odd.

          But honestly, if I’m going to use anything on the JVM, I’ll just use Kotlin. Java is kind of catching up, but Kotlin is just so much cleaner IMO. But if I’m not stuck w/ the JVM, I’ll use one of the others I mentioned.

          The memory allocation from C

          Eh, it’s honestly not so bad, provided you’re using it for the type of work where C is suited. For most embedded work, I just pass on the stack (esp. w/ the new variable length arrays on the stack, which C++ doesn’t have), so no need to malloc() or free() most of the time. If I’m building a larger program, I’ll probably not use C, because it just doesn’t have the features I want for larger-scale development work, and I definitely won’t use C++ because that’s a nightmare of conflicting legacy features.

          Rust is my go-to if I know it’ll be large-ish and I don’t have any particular restraints on where it’s going to run (i.e. not on a microcontroller or something). The compiler catches a lot of my bugs, the result is fast, and now that I’m comfortable with it, I’m pretty productive with it. It does have a bit of a learning curve, but it’s way better than when I started with it (around the 1.0 launch).

    • MooseTheDog@lemmy.world
      link
      fedilink
      arrow-up
      8
      arrow-down
      1
      ·
      7 days ago

      Sorry, you had a small error in the spacings of your post; Therefore I cannot parse a thing you’re saying. Didn’t mean to scare you with a semicolon either. It’s just a tool in language’s to end a clause and begin a related, independent clause. That could be useful somewhere…