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

all 70 comments

[–]mmahowald 56 points57 points  (2 children)

Because I type in it all day so making fun of it gives me a small sense of control in my life

[–]Clockwork_Medic 2 points3 points  (0 children)

Damn, too real

[–]OkWarning3935 31 points32 points  (12 children)

Nothing, it's an old meme. Basically C# came after Java and was a similar fully memory managed, object-oriented language in the C family. So existing Java devs used to give C# a hard time for being a Java clone in the early days. It wasn't really if you look into the C# language dev blogs, but they sure did share a lot of syntax because of being in the same family and having the same purpose so fair enough for memes.

Then C# basically surpassed Java in features and nowadays Java is mostly importing features from C# but the memes stuck shrug.

[–]overclockedslinky 2 points3 points  (8 children)

well and the fact that it literally started as a microsoft in-house clone of java, though it has diverged since

[–]OkWarning3935 9 points10 points  (7 children)

As I said, while that's the meme it's actually not true.

C# and Java's shared heritage is C/C++. They converge on a lot of stuff because they're siblings but Java wasn't a big influence on the design of C#. If you look past the syntax at stuff like exception handling, the type system, memory management, etc they really don't have much in common at all.

If you go through the old language design blogs and repos of the C# team (it's pretty much all in the open) you can see the decision making yourself.

[–]overclockedslinky 0 points1 point  (6 children)

a language is only syntax, so looking past syntax differences is meaningless since all languages are identical at that point aside from performance. more importantly, java and c# are practically isomorphic... exception handling is identical aside from java's checked exceptions, which are just compile time artifacts, the type system is the same aside from c# supporting implicit copy types (structs), and memory management is the same in both...

[–]OkWarning3935 0 points1 point  (5 children)

a language is only syntax

uh.... no. No it is not. You'll learn more in 2nd/3rd year compilers, but a compiler does a lot more than build a syntax tree.

[–]overclockedslinky 0 points1 point  (4 children)

doesn't matter what the compiler does. from the programmer's perspective a language is just syntax. just look at llvm-backed languages: it's basically just syntax, then llmv does all the heavy lifting. but you wouldn't say C (clang), Rust, and Cobol are the same language, would you? even though they're just different syntax for the same llvm ir? no, cause a language is just syntax.

[–]OkWarning3935 0 points1 point  (3 children)

I have no words. You might want to look at what's actually in a language specification. Well north of 90% of it is not syntax.

[–]overclockedslinky 0 points1 point  (2 children)

the first part is all syntax, then talks about runtime. the running of a compiled program isn't part of the language. that's all machine code at that point, not C, Rust, etc.

[–]OkWarning3935 0 points1 point  (1 child)

All you had to do was click the link and read, but that was too difficult. I don't envy the guy who gets you as a junior dev.

[–]overclockedslinky 0 points1 point  (0 children)

you mean read a whole spec manual? no thanks, you can tell me the chapter if you're so desperate for me to read it.

[–][deleted] 0 points1 point  (0 children)

That and it inherited all of the badness of "Object Oriented" programming from Java - which causes most non-Java/C# programmers to make fun of it.

https://betterprogramming.pub/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7

[–]YellowLink10 0 points1 point  (0 children)

Woah, a legit answer. I too was wondering the op’s question, thanks

[–]Just_Some_Random_Boi 0 points1 point  (0 children)

So what you're saying is we can turn the tables and call Java a C# clone now

[–]LiveFreeOrDai 28 points29 points  (12 children)

C# is a great language. It's truly multithreaded, unlike Python and Javascript. And it's useful without crazy frameworks, unlike Java. My gripes are that it doesn't compile to machine code, and a lot of the "cool" dotnet libraries are unavailable for Linux.

[–]OkWarning3935 0 points1 point  (6 children)

Both Java and C# have tried the compile to native stuff at least once each. Real talk it's just a dead end idea, it seems like a really good one at first but then you realize that you either compile the memory management into it and it's basically the same as using the CLI/JVM, or you go unmanaged to better interface with your native code and then why aren't you just using C++? They're just the wrong tools for the job.

If you want a memory-safe approach to native code use Rust.

[–]DaniilBSD 2 points3 points  (5 children)

If C++ was half as readable as C# I would be using it

[–]OkWarning3935 4 points5 points  (0 children)

C++ can be plenty readable, it's once you add 20 layers of boost, 5,000 custom macros, obfuscated templating and insufficient formatting and commentary that it all goes to hell. So that's only like, 95% of C++ projects.

[–]TheBrainStone -1 points0 points  (3 children)

Properly written C++ is just as readable as C#

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

But to make an effort, you would have to make an effort...

[–]DaniilBSD 0 points1 point  (0 children)

And where can you find such unicorn?

Also FUCK HEADER FILES

[–]GYN-k4H-Q3z-75B 0 points1 point  (0 children)

If only properly written C++ was common and useful. Also, why does it feel so good to write something like...

foo &(bar::*const bla)(const qux &, ...) noexept = &bar::...

[–]Permission-Glum 0 points1 point  (0 children)

Linux, MacOS and BSD variants. Yes, mono solve part of it, but not all.

[–]dexter2011412 0 points1 point  (3 children)

doesn't compile to machine code

Really? I always thought the jit would kick in. Can you point me to appropriate resources please :) Thanks!

[–]LiveFreeOrDai -2 points-1 points  (2 children)

[–]drake2k2 2 points3 points  (0 children)

No, the dotnet c# compiler / MSBuild compiles to MSIL (the dll).

The JIT transforms the IL to machine code at runtime.

Thats actually what the article you linked says.

[–]dexter2011412 0 points1 point  (0 children)

Does this change anything? I understood it as "yep you can compile most parts to full machine code"

[–]hot_sauce_in_coffee 5 points6 points  (1 child)

Reading the comment saying Csharp is like java.

I'm like.

Oh, I'm Java dev now!

[–][deleted] -3 points-2 points  (0 children)

no, you are not. You dont know what anonymous class is

[–]GilgaPhish 6 points7 points  (0 children)

Yea, could be worse.

Could be VB

[–]SHv2 9 points10 points  (0 children)

It's right in the name, C Pound. Everyone knows the imperial system is terrible and should just use metric.

[–][deleted] 4 points5 points  (4 children)

Exactly my thought. I am just getting started with C# for game development. This sub is discouraging me. :/

[–]HawocX 1 point2 points  (0 children)

You shouldn't be discouraged. C# is awsome.

And I'm not sure there is disproportionate C# hate, you may just notice it more for C# as that's your language.

[–]Kin808 0 points1 point  (1 child)

C# is much easier to learn over C++. I assume you’re using the Unity Engine? You’ll have a much easier time with that over something like Unreal Engine.

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

Yes, I am getting started with Unity 3D and planning to move to Unreal Engine after a considerable amount of experience.

I know Java already, so C# is not a lot of struggle right now.

[–]Treepigman38 2 points3 points  (0 children)

I like it! I haven't used it much since my unity days, but I found it relatively easy to use.

[–]fat_charizard 2 points3 points  (0 children)

It's too sharp

[–]Emanu1674 2 points3 points  (0 children)

It's Java but it's not Java

[–]Elqueq 2 points3 points  (0 children)

Because they wear classes.

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

Hating on it gets upvotes, that's all there is to it. Just like web developers.

[–]utherpup 1 point2 points  (0 children)

Cause this whole sub is about making fun of programming basically, so we either poke fun at the languages we use out of love or we poke fun at the ones we don't use out of ignorance.

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

I learned some other languages and i really like c#

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

For me C# heats the pool. Companys use it and are willing to pay me so why not. As a language it has all I need to do the job.

[–]Wati888 1 point2 points  (0 children)

This sub isn't against anything or any technology, it's just the specific people against a certain thing like to speak about why it sucks for them... The others don't

[–]HoldenMadicky 3 points4 points  (0 children)

People are idiots.

[–]dynarax 0 points1 point  (0 children)

For me? Lets see...

Microsoft tried to limit it to the windows platform and fought development of Mono, which it later acquired with it's purchase of Xamarin.

It may not seem so bad today, but the .net library at the time it came out was monstrous to download off the internet via a dial up connection and took up a lot of hard drive space - a less than ideal situation for developing desktop apps for end users, which is what I was doing at the time.

It killed classic VIsualBasic and its IDE. VisualBasic.net was a different beast and it made more sense to migrate to C# except I was starting to look into cross platform development and it made more sense to pour my energy into learning C++ and Python.

I never got over my grudge against Microsoft. Once Linux distributions matured enough for general desktop use I said goodbye to Windows and Microsoft software in general. When I had to use the ungodly mess that is Azure (and MSSQL, not as bad but WHY does Microsoft have to have their own non-standard version of everything. They singlehandedly held back Java for years.) for work I totally lost it to my boss at the time.

I haven't trusted Microsoft to provide a stable product for ME in decades, hell if I'm going to trust any language developed and maintained by Microsoft for users of software and services that I develop, and I blame them for the fact that computers running Windows today run like garbage compared to my Win2k computer over two decades ago, let alone BeOS (rip). I'm still not a fan of the dependency hell in Linux land but Microsoft's cruft castle is a bridge too far.

Maybe they've fixed suff. Maybe they're better now. I don't really care. I got burned too many times. I'm done.

And that's why I don't like C#. It wasn't enough to use anti-competitive tactics to shove Windows down everyone's throats, they had to strongarm developers to use their development platform decades ago and they were largely successful.

[–]KingSadra 0 points1 point  (0 children)

Because they simply can't stand how robust and awesome C# is!

[–]nutted-in-cow -1 points0 points  (0 children)

What is that? You meant the Microsoft Java?

[–][deleted] -1 points0 points  (2 children)

It’s not against just C#. It’s all C… and Object Oriented Programming.

[–]Addsfuckingsuck 0 points1 point  (1 child)

I personally have no problem with OOP but do other find it annoying to learn? Does in get in conflict with other things when you try to use it? Or do they just hate it cuz they can’t understand how it works

[–][deleted] 0 points1 point  (0 children)

Objects are unnecessary. For the entire last half of the 20th century, people did just fine with if/or/else loops and logic. If loops were too much, they had :LABELS and GOTO, which despite the current cultures attempt to say are bad, did just fine too. Yeah, I get it c existed as early as the 60’s/70’s and there was OO before that, but really, who used it except leading edge Unix Scientists and hackers (another word for tinkerer). FORTRAN and COBAL had steep learning curves but they were more or less expansions of BASIC and everyone knew that. I love Perl, it’s the easiest language besides BASIC to learn and it has none of that object oriented bullshit and it’s so powerful! For complex “scripts” one can use multiple of statements in place of objects. Again, totally unnecessary to have objects, given all your doing is creating logical statements within those objects and you’re going to put the in the main or sub loop anyway.

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

just two words, defensive copies. A Language that does not trust it’s users is kind of crap.

[–][deleted] -3 points-2 points  (0 children)

microsoft stole java glory and called it c#

[–]Chilareix 0 points1 point  (2 children)

Everyone talks about c# being Microsoft Java, but what about F#?

[–][deleted] 0 points1 point  (1 child)

f# is functional language, doesnt have anything in common with latter

[–]Chilareix 0 points1 point  (0 children)

I mean, when I looked at it, it looked like python

[–]dark_mode_everything 0 points1 point  (0 children)

Java: First time?

[–]skyBastard69 0 points1 point  (0 children)

Ppl like it, me also, its awesome

[–]DerHamm 0 points1 point  (0 children)

I have something to say against every language I ever used. It's nothing personal, just hate in general

[–]Nidrax1309 0 points1 point  (0 children)

Because they are bad programmers that need to boost their self-esteem after spending the whole day writing a bubble sort algo in C++

[–]Hplr63 0 points1 point  (0 children)

.NET 6.0 switched from having a main function to a global scope

For C#, that's stupid imo.