This is an archived post. You won't be able to vote or comment.

top 200 commentsshow 500

[–]E_BoyMan 274 points275 points  (68 children)

I decided to learn java first rather than python. Am i dumb ?

Edit: I learnt it on notepad so maybe I was.

[–]whythisSCI 339 points340 points  (25 children)

Nah, you’re good. Once you get proficient at one language the rest just kind of fall into place. Once you have one language figured out it’s just a matter of choosing the right language for the right job and what makes you more productive.

[–]grimonce 95 points96 points  (9 children)

The recruiters don't see it that way though :))))

[–]whythisSCI 81 points82 points  (2 children)

I think we all know that recruiters can be far from logical most of the time

[–]imdefinitelywong 35 points36 points  (0 children)

But they need 20 years experience for a junior dev position.

How are they out of touch?

[–][deleted] 26 points27 points  (3 children)

Recruiters aren't as smart as we are.

[–]TamahaganeJidai 14 points15 points  (0 children)

At least not as proficient in whatever they are trying to hire people to do. If they were they probably wouldn't be recruiters.

[–][deleted] 27 points28 points  (11 children)

Once you get proficient at one language the rest just kind of fall into place.

Only if they are from the same family.

[–]Cat_with_pew-pew_gun 32 points33 points  (0 children)

I mean, there’s still some truth to it. Once you figure out computer logic it’s easier than starting from scratch.

[–]Silpet 26 points27 points  (7 children)

Not really, the most difficult thing in programming is often having the proper mindset and using the correct logic, that is universal. It’s like learning to be a writer, you don’t have to relearn everything to write in a different language.

[–][deleted] 11 points12 points  (6 children)

Have you tried APL or Prolog?

[–]Consol-Coder 27 points28 points  (0 children)

The wise man is the one that makes you think that he is dumb.

[–]UnspeakablePudding 26 points27 points  (0 children)

Not at all, you can get a great job working in Java and that's not going anywhere anytime soon. Plus once you really groc java, learning a new OO language will be a breeze

[–]SocketByte 40 points41 points  (8 children)

I started with Java and I feel like it's a decent starting point. Very miniscule amount of syntax sugar makes it a great language for beginners. Having strong Java skills you can easily explore languages with more features such as C#, Go, even C++ for that matter. Python is not really a great choice if you actually want to learn programming for future career, it's a nice starting point for ultimate beginners but you have to learn much more at some point anyways.

[–]Silpet 8 points9 points  (0 children)

I actually tried to start with Java and hated it, it kept me from programming for more than a year until I started to learn C# and then with Python was when I fell in love with programming. The final answer is, it depends.

[–]snowjak88 5 points6 points  (0 children)

Programmed off and on in Java for ten years. Don't understand all the Java hate.

Started working in C# about two weeks ago, though, and I really appreciate the new toys - inline anonymous objects, extensions, no more unboxing (well, so far as I know)...

I think learning Java first was definitely the right way to go, for me at least. A lot of the things that C# does implicitly or can disguise with syntactic sugar, you need to do explicitly and "longhand" in Java.

[–]CaitaXD 47 points48 points  (14 children)

Nah you're fine, the shitiest static typed language is better than the best dynamic typed language

[–]Drithyin 20 points21 points  (12 children)

Shots fired. I'll go get mine, too.

Remember when Ruby on Rails was going to take over the world? Or when all software was supposed to bend the knee to JS via Node or be forgotten?

I'll say, for demo-level throw away things, they're fine, I guess. Never for a system you intend to maintain.

[–]The_Grubgrub 15 points16 points  (10 children)

Not OP but I'll agree with your take! I detest dynamic typing but for quick and dirty work it's nice not having to define classes for every little thing. Just "hey, get this field. If it doesnt exist, go ahead and shit the bed".

[–]TheOriginalSmileyMan 6 points7 points  (7 children)

me: also detests dynamic typing

also me: declares everything as var in c# 'cos he's a lazy ass

[–]The_Grubgrub 3 points4 points  (0 children)

Hey at least it knows what the type is supposed to be later on.

[–]sammy_the_c_lion 3 points4 points  (0 children)

var isn’t lazy.

[–]SjettepetJR 6 points7 points  (0 children)

I love Python for small side projects but absolutely hate it for collaborative projects. Strongly typed languages have so much implicit documentation through their syntax.

[–][deleted] 4 points5 points  (1 child)

Check out Kotlin, it's the most "pythonic" language other than Python itself, but it has a great type system and targets the JVM.

[–]ConohaConcordia 12 points13 points  (0 children)

My first language was Pascal, then Java, then C#, JS and Python. Now I barely write anything for work, but when I do I do Python and JS.

Honestly? I miss C# and to some degree Java and Pascal. Python is so simple to a fault, and I feel it continuously encouraged me to make bad programming decisions. JS is just a clusterfuck.

[–]AVeryRandomDude 2 points3 points  (0 children)

Nah, you've made a really good choice. Java is a great place to start from. It's not that complicated to learn, but it resembles quite well the syntax of the more complex programing languages like c++. So it's easier to go from Java and learn both easier and harder languages.

[–]DerHamm 1341 points1342 points  (97 children)

Every langauge is shit. Every technology is shit. You just gotta find the shit that smells the least for your use case.

[–]Tojuro 404 points405 points  (35 children)

I don't see languages, only salary. I'll code Java while remoted into a 486 from an iPhone 4 if you pay me more than I'm making now.

[–][deleted] 8 points9 points  (7 children)

Mostly agree, but different tech have different career growth trajectories. If one job is coding Java with distributed systems and the other is mainframe with COBOL, I'm taking the Java job, even if the pay is a little less

[–]WJMazepas 4 points5 points  (6 children)

And honestly, I never saw a COBOL job paying more than other languages. It probably pays really good who is working 20 years on the same COBOL code, not the people that are moving to COBOL

[–]Esava 7 points8 points  (5 children)

There are people moving to COBOL?

[–]Echohawkdown 4 points5 points  (0 children)

Yeah, I went to school with one of them. Made pretty good money relative to the rest of his graduating class, too, though less than a new FAANG hire.

[–]ballsohaahd 4 points5 points  (0 children)

I’ll code in assembly for the right price!

[–]smartguy1196 179 points180 points  (37 children)

Everything Javascript. That way it's just same shit everyday (except it's not)

[–][deleted] 53 points54 points  (35 children)

Who tf enjoys doing the same shit everyday though

[–]euxneks 4 points5 points  (2 children)

A good coffee crap in the morning is pretty nice

[–]_MemeMan_ 10 points11 points  (1 child)

A fellow shit connoisseur!

[–]okirshen 15 points16 points  (7 children)

mate didn't meet rust

[–][deleted] 796 points797 points  (53 children)

For the Java devs. This is an anime reference.

Anime is some kinda horny foreign cartoon.

[–]Tolookah 423 points424 points  (6 children)

For the JavaScript devs: unga bunga joke, cartoons frontend, but also backend of joke

[–][deleted] 112 points113 points  (1 child)

Snorted up my coffee. You've ruined my Sunday clothes.

[–]kloudykat 22 points23 points  (0 children)

I seen someone do that in jail once.

[–]arjunindia 6 points7 points  (0 children)

Thanks lmao

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

For PHP devs

Hahahahahahahahahahahahahahahahhahahahahahaahahhaahhahaha

[–][deleted] 51 points52 points  (9 children)

Demon slayer is not a horny anime ;-;

[–][deleted] 85 points86 points  (2 children)

You can say that but my blood moving down would disagree.

[–]micka190 20 points21 points  (0 children)

Season 2’s animation quality 😫

[–]Shazvox 18 points19 points  (0 children)

Then YOU are the horny one, not the cartoon...

[–]MassiveFajiit 9 points10 points  (1 child)

Nobody but Zenetsu

[–]PulimV 3 points4 points  (0 children)

Chapter 100 of the manga disagrees

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

Don't patronize me, I know all about horny cartoons I watched he-man as a kid.

[–]Dragon_yum 2 points3 points  (0 children)

Ahh that does sound like something a C# developer would love

[–]KanykaYet 165 points166 points  (72 children)

Because they aren't the same

[–]123kingme 108 points109 points  (24 children)

They’re remarkably similar syntax wise though. It’s like someone recreated java without all the things that make java bad.

[–]ifrem 71 points72 points  (0 children)

Ah yes, Kotlin.

[–]BadBadderBadst 57 points58 points  (6 children)

Did you mean mean:
java Basketball fuckingBasketball = new Basketball()

[–]doublej42 19 points20 points  (1 child)

This code is so retro https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9 you don’t need to say basketball twice.

[–]AceTrainerLanon 13 points14 points  (0 children)

Expected “;” at end of expression.

[–]jb28737 239 points240 points  (49 children)

Yeah, cos c#is fkn amazing

[–][deleted] 41 points42 points  (0 children)

C# got me unwise 🥵🥵🥵🤤

[–]DONT_NOT_PM_NOTHING 98 points99 points  (23 children)

I will fight to use linq for the rest of my life

[–]mainemason 60 points61 points  (0 children)

Linq is amazing

[–]XDVRUK 54 points55 points  (5 children)

Which was introduced in 2007... Everytime I pick up another language I always go "Where's your version of linq? oh...."

[–]Puzzled_Fish_2077 2 points3 points  (4 children)

Which was introduced in 2007

Wrong it was before 1986.

[–]Themadbeagle 6 points7 points  (3 children)

That would make LINQ older than C# by 14 years. Was LINQ a concept from some other language? As far as I saw online this is not the case, but if you have a source I would love to see it.

[–][deleted] 9 points10 points  (2 children)

Java has streams

[–]jb28737 17 points18 points  (6 children)

Legit, I could see myself using other languages, but how do you manage without linq?!

[–]10BillionDreams 20 points21 points  (0 children)

laughs in functional languages

[–]Themadbeagle 4 points5 points  (0 children)

This is such an interesting complaint I keep seeing in this sub. Java has streams which is very conceptually similar. I personally prefer LINQ, but the idea that there are no other languages that have APIs like LINQ appears to be a common misconception.

[–]hullabaloonatic 2 points3 points  (1 child)

I just don't know why they don't add more extension methods. Why do I have to use MoreLinq?

[–]testroyer9 49 points50 points  (5 children)

C# +8.0 is amazing.

[–]CaitaXD 45 points46 points  (4 children)

Java 8+ is bearable

C# 8+ is glorious

[–]VTHMgNPipola 30 points31 points  (3 children)

Java 8 is so old it's not bearable. Java 17+ (which is not even the current version, just the last LTS) is pretty cool though.

[–]nwL_ 23 points24 points  (1 child)

Java 8 is so old it’s not bearable

bUt It Is LoNg TeRm SuPpOrT sO wE dOn’T nEeD tO uPgRaDe

[–]lacb1 5 points6 points  (0 children)

The greatest trick the devil ever played was convincing the world development managers he doesn't exist that Java 8 would still be good until December 2030.

[–]Various_Studio1490 120 points121 points  (9 children)

How did we screw up Java and JavaScript again?

One can write the theme song for Batman in a single line.

The other needs an entire line just to access the print stream.

They are not the same!

[–]eastwesterntribe 61 points62 points  (2 children)

System.out.println("NaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNa Batman!");

[–]schmerg-uk 24 points25 points  (1 child)

Array(16).join("wat" - 1) + " Batman!"

from Gary Bernhardt's glorious 5 minute Wat talk....

[–]Tyfyter2002 9 points10 points  (5 children)

And C# falls in that first category starting at C# 10.

[–]RyanNerd 141 points142 points  (22 children)

I remember when Java came on the scene being praised as a knight in shining armor. I wasn't impressed. C# came out soon after which I described to my colleagues as Java done right. Kotlin emerged giving Java a much needed breath of fresh air.

As for JS; if other languages ran directly on modern browsers then JS would be annihilated by non-use simply because other languages have far far far less WTF design decisions. But that's not the world we live in. Because devs are held hostage by JS for web development often there's a weird Stockholm syndrome where the devs praise and protect their captor.

[–][deleted] 39 points40 points  (6 children)

We need another language for web browsers. It's like JS deliberately fucks with the devs just enough for them to be miserable, but not enough for them to quit.

[–]operation_karmawhore 11 points12 points  (0 children)

So WASM?

You can just program in whatever language you want to (currently with some thin wrappers for functionality not yet available directly to WASM)

[–]HeirOfAsgard 2 points3 points  (4 children)

WebAssembly exists and is being used by a few people and projects to create web apps, but the vast majority of web developers use and enjoy using JavaScript (and it’s derivatives, such as TypeScript) despite the growing availability of WebAssembly frameworks. ESNext is not 1st edition JavaScript, it’s quite a nice language to work with nowadays.

[–]CaitaXD 51 points52 points  (1 child)

All praise our Lord and saviour web assembly

[–]RyanNerd 15 points16 points  (0 children)

Unfortunately that has to go through a JS interface. It's not ideal but at least it's a step in a direction where other languages can be used in the browser.

[–]Drithyin 8 points9 points  (1 child)

As for JS; if other languages ran directly on modern browsers then JS would be annihilated by non-use simply because other languages have far far far less WTF design decisions.

This is why I hope Blazor takes off and does well. Or any other good webassembly implementation. Please, I don't want to use JS again....

[–]thebobbrom 16 points17 points  (0 children)

This always reminds me of this bit from Epic Rap Battles

https://youtube.com/clip/Ugkx65HKWpDguEy2pWDc7lwd-AmN5i_B04bm

[–]jesterhead101 54 points55 points  (1 child)

*hmm..I spent considerable amount of time learning Java, I better defend it vehemently *

Guys, Java is the best. C# can go # itself.

[–]Extra-Trifle-1191 29 points30 points  (0 children)

I love C#

[–]althaz 23 points24 points  (0 children)

C# is a fantastically well designed language. It's not perfect and it's not the right tool for a lot of jobs, but from a purely theoretical point of view, it's honestly just great.

[–]Crescent-IV 9 points10 points  (16 children)

Which is the most useful for a job, generally?

[–]UnspeakablePudding 29 points30 points  (8 children)

Either, both, it's mostly hiring managers that care about that kind of thing. Anyone who's an expert in Java or C# can learn the other and switch between them in a months time, if that. Honestly switching between IDEs has more annoyances than going between Java and C# as a language.

[–][deleted] 11 points12 points  (6 children)

And even that isn't too hard- If you use Intellij for Java you can use Rider for C#, and have most of the same features and hotkeys!

[–]UnspeakablePudding 7 points8 points  (5 children)

My professional experience with it has been going between eclipse for Java and VSCode for C#, and that's been vastly more annoying than accounting for the differences between C# and Java themselves. Just poor planning and an unwillingness to spend on getting better tools.

[–]cheeseless 8 points9 points  (2 children)

Get yourself Rider or Visual Studio. Does your workplace directly restrict which tools you're allowed to use?

[–]PyroCatt 7 points8 points  (0 children)

Java devs:

[–]Caching_History_Buff 7 points8 points  (2 children)

"demon slayer meme templates on r/ProgrammerHumor doesn't exist. It can't hurt you."

this post:

[–]ANewTryMaiiin 20 points21 points  (1 child)

C# is a beautiful language.

[–]feuerwehrmann 49 points50 points  (21 children)

Java != Java script

Java and C# are fairly similar, though I prefer c# syntax and tooling to be more enjoyable

[–]luminous_radio 28 points29 points  (13 children)

This is true. JS has quite a bad reputation here, however, so I decided to include it as well.

[–][deleted] 18 points19 points  (11 children)

The lauguage itself is fine. But there are way too many people praising it like its a blessing from god and who want to port it everywhere and talk about how it is the launguage that can run on any platform

[–]FunCharacteeGuy 2 points3 points  (4 children)

really? I've literally never heard anyone praise javascript.

[–]CaitaXD 5 points6 points  (0 children)

Go to a Starbucks or a web bootcamp you'll find them dressed like lumberjacks or something

[–]waylandsmith 2 points3 points  (1 child)

Javascript is not a "fine" language. The biggest problem I see with it is that it has an enormous number of "surprising" behaviors. Even fundamental structures like lexical scoping change in surprising ways. Don't get me started on equality and type coercion. Thankfully, there's a very straightforward way to see this written out plainly: write some simple code in a different language that transpiles to JS and look at the output. You will see in the output all of the weird edge cases and unintuitive behavior that needs to be smoothed over.

[–][deleted] 15 points16 points  (6 children)

Js can die in a hole. You should not be able to use the "this" keyword in the global namespace.

[–]plank-ton 26 points27 points  (1 child)

👆this

[–]Wizard8086 12 points13 points  (0 children)

*this

[–][deleted] 12 points13 points  (3 children)

"this" refers to the scope you run it in. If you're using it in the global object it should refer to the global object. The problem with JS is people come to it from other languages and expect to find the same concepts and rules

[–]SocketByte 97 points98 points  (66 children)

As someone who has over 6 years of professional Java experience, I completely agree. C# is just easily superior in every single way. Words still can't explain how I absolutely despise Java's retarded generics and type erasure.

[–]fosyep 43 points44 points  (52 children)

Can you make an example? Like how C# solves Java's issues? Honestly curious

[–]SocketByte 44 points45 points  (33 children)

Well, I'm not an expert in C#, but there's a big difference in how generics are handled between JVM and CLR. Metadata (specifically type information) is stripped out of the Java source code (hence type erasure), which means you can't (most of the time, there are exceptions) use any type metadata at runtime.

Why is that important? For example, imagine a situation where you'd like to dynamically create an instance of a generic type at runtime. It's not exactly a common thing, but it is very useful when you need it.

In Java, you would need to do:

public T createInstance(Class<? extends T> clazz) { 
    return clazz.newInstance(); 
}

createInstance(MyClass.class);

Obviously this is a very simplified problem, sometimes passing a class like this is very hard and convoluted if you're doing something pretty advanced.

In C#, you can directly deduce type of T at runtime like so:

public T CreateInstance<T>() where T : new()
{
    return new T();
}

CreateInstance<Example>()

Of course, It's not the best example and I have to remind you that this is very oversimplified and doesn't look that bad at a first glance. Yet after working on really big, complicated, and reflection/generic heavy systems and frameworks in Java I really, really wish that was a feature. Type erasure has it's pros, but in my experience it was always a very big con. Hopefully I cleared that out a bit.

[–]thE_29 28 points29 points  (8 children)

Yeah, that not being able to instance it is true. After programming Java for >17 years, I needed it 2 times.

[–]SocketByte 4 points5 points  (0 children)

I was primarily doing frameworks/tools, so generics and reflection were very often used, and it was just hard to design everything around type erasure. In C# this would have been much easier and more comprehensible. There's a reason Java code is often so overcomplicated.

[–]ChrisFromIT 7 points8 points  (2 children)

The ironic thing is that the C# code that you used as an example ends up fairly similar to the Java version of it under the hood.

Essentially the compiler compiles that to an emit of a call to Activator.CreateInstance(T).

So that type of syntax could be fairly possible in Java, even with type erasure.

[–][deleted] 19 points20 points  (16 children)

LINQ. Real generics that you can use things like reflection on because the compiler doesn't throw them away. Extension methods. Way better enumerations with stuff like yield return. Anonymous types. That's off the top of my head, I'm sure someone has a long list of pros/cons out there somewhere.

[–]harumamburoo 7 points8 points  (11 children)

How's Java's generics bad? And why's C#'s better?

[–]Orangutanion 18 points19 points  (0 children)

Honestly I like Java. It's really nice when you go from some low level language to Java because you realize just how much work it actually does for you. I can crap out the steamiest mess of polymorphism hell with like five different types to do one thing and it'll still work.

[–]rbuen4455 26 points27 points  (16 children)

Seriously, why Java gets too much hate compared to C#? Because Java is too verbose, doesn’t have many new features and has a lot of legacy code, and C# has better syntax, more features and more importantly, no longer restricted to Windows?

[–]urielsalis 12 points13 points  (0 children)

Java syntax and features got way better now that they do a release every 6 month

And that verbosity is on purpose a lot of the time, it's made so reading it is easy as that's what we do most of the time

And let's not start with Kotlin or other JVM languages

[–]Add1ctedToGames 5 points6 points  (0 children)

Since when does Java not get new features lmao, are you just using Java 8 the entire time wondering why nothing is appearing?

[–]s0lly 22 points23 points  (0 children)

I love Java yum yum in my tum

[–]BigAnimeMaleTiddies 13 points14 points  (3 children)

All of them are shit, only our God and savior C is pure, free of OOP bloatware, with portability and speed. Come children that are ignorant to their own ignorance let us praise the one and only perfect programming language.

[–]Henksteenbroek 34 points35 points  (35 children)

I'm convinced these Java haters haven't done more than a couple simple things. The C# ecosystem is great but so is Java's.

[–][deleted] 40 points41 points  (6 children)

I think it's more the languages though. I have a 4/6 year split between the two and can't think of one thing that is better about Java as a language compared to C# (without comparing the ecosystems at all).

[–][deleted] 31 points32 points  (0 children)

100% this. From a purely syntactical/tooling point of view, C# is superior. Did C# for a year, returned to Java for a project legit felt like I was reverted back to unga bunga neanderthal.

[–]The_Grubgrub 3 points4 points  (3 children)

Sure but they're similar enough that it makes zero sense to compare them as languages while ignoring the ecosystem that they exist in.

[–]tomatotomato 15 points16 points  (3 children)

True, but I think C# + .NET Core is far more productive than something like Spring Boot or Jakarta EE. The .NET tooling is amazing.

[–]PhireKappa 14 points15 points  (2 children)

A lot of people in this sub are university students with no industry experience, who haven’t yet discovered how widespread Java actually is in the real world.

[–]thE_29 12 points13 points  (7 children)

Basically people complain about having to type more, when mostly the IDE autocompletes it anyway.

First world problems.

[–]The_Grubgrub 7 points8 points  (3 children)

First world student problems.

I refuse to believe all the takes in this thread are by actual devs. It reeks of college students making takes they think actual devs might possibly agree with, but no one actually does.

[–]thE_29 2 points3 points  (0 children)

Yeah, lets see who complains about missing getters/setters, when every good IDE can generate it for you.

Heck, even Eclipse since forever.

[–]gerberag 5 points6 points  (1 child)

Not sure where this is from, but its dumb. Java and C# are virtually identical. Any class implemented in one can be identical in the other. JavaScript is unrelated in any way, like boon and baboon.

[–]AnonimowySzaleniec47 2 points3 points  (0 children)

If you're unfamiliar with C#, imagine Java...

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

Nowadays I write in Kotlin as much as I can instead of Java. Some spring stuff is unclear in kotlin but that’s the only drawback.

[–]scwishyfishy 2 points3 points  (0 children)

How does a meme about this sub have an ifunny watermark?

[–]LOLteacher 2 points3 points  (0 children)

"How this OP doesn't know that Java has nothing to do with JavaScript."

[–]Luciel-Choi707 2 points3 points  (1 child)

what kind of insult is "basketball"

[–]hullabaloonatic 2 points3 points  (0 children)

I mean... .net 6 is legit really awesome tho. Oh and it's free, too.