• sugar_in_your_tea@sh.itjust.works
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    11 hours 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.