Greentext
This is a place to share greentexts and witness the confounding life of Anon. If you're new to the Greentext community, think of it as a sort of zoo with Anon as the main attraction.
Be warned:
- Anon is often crazy.
- Anon is often depressed.
- Anon frequently shares thoughts that are immature, offensive, or incomprehensible.
If you find yourself getting angry (or god forbid, agreeing) with something Anon has said, you might be doing it wrong.
My inner mathematician respects Java. The first step in any problem is defining your universe
Forgot the JVM eating the entire machine's RAM for breakfast
JVM is like a gas. It expands to fit it's container, however large that is.
Hello World
30 minutes of boilerplate
writing imports
$ cat <<EOF > Hello.java
public class Hello {
public static void main(String args[]) {
System.out.println("Hello world!");
}
}
EOF
$ java Hello.java
Hello world!
ok
Python:
print("Hello world!")
C:
#include <stdio.h>
int main() {
printf("Hello World!");
return(0);
}
EDIT: POSIX-compatible shell:
echo "Hello World!"
Python2 is only one character longer:
print "Hello world!"
And you get proper data types too.
Shell is only meant for duct tape scripts, you know to tie two regular compiled programs together
This is getting a little better nowadays.
> cat Hello.java
void main() {
System.out.println("Hello, World!");
}
> java --enable-preview Hello.java
Hello, World!
Things to notice:
- No compilation step.
- No class declaration.
- Main method is not
public static
- No
String[] args
.
This still uses preview features though. However, like you demonstrated already, compilation is no longer a required step for simplistic programs like this.
Microsoft Java is a one-liner these days.
> cat program.cs
Console.WriteLine("Hello, World!");
> dotnet run
Hello, World!
Welcome to java, we have a couple unconventional ways of doing things, but overall I'm like every other mainstream oo language.
People: AHH! Scary!
Welcome to python. your knowledge of me wont help you elsewhere as my syntax is purposefully obtuse and unique. Forget about semicolons, one missed space and your code is as worthless as you after learning this language.
People: Hello based department
**kwargs
"No, I don't use type annotations because they don't actually do anything. In fact I purposefully give this parameter different types for different behaviors. How is that confusing?"
Oh my god I got fucked by a python script once because of a single space. It took forever to figure out what went wrong
I got the impression they skipped the hello world cause it was too easy and they wanted to get right to writing their app, so they moved on to more advanced stuff without having a real grasp of the basics
I still think Java is good for teaching newbies precisely because it will throw an error quickly if they are doing it wrong.
Rust over there like
Hey kid, tired of putting off your problems?
So will pretty much anything except JS.
Arguably there’s Typescript now, too.
So will so many better languages, more so actually.
Java is terrible and I hated it but I feel like this stuff is not why, this mostly just seems like stuff that most powerful object oriented languages do.
Java is amazing and I love it, and I agree that this is not really a good list of problems. (Not that I expect green texts to be well thought out, rational, real, fair, or anything other than hyperbolic rants lol.) There are good reasons to critique it and the ways people use it, but this isn't it.
Particularly funny is the one about race conditions. That's something you'd have to deal with in any sort of multi threaded environment.
Maybe they got confused and assumed it would run on a different cpu? Is there another language that does it that way? No, now I'm confusing myself.
Could be worse, could be programming Javascript (or Typescript).
I love javascript. Shit. Just. Works.
Even if you, the programmer, are a complete fucking moron, by god javascript will try to make your program run as long as possible.
An text file with a block and nothing else, containing a console log, is all you need. You already have all the boilerplate to run it in any computer. No extra dependencies, no installing anything. Literally just a notes editor app. This is a valid HTML file:
<script>
console.log("Hello World")
</script>
I think you forgot to pollyfill your console.log and now you have some error in some script in some callback
Must be several years old - otherwise, javafx deserves quite a bit more ire.
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.
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
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.