From e2cc0119ad12ca4b95997bb441b2cae953190835 Mon Sep 17 00:00:00 2001 From: Araozu Date: Fri, 26 Jul 2024 11:23:28 -0500 Subject: [PATCH] Add blog post (en) --- public/img/blog/en/langs/cover.jpg | Bin 0 -> 25545 bytes public/img/blog/en/langs/sparks_joy.jpg | Bin 0 -> 32318 bytes src/pages/blog/en/java-and-rust.md | 323 ++++++++++++++++++++++++ 3 files changed, 323 insertions(+) create mode 100644 public/img/blog/en/langs/cover.jpg create mode 100644 public/img/blog/en/langs/sparks_joy.jpg create mode 100644 src/pages/blog/en/java-and-rust.md diff --git a/public/img/blog/en/langs/cover.jpg b/public/img/blog/en/langs/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..55ffd45945ae496c1329d455f8849116e6d7e853 GIT binary patch literal 25545 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 YNj78GEBYT|)BguA{$D#L{`>p?13gtiQUCw| literal 0 HcmV?d00001 diff --git a/public/img/blog/en/langs/sparks_joy.jpg b/public/img/blog/en/langs/sparks_joy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..248f628b045ea9846baad6bbe051018153ccb139 GIT binary patch literal 32318 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 X{uX_MU)M;&KaVLBG%Anu$L#+BgG;$^ literal 0 HcmV?d00001 diff --git a/src/pages/blog/en/java-and-rust.md b/src/pages/blog/en/java-and-rust.md new file mode 100644 index 0000000..5f538ae --- /dev/null +++ b/src/pages/blog/en/java-and-rust.md @@ -0,0 +1,323 @@ +--- +layout: ../../../layouts/BlogLayout.astro +title: Rust candy and Java vegetables +description: | + I diskile Java/Go's verbosity. I like Rust/Zig + syntax sugar and semantics. +pubDate: "2024-07-26" +tags: ["tech", "languajes", "java", "rust", "go", "verbosity"] +image: + url: "/img/blog/en/langs/cover.jpg" + alt: "Image of a kid eating sweets and other eating vegetables." + caption: "Images from Irasutoya." +--- + +These may sound like first world problems, but I dislike working +with Java. The main reason: syntax, verbosity, semantics. + +See, in rust I can just do `Some(value)` and wherever I see +the `Option` signature, I know that a value can be null. + +Meanwhile in Java you can't tell. You just can't. Everything +can be null. You either go read the friendly manual +or get a `NullPointerException`. There is no in-between when +encountering an API for the first time. + +And the pattern continues everywhere. + + +## Errors + + +So what if I want to signal that a function may return an error? +In Rust I just return `Result` and +use pattern matching or bubble up the error. + +```rust +fn next_token(chars: Vec) -> Result { + // Bubble up the error easily + let next_token = possibly_errors(chars)?; + + // Handle the error, return a different error + // or recover + let next_token = match possibly_errors(chars) { + Ok(t) => t, + Error(Error::EOF) => Token::EOF, + Error(e) => return e, + }; + + // continue... +} +``` + +I can see just from the function signature that it may fail, which +error cases there are, and it's easy to handle or bubble. + + +So what about Java? Well, it depends. + +If we are using checked exceptions (all my homies hate checked exceptions) +(we don't use checked exceptions) we can see all the `throws` in the +signature and the compiler enforces proper handling of those. + +So, how do we bubble up the exception? + +```java +protected Token nextToken(ArrayList chars) + throws EndOfFileException, LexException +{ + // Bubble up + Token nextToken; + try { + nextToken = possiblyThrows(chars); + } catch (Exception e) { + throw e; + } + + + // Handle the error, return a different error + // or recover + Token nextToken; + try { + nextToken = possiblyThrows(chars); + } catch (EndOfFileException e) { + nextToken = new Token::EOF(); + } catch (LexException e) { + throw e; + } + + // continue... +} +``` + +It's slow to write and think about. It breaks the flow of +programming. I've just come up with the solution to the +problem I'm having and I'm writing as fast as I can, and +then I'm hit with a wall of verbosity. I've lost momentum. +The excitement of programming is gone. All that remains +is boring, repetitive keywords and operators. + +And that's the optimistic case. Because nobody writes code +like above. Everybody wraps everything in a giant try-catch. +Context is lost. Flow is lost. + +And even worse, nobody likes nor uses checked exceptions. +Java programmers will tell you that checked exceptions are +bad. Just Google "java checked vs unchecked exceptions". + +So what really happens is you write your code, and because +everybody uses `RuntimeException` you don't get an error +in your editor because you are calling something that may +fail. You just let it break. + +```java +protected Token nextToken(ArrayList chars) + throws RuntimeException +{ + // No errors detected, YOLO + Token nextToken = possiblyThrows(chars); + + // continue... +} +``` + +Then your program blows up at runtime, and you have +to read a 10 page long stack trace to find where it +chrashed and why. + +See, you need "discipline" and "good practices" to write +effective Java code. The compiler can't enforce those, +what are you talking about? And what if, as a human +being, you forget to add the boilerplate once, and your +program blows up in testing? Skill issue. Just wrap +`main()` in a giant try-catch. + +So, what other candy does Rust offer that is too +1000 iq for us mortals below the Rust wizards? + + +## Proper flow control + +Say I want to assing a value to a variable if some +condition is met. + +```java +Type variable = (condition)? value1 : value2; +``` + +Now what if I want to operate on `value1` +before assigning it? + +```java +Type variable; +if (condition) { + // operations with `value1` + variable = value1; +} else { + variable = value2; +} +``` + +What if I have multiple conditions? + +```java +String result; +switch (someValue) { + case "A": { + // other things + result = "a"; + break; + } + case "B": { + // other things + result = "b"; + break; + } +} +``` + +Oops, I forgot `default`. Now I have a null pointer +going around, breaking things. Luckily I didn't +forget to scope all cases and use `break` tho. +The compiler doesn't care. It's a skill issue. + +And Rust? + +```rust +// Conditionals are expressions +let variable = if condition { + // operations with value1 + value1 +} else { + value2 +}; + +// Pattern matching +let result: String = match some_value { + "A" => { + // other things + "a" + } + "B" => { + // Other things + "b" + } +}; +``` + +Dang. I forgot the default case again. +The compiler will yell at me, tell me that +I'm missing a case. It will not compile until +the code is covered. + +And later on, if I add some new cases, the code +will break again if I don't handle those new cases +everywhere. Java would silently fail and let my +program crash at runtime. + + +## The small things + +There are a lot of small things that Rust do that Java +doesn't. + +- Sum types +- Pattern matching +- Conditionals as expressions +- Proper type inference +- Blocks of code as expressions +- Immutability +- Borrow checking +- Traits and structs +- Hygienic macros +- #\[derive] auto implementation +- Cargo +- Crates +- rust analyzer +- Documentation comments +- Different syntax for values and pointers +- Unsafe when neccesary + +All those things add up to create a good experience +when programming. All those clear obstacles when +programming. + +And a lot can be said about every one of these, +but I think you get the point. + + +## Skill issue detected!!!1!1!! + +**SKILL ISSUE** is a good meme, but really it doesn't make +any sense anywhere when used unironically. Because when +taken to it's logical conclusion we should all be living +in the caverns bangings rocks for fun. + +A Java dev will say: Oh, you can't write boilerplate +and check every place it may fail? Skill issue. + +Then a C++ dev will say: Oh, you can't write code +for different platforms at the same time? Skill issue. + +Then a C dev will say: Oh, you can't write code without +your little classes and templates? Skill issue. + +Then an assembly dev will say: Oh, you can't write +instructions for every instruction set and need +portability? Skill issue. + +Then an machine code dev will say: Oh, you can't just +memorize every instruction and need little mnemonics? +Skill issue. + +Then a punchcard machine operator will say: Oh, you can't +just write your program first try without making any +mistake? Skill issue. + +Then an oficinist will say: Oh, you can't just do all the +calculations on paper and need a machine to do them +for you? Skill issue. + +Then a farmer will say: Oh, you can't just keep track of all +your assets and do the calculations in your head? Skill issue. + +Then a gatherer will say: Oh, you can't just gather the food +you need and leave the soil do its thing? Skill issue. + +Then a caveman will say: Oh, you can't just outchase a leopardd +and kill a deer for food? Skill issue. + +And so on until all we do is survive for the sake of it. +Improvements people, we all crave them yet ridiculize them +if they don't belong to our camp. + + +## If Java is like vegetables, then Java is good? + +Yes if by good you mean you can pay the bills. + + + +## The joy of programming + +![Rust sparks joy, Java doesn't spark joy](/img/blog/en/langs/sparks_joy.jpg) + +It's been said a lot of times by a lot of people. Programming +is about solving problems, not about writing little +colored words. And if your motivation for writing code is +money, sure, this doesn't matter to you at all. You'd do +whatever it takes to make money, and that's okay. + +But if your motivation is the satisfaction you get from +solving problems, Java and it's verbosity gets in the +way. Unnecesarily slows things down. Breaks the flow. +Turns the joy of solving problems into writing +little colored words half the time. + +Rust is by no means perfect. It has many issues. But +when learned it allows you to write code at the speed +of your thougths, and does it so in a safe way, +upfront, no surprises. + + +