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.
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…
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.
Honestly, I prefer C to Java, it’s incredibly simple without all the BS that Java throws at you:
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:
I use:
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.
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
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…