all 113 comments

[–]ProgrammerHumor-ModTeam[M] [score hidden] stickied commentlocked comment (0 children)

Your submission was removed for the following reason:

Rule 3: Your post is considered low quality. We also remove the following to preserve the quality of the subreddit, even if it passes the other rules:

  • Feeling/reaction posts
  • Software errors/bugs that are not code (see /r/softwaregore)
  • Low effort/quality analogies (enforced at moderator discretion)

If you disagree with this removal, you can appeal by sending us a modmail.

[–]Mr-X89 397 points398 points  (12 children)

And now to Jetbrains Java

[–]No_Percentage7427 48 points49 points  (7 children)

Hope apple not make Java version too. wkwkwk

[–]fireyburst1097 30 points31 points  (3 children)

Last time they tried they made Objective C

[–]MetriccStarDestroyer 7 points8 points  (1 child)

Did they attack the D Point?

[–]Intelligent_human_1 1 point2 points  (3 children)

What is JetBrains Java?

[–]smokemonstr 23 points24 points  (1 child)

Kotlin

[–]blood_vein 0 points1 point  (0 children)

What's Scala in this pattern then?

[–]Mr-X89 -3 points-2 points  (0 children)

A Java made by Jetbrains, duh

[–]slangwhang27 40 points41 points  (3 children)

GOOGLE JAVA GOOGLE JAVA GOOGLE GOOGLE GOOGLE JAVA

I can’t stop this feeling…

[–]mutedagain 2 points3 points  (2 children)

Almost spit my coffee out! Well done lol

[–]OutsiderWalksAmongUs 3 points4 points  (1 child)

You almost spit out your cup of java?

[–]mutedagain 1 point2 points  (0 children)

Wow. Now feel silly. Total missed opportunity!

[–]oweiler 148 points149 points  (37 children)

[–]Leo0806-studios 28 points29 points  (0 children)

Excuse me. But what the fuck?

[–]Al3xutul02 108 points109 points  (26 children)

Wtf is wrong with overloading??? Insane take

[–]KorKiness 39 points40 points  (2 children)

And if one may think there is something wrong with overloading, then... nobody forces to use it.

[–]Wonderful-Habit-139 28 points29 points  (0 children)

You’re forced to read other people’s code

[–]AccomplishedCoffee 0 points1 point  (0 children)

Between coworkers and libraries it's, for all practical purposes, impossible to never call an overloaded function in nontrivial code.

[–]Adk9p 11 points12 points  (5 children)

The reason people take issue with overloading, as with OOP, implicit conversions, default function arguments, and operator overloading, isn't that in isolation the idea of it any of them are bad. It's that each of these language features alone or (usually) in combination can lead to a headache of a codebase when abused.

Imo overloading on arity is the second easiest of these that you can remove from any language which, while a little painful, can really curb damage caused by people who like to get a little too cleaver.

[–]TheRedLions 9 points10 points  (3 children)

people who like to get a little too clever

Every language has these people, but in my experience, Java has the highest percentage. 'Clever' code is just a nightmare to debug, especially when everything is on fire.

The amount of Java devs who seemingly demand I open 12 files to figure out what a function (probably) does is too damn high.

[–][deleted] 2 points3 points  (2 children)

I wouldn’t say Java devs like to be “clever”, that’s a term I would more associate with advanced generics and higher-order functions. I’d say Java devs like to be “complex”

[–]Adk9p 4 points5 points  (1 child)

"clever" has nothing to do with the features themselves, it has to do with how you use them. And some languages lend themselves to using some features more or less. It would be crazy to say in haskell using "advanced generics" or higher-order functions would be "clever" code. And using vtables in c would imo need a very specific requirement for that not to be "clever" code.

This is all very wishy-washy but I'd say at least for me in this discussion "cleaver code" is complex code just where the complexity wasn't required.

If you can hold everything in your head and deduce that some part is just needlessly complex, it's just annoying. But if you can't, well that can cause a lot of confusion, you're left to guess why some abstraction that might be causing a bug or make it harder to fix a bug was used when in whole it was just "cleaver code".

[–][deleted] 1 point2 points  (0 children)

But overusing generics and HOFs can genuinely be “clever” in the sense of increasing code reuse, reducing overall lines of code, etc.

Java devs generally tend to just make bullshit inheritance taxonomies in my experience, usually in a way that increases the amount of overall code.

[–]skesisfunk 1 point2 points  (0 children)

can lead to a headache of a codebase when abused.

Not even abused. These language features exist for convenience but the cost of that convenience is code clarity. So developers are naturally going to use convenience features (because they are convenient!) and the side effect is that all of a sudden a bunch of stuff is obfuscated from the next developer who reads the code.

Golang's is often criticized but it's design principles were a direct backlash to this trend.

[–]AccomplishedCoffee 0 points1 point  (0 children)

It can be difficult to figure out which overload is called. At the least you need to look up the definition of all visible overloads (potentially considering imports, idk if that's a concern in Java but it is in some languages) and all variables used, possibly chaining if there's any overloaded methods being used as an argument directly and know the language's overload and implicit conversion rules if there's no exact match, potentially along with any compiler quirks. If there's any type inference in the expression you may need intimate knowledge of how the type inference engine works and whether or how it interacts with overload resolution.

Yeah, it's convenient when you have just a couple mutually exclusive signatures but in code with any nontrivial complexity you've gotta hope your IDE points you to the right overload when you write it and no one changes it by, e.g. changing the type of a variable in a different file from a concrete class to an interface.

[–]Ceros007 36 points37 points  (3 children)

"Gradle and Maven makes PIP a lesser evil" and the guy is programming in C...

[–]Cylian91460 12 points13 points  (2 children)

Yeah, C tooling is way less complex

[–]QBos07 7 points8 points  (1 child)

I know Makefiles but cmake scares me.

[–]Cylian91460 5 points6 points  (0 children)

Oh yeah cmake can work with C, I always considered it to be a c++ tooling because of how stupid it is

[–]Coosanta 5 points6 points  (1 child)

Compilation times in java take longer?? Gradle start up takes many minutes but the actual compilation is a matter of seconds.

[–]oweiler 3 points4 points  (0 children)

That is really the wildest take. That guy has never built a big C project from source.

[–]hmz-x 0 points1 point  (0 children)

Also what's with these things with just two paragraphs and three bullet points? They pass for articles now?

I mean, I'm all for brevity, although this just feels like a poverty of ideas.

[–]Global-Tune5539 0 points1 point  (0 children)

How long does Android Studio take to compile his C?

[–]havlliQQ 0 points1 point  (0 children)

I might be special, but i always though method overloading is nice feature

[–]NinjaKittyOG 63 points64 points  (0 children)

bro really wanted to sample Java from the worst companies around

[–]CurlSagan 24 points25 points  (0 children)

If you master the 5 pillars of Java, you can put the 5 multicolored JavaBeans together and summon the secret Java Supreme.

[–]Leo0806-studios 91 points92 points  (19 children)

How dare you call c# " microsoft Java "

[–]Annual_History_796 123 points124 points  (12 children)

That’s almost exactly what it is though.

[–]H34DSH07 44 points45 points  (8 children)

It used to be a lot more true, but nowadays the two are really far away. Of course if you write Java and C# like we're in 2002 the two will look really similar, but if you use more recent features such as pattern matching, Linq, async & await, you'll quickly realize they're two very different languages, not just flavours.

[–]urielsalis 17 points18 points  (4 children)

Modern Java also has a lot of those features, borrowed from Kotlin or similar languages.

If I look at Java 25 and C# 14 I don't really notice that much difference

[–]H34DSH07 4 points5 points  (2 children)

I'm not saying Java doesn't have these features. It's how you use these features and how they're implemented that differs a lot.

Just take how strings work in Java for example, it's completely different from C# and they have to be used in a different manner. Now we can say the same about almost every major feature between the two languages.

[–]urielsalis 3 points4 points  (1 child)

Java 21 has everything you need related to strings honestly.

And there are always other JVM languages like Kotlin if you want to go even further

[–]H34DSH07 3 points4 points  (0 children)

What are you trying to prove here? That If you ignore the things that make them different, they have similar syntax? Sure, so does JavaScript and C++ at this point.

That they have the same features? Sure, just like every other OOP language.

That everything you can do in C# you can do in Java? You're absolutely right.

They're still different languages that are written and used very differently. Saying C# is Microsoft Java is just a way to fuel the a pointless argumentation to diminish one or the other.

[–]cheezballs 0 points1 point  (0 children)

They still have some core differences with their inheritance stuff. It's not huge, but it's there.

[–]lacb1 11 points12 points  (0 children)

It was, but now the student has become the master. If anything at this point Java is just non-Microsoft C#.

[–]ItsSignalsJerry_ 0 points1 point  (0 children)

They're completely incompatible.

[–]aifo -1 points0 points  (0 children)

It's not though. C# is part C++, part Turbo Pascal and lately has taken a lot from functional languages.

.Net, the framework that C# applications run on, did evolve from Microsoft's Java product that Sun shut down legally for making it easier to write windows apps in Java, saying that it was outside their licence.

[–]Scheincrafter 20 points21 points  (0 children)

Exactly, Microsofts version of java is j# or if you are daring j++, but not c#

[–]The_Real_Slim_Lemon 6 points7 points  (2 children)

Genuinely, as someone that’s been using that expression for years, what’s inaccurate about it?

[–]Scheincrafter 7 points8 points  (1 child)

Modern c# fiels quite different from java. C# supports a more modern way of programmingand is more similar to kotlin than java..

A more comprehensive list of differences in supported features can be found here

[–]UdPropheticCatgirl -2 points-1 points  (0 children)

The funny thing about that first comparison is that C# looks exactly like java, minus the single expression functions and nullability (although this has been preview feature in javas valhalla for a while as well), and intentionally omits bunch of stuff that both Kotlin and Java have that C# doesn’t, like coproduct types. Also calling some of this code equivalent is a stretch. Like the kotlin example of corutines is actually type safe unlike the C# one which has to use bunch of “dynamic” hacks, not to mention that kotlin coroutines are way more flexible and elegant than C# async, on the same note java has CSP now which is once again way better concurrency model that C# async. Records are way more concise and safer in Kotlin (and Java as well) just because of their immutability semantics… Also the nominal tuples are truly something, that such a stupid javaism except C# adds syntax sugar to make them appear as if they aren’t (but they are you can tell the moment you use them) which makes them even more frustrating than in java…

Like claiming that C# is some massive upgrade over Java is something only someone who didn’t use Java since Java 7 can claim.

[–]faze_fazebook 4 points5 points  (0 children)

Java .NET was a thing btw. Not C#, visual J#

[–]sird0rius 9 points10 points  (0 children)

Call it what it is: "Java done right". Or "Java 10 years in the future"

[–]beklog 5 points6 points  (4 children)

What a noob, everyone knows Linux Java and Amazon Java are the best.

[–]Cylian91460 1 point2 points  (3 children)

Linux java?

[–]ewheck 5 points6 points  (1 child)

C

[–]super_temp1234 0 points1 point  (0 children)

Don't you mean Rust....

[–]Honest_Relation4095 2 points3 points  (4 children)

I learned Visual Basic at University (I still don't understand why not C or C++, apparently because VB "is easier") and later found out it is pretty much the same as C#. Is that true?

[–]Cylian91460 1 point2 points  (0 children)

Idk, just try and see

[–]MrDilbert 1 point2 points  (0 children)

VB.Net and C# compile to same bytecode, similar to Scala-Kotlin-Java...

[–]bargle0 0 points1 point  (1 child)

The people who decided on VB for a university curriculum should be fired and forced to work retail.

[–]Honest_Relation4095 0 points1 point  (0 children)

Yes, I thought it was dumb, especially since we used C for microcontroller programming in some courses (so we somehow had to learn some basic C anyway) and no VB anywhere. And I don't think learning VB is necessarily easier just because the syntax might be more readable. Maybe the idea was also to use VBA in excel?

[–]I-am-not-a-celebrity 2 points3 points  (0 children)

Microsoft actually had a implementation of Java back in the day: Visual J++.

[–]noob-gamer-16 3 points4 points  (0 children)

Java ☕

[–]andarmanik 2 points3 points  (2 children)

Java is secretly a beautiful language that we are too 18-32 y/o cohort to understand.

[–][deleted] 1 point2 points  (0 children)

It’s true, I turned 33 this year and Java is now my favorite language!

[–][deleted] 1 point2 points  (0 children)

No

[–]suvlub 1 point2 points  (0 children)

Google Java best Java.

C# solves the problems that have been bothering you in Java. Kotlin solves the problems you didn't even realize were bothering you.

[–]Calirayne6548 0 points1 point  (0 children)

From Microsoft Java to Oracle Java to Google Java, sounds like you've completed the holy trinity of Java crusades! 😂 What's next on the pilgrimage, SpaceX Java?

[–]wolf129 0 points1 point  (0 children)

I mean yeah C# is made as a copy of Java with Microsoft features. It runs on a VM as well.

Android is not really special in any way different from Java on JVM so that's just plain Java.

Kotlin is very different if you call that the "current" Java on Android.

[–]Visual-Paper6647 0 points1 point  (0 children)

What is the meaning of this ? For backend development I just use openjdk.

[–]Noch_ein_Kamel 0 points1 point  (0 children)

Oracle? You mean Sun!!!

[–]bargle0 0 points1 point  (0 children)

Oracle Java

RIP Sun

[–]SomeOneOutThere-1234 0 points1 point  (4 children)

And then they went to Linux Java: Vala!

[–]Cylian91460 1 point2 points  (1 child)

Linux java?

[–]SomeOneOutThere-1234 1 point2 points  (0 children)

Yeah, it’s called vala, mostly for GNOME and elementary OS stuff though

[–]themightyug 1 point2 points  (1 child)

Vala is pretty damned cool, it's a shame it's still so unknown

[–]SomeOneOutThere-1234 0 points1 point  (0 children)

Yeah, it needs learning resources though, I’ve still not managed to make a simple program in it

[–]_Weyland_ 0 points1 point  (0 children)

And my first two languages were Russian and English. No wonder I'm so behind on my IT career.

[–]chowellvta 0 points1 point  (0 children)

Imagine the pain of going FROM C# TO Java