>Immutability by default.
This would kill c# performance by a lot but I guess it's a debatable feature that's missing
2 years ago
Anonymous
>This would kill c# performance by a lot but I guess it's a debatable feature that's missing
F# has it and runs as well as C#, and you can optionally create mutable values. I don't know how this would effect C# performance? It would be like making everything at every level readonly. May actually enable more compiler optimizations but that's beyond me. I would say it's more of a "quality of life wish" than a missing feature, at least compared to the other things listed. >>higher kinded types and type classes >The frick is this
Not that anon but they're "very loosely" "generic generic with return type polymorphism" and "traits". See Haskell. They're very powerful. .NET CANNOT support higher kinded types - the type system is too weak. At least that was the case a couple years ago. Scala can get away with it because the JVM does type erasure (and they still had to bring in the Haskell creators to do it). In short, "much better interfaces and generics".
2 years ago
Anonymous
how would immutability by default kill performance? if anything that enables tons of optimizations (try using the const keyword in certain places in C++ and you'll be amazed)
i disagree that it's a "missing feature" btw, it's a nice default and it should be like that for all languages, but nothing else
2 years ago
Anonymous
The way I see is more memory and computation wasted to keep up with all the immutable data.
A garbage collector that isn't ass and doesn't make me write my own finalize to null everything instead
2 years ago
Anonymous
Having to write your own finalizer is a good thing you dip shit
2 years ago
Anonymous
In what way? I'm a professional trying to get work done, not some hobbyist trying to jerk off
2 years ago
Anonymous
No you're not a professional or at least a very junior one, holding resources hostage waiting for the GC to kick in when you already done querying db/reading files is insane.
2 years ago
Anonymous
Let the gc do its job instead of larping.
2 years ago
Anonymous
2 years ago
Anonymous
>no argument, only memes
About what I figured
2 years ago
Anonymous
You are moronic junior dev that's why I have to meme.
You complain about having to use finalizer but you actually isn't forced to use but AGAIN it's a good practice to use one when you're done with all the IO stuff eating resources.
2 years ago
Anonymous
>you actually isn't forced to use
Ah, it's a pajeet, that makes more sense
>Extremely easy to get shit done with >Runs on literally everything >LINQ >Decently fast without having to go full autism with C/C++ >Boring tech that's been around forever and is relatively easy to hire for
C# is so much better than Java, and i'm even taking into account their latest iterations of the language. It's also incredibly easy to work with and to deploy a working solution in no time. I have yet to find an easier to read syntax and a language that gets my webserver and API up and running in less time than c#. If you have some suggestions feel free to share them with me. In the mean time c# is my go to and is synonymous of web to me, just like Javascript is.
Do you shill even realize how generic your shill posts sound? How the frick is that difficult? https://jooby.io/. The reason nobody wants to use C# is because of Microsoft.
>Generics
You have real generics (not the bad casting joke that Java calls generics), and you can perform reflection (metaprograming) on them >Operator Overloading
One of my favorite features, which C# has but that Java does not, is operator overloading. For instance, if you are implementing software that involves operations involving a class of 2D points, you can use operator overloading for +, and - to represent the standard (point, point) operations, and you can use * to represent scalar multiplication as a (scalar, point) operation. It can also be used to represent dot product. Then, your code can be made to look like the corresponding mathematical operations that it implements. >LINQ
This one is the biggest productivity booster. Instead of using yet another query language (YAQL) you have one easy and extremely powerful syntax to parse html/xml, communicate with SQL, no sql, graphql or any other possible Type of DB. You can use it for algorithms or web scrapping and anything in between. > Async Await
Since asynchronous programming was introduced as a feature in f# and then in c# it became a standard that is adopted by every language. This feature in particular is a make or break for me, especially when it comes to building an i/o intensive server. We're in fricking 2022 and the Java board still didn't decide to add async/await to that deprecated language. >A better ecosystem
Java has a bigger ecosystem with a lot of alternatives that do the same job. The dotnet libraries are more qualitative and more robust. JPA and Hibernate are no match for EF Core and i've yet to see an equivalent of Identity Server.
Fricking kek you needed 20 minutes to google that bullshit together.
>Generics
fair point >Operator Overloading
This is one of the worst "features" ever because it is being abused in 99.9% of all cases especially since C# oo is static only. It's absolute dogshite. >LINQ
Lmao big deal. Java has the Stream API. >Async Await
dogshit async model. Loom is better especially since it lets you suspend with no problem. >The dotnet libraries are more qualitative and more robust.
LMFAO what the frick are you talking about? Source? What the frick is more robust about them? They aren't even backwards compatible. I can still use a jar from 15 years ago while every library that was written in .NET < version 3 has basically to be rewritten. GTFO and KYS you homosexual shill.
2 years ago
Anonymous
good morning sirs
2 years ago
Anonymous
>>LINQ >Lmao big deal. Java has the Stream API.
The Stream API is a restrictive tool from the Bronze Age that doesn't even come close to the power of LINQ. The Stream API sufferrs from a cruel lack of extension methods and those that are already there are useless in many cases. The problem with Java's version of "extension methods" is that you can not add functionality to built-in classes/interfaces. It only allows an API to be extended by the person that owns the API. The real power of extension methods was that it let anyone grow the base classes of an existing API without breaking it.
>Async Await >dogshit async model. Loom is better especially since it lets you suspend with no problem.
moronation at its finest. Keep rolling in your bath of boiling shit. And yeah tell me what 's bad about asynchronous programmimg, make me laugh. Tell me how starting new threads for every new i/o call is better in anyway than sending the call, putting the function to sleep in wait of a response, proceeding to the following operations and bringing back the function to live when you get a response. How is starting a new thread for external i/o going to influence the response time of the external service you try to get response from? >This is one of the worst "features" ever because it is being abused in 99.9% of all cases especially since C# oo is static only. It's absolute dogshite
Operator overloading is one of the best things that happened to C# and the fact that you're trying to discredit it based on the fact that some people might over use it is laughable. Do you know how many OOP features "can be" great but make your program a mess when they're overused? Operator overloading isn't there to be used everywhere on your program but it is a blessing to have when you need it. Your argument equates to saying that inheritance is bad and should be removed from Java because too much inheritance is bad. You're playing with words.
2 years ago
Anonymous
>Bronze Age
Its youger than LINQ. > The Stream API sufferrs from a cruel lack of extension methods and those that are already there are useless in many cases
Why the frick would you need extension methods when you have flatMap? Do you even functional programming? What the actual frick? > It only allows an API to be extended by the person that owns the API.
This is exactly what I meant in my previous post. morons like you abuse overator overloading. >moronation at its finest. Keep rolling in your bath of boiling shit. And yeah tell me what 's bad about asynchronous programmimg, make me laugh. Tell me how starting new threads for every new i/o call is better in anyway than sending the call, putting the function to sleep in wait of a response, proceeding to the following operations and bringing back the function to live when you get a response. How is starting a new thread for external i/o going to influence the response time of the external service you try to get response from?
Async/await is a dogshit model that is 1. heavier than green threads 2. makes code unreadable (hence async), you can write imperative code with loom and 3. suspending/blocking threads is no problem with Loom. >Operator overloading is one of the best things that happened to C# and the fact that you're trying to discredit it based on the fact that some people might over use it is laughable
No it is not for the reasons I mentioned above.
>Spark and Cassandra are available for C#.
They are not "available" for C# there are just broken client libraries for it. I don't think you even understand Kafka and Spark and the whole point is that you don't have to go out of the ecosystem. .NET is a master of nothing.
You paid Microshat shills fricking baffle me. How about you fricking fix Windows first? Pic related is literally what EVERY SINGLE Microsoft product is like. israelites like yourself selling it as a silver bullet but as soon as you're using it you realize it's garbage
2 years ago
Anonymous
>I hate microsoft so I have to invent reasons to hate c#
everytime
2 years ago
Anonymous
They do the same with C# as they do with any other Microsoft product. Bloating it with features just for the sake of shilling features.
2 years ago
Anonymous
>>Bronze Age >Its youger than LINQ
Yes. It's younger than LINQ. So you'd expect it at least to borrow. LINQ features and maybe improve them. Right? No, they made a shittiest restrictive API lacking extension methods and a poor implementation of iterators and called it a day. So it maybe have been released after LINQ, but it's still a bronze age feature in comparison.
>Why the frick would you need extension methods when you have flatMap?
Aaahhahahah now i can't believe i read that!! >Do you even functional programming?
Ask the Java board. C# started implement in FP features borrowed from ML and Haskell since day one.
>Async/await is a dogshit model that is 1. heavier than green threads 2. makes code unreadable (hence async), you can write imperative code with loom and 3. suspending/blocking threads is no problem with Loom.
Green threads require a runtime, and a smarter runtime that that. Async / await are just callbacks on an event loop that perform better when you're calling an external service or working with a UI. The parrallelism part mainly brings an advantage for long running tasks. Besides, C#'s implementation of async/await (just like Rust) is perfectly compatible with parralelism and allows you to replicate goroutines if you want by combining async/await with channels/tasks. Instead of requiring the developer to manually deal with asynchronous (or non-blocking) I/O calls, the runtime system takes responsibility for this. Like garbage collection, it's not appropriate for all use cases and it's only there to make things more moron friendly.
Async/Await is actually very simple to implement in C#, i don't know what you're refering to exactly. Maybe it's messy in Javascript. On the contrary, i find that async/await brings a lot more readability and highlights the tasks i/o that communicate with an external service and wait for a response call.
2 years ago
Anonymous
>Aaahhahahah now i can't believe i read that!!
Then tell me why you would need extension methods. Apparently you don't understand monads. >Ask the Java board. C# started implement in FP features borrowed from ML and Haskell since day one.
Oh so it's you again. I've seen you post this "it borrowed features from Haskell" garbage a billion times now. Almost every language has borrowed functional features from Haskell, even Scala. What the frick is even your point you moron? >Green threads require a runtime, and a smarter runtime that that.
They don't with Loom, that's what's great about them. Now you can supply a scheduler but it's not necessary since the JVM handles them. With async/await you actually have to keep track which piece of code is blocking and which isn't. With loom you literally don't have to give a shit. It's superior in terms of maintainability/debugging and readability. er?
2 years ago
Anonymous
>What the frick is even your point you moron?
Not him but if I get this right, his poin is Java implementation of functional features are ass compared to C#
2 years ago
Anonymous
>Java implementation of functional features are ass compared to C#
They're both shit. Apart from the actual functional languages like Haskell, Scala, F# etc. Kotlin is the only language with acceptable functional capabilities.
2 years ago
Anonymous
C# has perfectly fine functional programming capabilities but is more on the OO end of the rope just like Kotlin. This post is the typical biased type of comment of people who shit on a language, not based on what i has to offer but based on it's backing. On the functional ladder, you can't put Java and C# on the same level and call yourself unbiased. Besides, Scala and F# aren't purely functional as you claim. Just like C#, they are multiparadigm languages but they are more on the FP end of the rope than the OO one. OCaml, Haskell, ML and Clojure are truly functional
2 years ago
Anonymous
The absolute state of your fried Mircosoft brain. When the frick did I say Scala and F# were purely functional language. I want you to fricking quote me right now. >Just like C#, they are multiparadigm languages
No, they are not "just like C#". What makes a functional programming language functional is that you're having access to fundamental concepts like type classes, higher kinded types etc..which F# doesn't have either btw. Shit language.
Want to really turn C# into Kotlin?
Put this in your .csproj:
<PropertyGroup>
<Nullable>enable</Nullable>
<WarningsAsErrors>CS8600;CS8602;CS8603;CS8618</WarningsAsErrors>
</PropertyGroup>
>Kotlin has val and var, which is the same as C# var.
Why don't you just admit you don't know SHIT about functional programming? Yes, C# has some basic functional features JUST like Java but the way they are implemented are just ugly and makes the code look ugly as frick as well, contrary to Kotlin. I mean Java has higher order functions as well but they are ugly as frick to use. The ONLY reason C# is slightly more comfortable than Java is because Microsofrt doesn't give a flying frick about backwards compatibility, not because they are more competent and they can afford not to give a frick about backwards compatibility because they don't have nearly as many users as Java.
I can spot your posts from a mile away you are the same guy in every single fricking C# thread doing the same generic shilling over and over again. I swear to god I hope your whole fricking family dies by cancer.
>All I see are .net positions.
Fricking lol you really want me to post them again, don't you? You are the worst kind of israeliteshill. You just spread lies you don't even give a shit.
2 years ago
Anonymous
Closures delegates expression trees a generic query language that is not just an unusable marketing scheme like java streams and tail recursion compiler optimization are just a curated list of non exhaustive examples on FP features present in C# and that aren't in Java.
>interpolation >default parameters >functional features
When HR does shilling for programming languages kek
2 years ago
Anonymous
Many parts of Kotlin are modeled after C# (properties, interpolation, expression operators for functions operator overloading, Default parameter values, some lexical elements, etc.) so there are a lot of similarities. Kotlin has val and var, which is the same as C# var.
Want to really turn C# into Kotlin?
Put this in your .csproj:
<PropertyGroup>
<Nullable>enable</Nullable>
<WarningsAsErrors>CS8600;CS8602;CS8603;CS8618</WarningsAsErrors>
</PropertyGroup>
There's a nice difference between C# and Kotlin. In Kotlin you simply define a func and pass it because they are first class citizens. Gtfo with your ugly Func Java style shit.
I'll give you one simple example. Take Monero:
Full blown Java library will everything you need. Crypto utilities, daemon etc.. Everything's in there
https://github.com/monero-ecosystem/monero-java
Now check out this https://github.com/monero-ecosystem/csharp-monero-rpc-client
It's just a RPC client, nothing else because nobody wants to write for C#. You filthy fricking paid shill. And it's like that with a billion other projects. Nobody wants to write C# which is why they founded that troony .NET foundation, paying people to write libraries in order to create some kind of masquerade that C# would be popular. It's pathetic tbh.
2 years ago
Anonymous
https://www.nuget.org/packages/MoneroApi.Net/
2 years ago
Anonymous
kek and I think it's not even compatible with the post .NET Core .NET.
You don't get it, do you? You can keep listing features as much as you want, they don't make C# funtional because it wasn't designed to be functional in anyway. And by the way, those are not functional features.
you took the wrong nuget library, the rpc client isn't the reference for writing applications that work with monero in c#, it's the moneroapi.net
https://www.nuget.org/packages/MoneroApi.Net/
2 years ago
Anonymous
I can tell you 100% that the C# shill who keep shilling C# on this board 24/7 is not an actual dev but a hired semi coder homosexual. He keeps copy & pasting shit that makes 0 sense. You make a statement like , he doesn't even understand what you're talking about and he answers with
https://github.com/kripod/MoneroApi.Net >Project discontinued
And even if it weren't discontinued. That library doesn't include crypto utilities and a daemon either. Jesus you are beyond moronic.
2 years ago
Anonymous
Why don't you pass this as a request to your troony .NET foundation trannies. Maybe they will write one KEK
2 years ago
Anonymous
>You paid Microshat shills fricking baffle me.
When are you going to aknowledge that the people who like and use c# too are not fond of Microsoft either? I dislike Google, Microsoft and Oracle. That does not make me boycott Java, Go, Dart or Dotnet. I'm not a microshill as you like to call it dude. Neither i nor the other folks who appreciate C# in this thread. C# is a great language and it'll always be the first one that comes to my mind when i have to build something. At least until Rust matures enough.
2 years ago
Anonymous
Now imagine if you could group extension methods together, then make a generic bound on them, or take them as a function parameter
2 years ago
Anonymous
>Java has the Stream API.
Which is not an equivalent of LINQ in any way or form. At best they're the equivalent of IEnumerables/ICollections.
2 years ago
Anonymous
>Operator Overloading is bad
This is opinion based and therefore your opinion is discarded
>Java has a bigger ecosystem with a lot of alternatives that do the same job. The dotnet libraries are more qualitative and more robust.
Another kek thing is when it comes to big data your shitty Microsoft ecosystem is nothing but a dead desert. Kafka, Cassandra, Spark, Hadoop, Pulsar etc are all Java/Scala.
2 years ago
Anonymous
>Kafka, Cassandra, Spark, Hadoop, Pulsar etc are all Java/Scala.
Spark and Cassandra are available for C#. Up until now it was not possible to use Kafka, we had to use RabbitMQ instead but even Kafka is now available on dotnet. So what's your point exactly?
>The dotnet libraries are more qualitative and more robust.
The truth is as soon as you step off the golden path of MS vendored libraries, it's mostly paid libraries and abandonware from random pajeets
2 years ago
Anonymous
Their ecosystem is literally non existent. It's slighty different now because they have founded that gay ".NET foundation" thinking they can fix that problem with money but the real truth is nobody actually wants to write libraries for C#. Whenever there is some kind of a new platform, project on the internet, there are ALWAYS people immediately writing JS, Golang, Java libraries out of their own initiative but pretty much never C#. Their whole community is nothing but a bought echochamber.
2 years ago
Anonymous
Nuget has as many libraries as Python's pip but with less redundancy. I dare you to give me one thing that's lacking from the dotnet ecosystem and that is present in npm, pip and maven and i'll shit my mouth. If you can't, just admit you're a contrarian who doesn't know shit about shit
2 years ago
Anonymous
How about good pdf manipulation library? Java has at least pdfbox. Node has pdfkit (+ some wrappers) or pdf-lib. All .net options are either paid, or abandonware.
How about something sane for OOXML (open-xml-sdk is not sane), let's say for xlsx generation and processing? POI for java, obviously, and node has some options as well. For .net? Paid (EPPlus) or various abandonware, or some shady chinese POI port (and with exception of EPPlus 6+, which is again, paid, all of them depend on libgdiplus)
Fricking node has better ecosystem
2 years ago
Anonymous
>EPPlus
Nobody uses this anymore since the release of Core. Everybody uses either PDFSharp and or IronPDF which are free. Keep picking your battles and willfully ommitting the obvious.
2 years ago
Anonymous
This is hilarious. You ALWAYS come up with some kind of cope answer whenever someone makes it clear how shitty and abandoned the .NET ecosystem is. >prove that almost all giant platforms are running Java
"IT'S VAPORWARE" >prove that even more startups are using Java than C#
Frick I can't even remember what cope answer he delivered on this one >prove that Java has at least twice as many job opportunities
"THAT WILL CHANGE"
2 years ago
Anonymous
Plug yourself off this board, seek help and cure your mental insanity. You keep manipulating the truth and showing what suits your narrative. Why did you chose to talk about EPPlus and ignore PDFSharp and IRONPDF when they're what anyone on the Core standard uses.
2 years ago
Anonymous
That PDF shit wasn't me. I posted the Monero shit.
2 years ago
Anonymous
Just to clarify - that was me, not him.
You asked for at least one example, i gave you two - xlsx and pdf.
No, neither pdfsharp, nor ironpdf replace epplus, because they are for for different usecases
2 years ago
Anonymous
Well first of all EPPlus is for reading/writing Excel files. And it's the only good one, because the rest are abandoned and/or non-crossplatform due to System.Drawing usage
Now >PDFSharp
Abandonware. Not even compatible with newer .net series. >IronPDF
Paid. There is no free version
So my point stands >I dare you to give me one thing that's lacking from the dotnet ecosystem >Keep picking your battles
Whatever you say, my dude
>C# is so much better than Java, and i'm even taking into account their latest iterations of the language. It's also incredibly easy to work with and to deploy a working solution in no time. I have yet to find an easier to read syntax and a language that gets my webserver and api up
Don't fall for this bait. I got shilled into using .NET for a web service that I'm building, and the docs are some of the most convoluted and atrocious I've ever had the displeasure of reading. There's no clear cut way to do anything; there's circular references everywhere. Want to spin up a simple rest API with session authentication out of the box, without getting funneled into razor, or MVC or whatever the garbage MS equivalent of postgres is? Good luck. No, I don't want to make a stupid MVC or razor pages site or use JWT for auth. I just need the option to spin up a simple headless API with working redis session auth, that I can call from my react front-end, without having to re-implement fricking identity. I might as well just use golang at that point if I'm gonna be making all that boilerplate by myself.
m$ and sql
why haven't they ever got anything real
sql is a peripheral dog. the problem
of course, it serves the m$ model, to make the projects as large as possible and employ as many mediocre m$ certified dross, as possible.
Because they're the employers, and you're the one begging them to give you the most money for the least amount of work.
You eat the shit that falls from your betters' tables, or you end up in prison. You have nothing of value to bargain with, so code monkey, code!
Also kek @ Microsoft releasing a new GUI framework every two years and selling it as the next killer framework.
Everything Microsoft does is shit and fails. Everything. Silverlight, Zune, Windows Phone/Mobile, Cortana (FRICKING KEK), MSN, Bob etc.. what's worse is they even kill products that were once successful and turned into shit after they had been bought by Microsoft like Nokia and Skype. What's worse is that obvious paid shilling on IQfy. Literally israelite tier.
The language itself is great, it's all the benefits of java with half the jank. The problem is with .Net and microsoft trying to retire half their APIs every other year. If it weren't for the big customers keeping them honest about support, they would have tried to throw ADO and winforms in the garbage. Microsoft still can't get their shit together with .net grfx apis. MS keeps being buttholes about interop with .net.
I would love to know how the C# shilling works. Are they like being paid an hour? Per thread? Are they Microsoft employees or did Microsoft hire one of these IQfy shilling companies?
>>Mass reply
You mean mass samegayging? Can I ask you something? Do you ACTUALLY believe people think all these posts are not coming from the same person?
I like c#
syntax is pleasant and it can do anything you'd want a windows machine to do
efforts to expand it beyond the confines of Microsoft's domain is a good idea
I don't care for the memory footprint and it seems to be tied hand in hand with windows apps/metro making it unclean by association
Same reasons they'd choose Java, but with the added benefit that programmers prefer working in C#. Simply choosing to be a C# shop means you have access to better programmers, and therefore should expect fewer bugs.
>MUH DISPUTE
Do you even know what IKVM is for? It is not even meant to be a replacement for the JVM. You can use some old and small pre Java 8 libraries on Mono with a huge performance pentalty, that's it.
2 years ago
Anonymous
IKVM was updated yesterday and it supports .NET 6. Turns out it's you who's the moronic subhuman Black person.
2 years ago
Anonymous
>IKVM was updated yesterday and it supports .NET 6. Turns out it's you who's the moronic subhuman Black person.
That doesn't even contradict anything I've said?
2 years ago
Anonymous
>it's you who's the moronic subhuman Black person.
At least I'm not poor and fat. Have you lost weight already or are you still as fat as in picrel?
>Is that why you can't string a single sentence together to dispute anything?
What's even funnier is that this whole C# shilling thing seems to be a 24/7 job for you. You're on par with child molesters for me. Seriously, this is how much I hate you. If at least you were an actual developer but you're just copy&pasting shit from google and probably C# trannies you're hanging out with on some interntal Microisraelite DIscord channel. Frick you, frick your mother, frick your father, frick his father, frick his uncle and his mothers niece.
2 years ago
Anonymous
I can tell from how irrationally angry you are that you probably don't have a clue.
2 years ago
Anonymous
>I can tell from how irrationally angry you are that you probably don't have a clue.
You sound like those reddit vaxxtards
2 years ago
Anonymous
you sound like an incel who spends his days and night arguing about race on pol
I like .net but god damn I fricking hate microsoft and its corporate bullshit, this goblino in particular caused some shitstorm in .net foundation during one of its power trips
While i agree that C#'s performance is rapidly evolving i think it's still too far to be considered on par with C++ yet and i doubt if it'll ever get there.
If you compare C# to a situation where you're running C++ on an embedded system where you know the exact hardware you're running on, C++ will smoke it. But you'd never use C# there to begin with. C# is when you're building some windows app that has to run on ten thousand different hardware configurations, where you can't really do much specific optimization in C++. They're a lot closer there than people generally give credit for, and that's the only comparison between the two that makes sense anyways.
I thought C# was mainly used to build apps and services on the cloud and write frontfacing APIs nowadays? In that case, i believe C++ would most probably still smoke it.
but, I thought there were no c# jobs ? Nice try java gay
C# is required a lot, same with Python, Go, and lately Rust
>samegayging this hard
it's a shit language - just let it go
>troony frogging this hard
go eat a bag of Black person dicks and go back to your reddit discord
>samegayging
You know you can see the number of posters on a thread moron. Do you?
Name one feature that's missing in c#
Constructor property promotion.
Impossible for strong typed languages
The frick is this
>Immutability by default.
This would kill c# performance by a lot but I guess it's a debatable feature that's missing
>This would kill c# performance by a lot but I guess it's a debatable feature that's missing
F# has it and runs as well as C#, and you can optionally create mutable values. I don't know how this would effect C# performance? It would be like making everything at every level readonly. May actually enable more compiler optimizations but that's beyond me. I would say it's more of a "quality of life wish" than a missing feature, at least compared to the other things listed.
>>higher kinded types and type classes
>The frick is this
Not that anon but they're "very loosely" "generic generic with return type polymorphism" and "traits". See Haskell. They're very powerful. .NET CANNOT support higher kinded types - the type system is too weak. At least that was the case a couple years ago. Scala can get away with it because the JVM does type erasure (and they still had to bring in the Haskell creators to do it). In short, "much better interfaces and generics".
how would immutability by default kill performance? if anything that enables tons of optimizations (try using the const keyword in certain places in C++ and you'll be amazed)
i disagree that it's a "missing feature" btw, it's a nice default and it should be like that for all languages, but nothing else
The way I see is more memory and computation wasted to keep up with all the immutable data.
Just popping in to say - you're a moron
What?
higher kinded types
type classes
Immutability by default. Guaranteed tail-call optimization. Currying. Basically the features in F#.
*oh and can't not say GOOD type inference.
> others anons already mentioned good suggestions too
A garbage collector that isn't ass and doesn't make me write my own finalize to null everything instead
Having to write your own finalizer is a good thing you dip shit
In what way? I'm a professional trying to get work done, not some hobbyist trying to jerk off
No you're not a professional or at least a very junior one, holding resources hostage waiting for the GC to kick in when you already done querying db/reading files is insane.
Let the gc do its job instead of larping.
>no argument, only memes
About what I figured
You are moronic junior dev that's why I have to meme.
You complain about having to use finalizer but you actually isn't forced to use but AGAIN it's a good practice to use one when you're done with all the IO stuff eating resources.
>you actually isn't forced to use
Ah, it's a pajeet, that makes more sense
syntax that isn't ugly verbose dogshit. here - enjoy another frog you dumb queer.
The latest versions have long since solved that non issue
sum types
real meta programming without the bullshit
ufcs
>sum types
There isn't a single type that can't be used
>sum types
can be implemented if you have autism, but it's a really shitty kinda hacked together solution
All I see are .net positions. People ask for a mature backend language all the time.
C# is not a garbage language anon, you should give it a try
why are there java vs c# wars? they literally do the same thing, go to sleep
There are three truly great languages. C# is one of them. The other two are Rust and Swift.
yikes
FRICK OFF
python
sick of this fking garbage
C# is a fricking toy limited shit. they could never do fast languages. vb? for decades
idiots
die java shill, c# is at least an enjoyable language
>Extremely easy to get shit done with
>Runs on literally everything
>LINQ
>Decently fast without having to go full autism with C/C++
>Boring tech that's been around forever and is relatively easy to hire for
Why not?
>LINQ
>not Fluent instead
ngmi
i bet u think macs are still good workstations
What about the M1 macs doe?
>C# shills applying reverse psychology now
Guten Tag
Hallo! Wie geht's?
C# is an awesome language. Legit frick yourself with your Java dildo
2 billion dildos are running Java
>"anti C# shill thread"
>a shitton of generic "C# is an awesome language. frick Java" answers
This board is dead
Could be worse, my employer tried to make me code in R
could have been worse. could have been javascript
We assembly is replacing js
C# is so much better than Java, and i'm even taking into account their latest iterations of the language. It's also incredibly easy to work with and to deploy a working solution in no time. I have yet to find an easier to read syntax and a language that gets my webserver and API up and running in less time than c#. If you have some suggestions feel free to share them with me. In the mean time c# is my go to and is synonymous of web to me, just like Javascript is.
Do you shill even realize how generic your shill posts sound? How the frick is that difficult? https://jooby.io/. The reason nobody wants to use C# is because of Microsoft.
>C# is so much better than Java
Give us 5 examples why
>Generics
You have real generics (not the bad casting joke that Java calls generics), and you can perform reflection (metaprograming) on them
>Operator Overloading
One of my favorite features, which C# has but that Java does not, is operator overloading. For instance, if you are implementing software that involves operations involving a class of 2D points, you can use operator overloading for +, and - to represent the standard (point, point) operations, and you can use * to represent scalar multiplication as a (scalar, point) operation. It can also be used to represent dot product. Then, your code can be made to look like the corresponding mathematical operations that it implements.
>LINQ
This one is the biggest productivity booster. Instead of using yet another query language (YAQL) you have one easy and extremely powerful syntax to parse html/xml, communicate with SQL, no sql, graphql or any other possible Type of DB. You can use it for algorithms or web scrapping and anything in between.
> Async Await
Since asynchronous programming was introduced as a feature in f# and then in c# it became a standard that is adopted by every language. This feature in particular is a make or break for me, especially when it comes to building an i/o intensive server. We're in fricking 2022 and the Java board still didn't decide to add async/await to that deprecated language.
>A better ecosystem
Java has a bigger ecosystem with a lot of alternatives that do the same job. The dotnet libraries are more qualitative and more robust. JPA and Hibernate are no match for EF Core and i've yet to see an equivalent of Identity Server.
Fricking kek you needed 20 minutes to google that bullshit together.
>Generics
fair point
>Operator Overloading
This is one of the worst "features" ever because it is being abused in 99.9% of all cases especially since C# oo is static only. It's absolute dogshite.
>LINQ
Lmao big deal. Java has the Stream API.
>Async Await
dogshit async model. Loom is better especially since it lets you suspend with no problem.
>The dotnet libraries are more qualitative and more robust.
LMFAO what the frick are you talking about? Source? What the frick is more robust about them? They aren't even backwards compatible. I can still use a jar from 15 years ago while every library that was written in .NET < version 3 has basically to be rewritten. GTFO and KYS you homosexual shill.
good morning sirs
>>LINQ
>Lmao big deal. Java has the Stream API.
The Stream API is a restrictive tool from the Bronze Age that doesn't even come close to the power of LINQ. The Stream API sufferrs from a cruel lack of extension methods and those that are already there are useless in many cases. The problem with Java's version of "extension methods" is that you can not add functionality to built-in classes/interfaces. It only allows an API to be extended by the person that owns the API. The real power of extension methods was that it let anyone grow the base classes of an existing API without breaking it.
>Async Await
>dogshit async model. Loom is better especially since it lets you suspend with no problem.
moronation at its finest. Keep rolling in your bath of boiling shit. And yeah tell me what 's bad about asynchronous programmimg, make me laugh. Tell me how starting new threads for every new i/o call is better in anyway than sending the call, putting the function to sleep in wait of a response, proceeding to the following operations and bringing back the function to live when you get a response. How is starting a new thread for external i/o going to influence the response time of the external service you try to get response from?
>This is one of the worst "features" ever because it is being abused in 99.9% of all cases especially since C# oo is static only. It's absolute dogshite
Operator overloading is one of the best things that happened to C# and the fact that you're trying to discredit it based on the fact that some people might over use it is laughable. Do you know how many OOP features "can be" great but make your program a mess when they're overused? Operator overloading isn't there to be used everywhere on your program but it is a blessing to have when you need it. Your argument equates to saying that inheritance is bad and should be removed from Java because too much inheritance is bad. You're playing with words.
>Bronze Age
Its youger than LINQ.
> The Stream API sufferrs from a cruel lack of extension methods and those that are already there are useless in many cases
Why the frick would you need extension methods when you have flatMap? Do you even functional programming? What the actual frick?
> It only allows an API to be extended by the person that owns the API.
This is exactly what I meant in my previous post. morons like you abuse overator overloading.
>moronation at its finest. Keep rolling in your bath of boiling shit. And yeah tell me what 's bad about asynchronous programmimg, make me laugh. Tell me how starting new threads for every new i/o call is better in anyway than sending the call, putting the function to sleep in wait of a response, proceeding to the following operations and bringing back the function to live when you get a response. How is starting a new thread for external i/o going to influence the response time of the external service you try to get response from?
Async/await is a dogshit model that is 1. heavier than green threads 2. makes code unreadable (hence async), you can write imperative code with loom and 3. suspending/blocking threads is no problem with Loom.
>Operator overloading is one of the best things that happened to C# and the fact that you're trying to discredit it based on the fact that some people might over use it is laughable
No it is not for the reasons I mentioned above.
>Spark and Cassandra are available for C#.
They are not "available" for C# there are just broken client libraries for it. I don't think you even understand Kafka and Spark and the whole point is that you don't have to go out of the ecosystem. .NET is a master of nothing.
You paid Microshat shills fricking baffle me. How about you fricking fix Windows first? Pic related is literally what EVERY SINGLE Microsoft product is like. israelites like yourself selling it as a silver bullet but as soon as you're using it you realize it's garbage
>I hate microsoft so I have to invent reasons to hate c#
everytime
They do the same with C# as they do with any other Microsoft product. Bloating it with features just for the sake of shilling features.
>>Bronze Age
>Its youger than LINQ
Yes. It's younger than LINQ. So you'd expect it at least to borrow. LINQ features and maybe improve them. Right? No, they made a shittiest restrictive API lacking extension methods and a poor implementation of iterators and called it a day. So it maybe have been released after LINQ, but it's still a bronze age feature in comparison.
>Why the frick would you need extension methods when you have flatMap?
Aaahhahahah now i can't believe i read that!!
>Do you even functional programming?
Ask the Java board. C# started implement in FP features borrowed from ML and Haskell since day one.
>Async/await is a dogshit model that is 1. heavier than green threads 2. makes code unreadable (hence async), you can write imperative code with loom and 3. suspending/blocking threads is no problem with Loom.
Green threads require a runtime, and a smarter runtime that that. Async / await are just callbacks on an event loop that perform better when you're calling an external service or working with a UI. The parrallelism part mainly brings an advantage for long running tasks. Besides, C#'s implementation of async/await (just like Rust) is perfectly compatible with parralelism and allows you to replicate goroutines if you want by combining async/await with channels/tasks. Instead of requiring the developer to manually deal with asynchronous (or non-blocking) I/O calls, the runtime system takes responsibility for this. Like garbage collection, it's not appropriate for all use cases and it's only there to make things more moron friendly.
Async/Await is actually very simple to implement in C#, i don't know what you're refering to exactly. Maybe it's messy in Javascript. On the contrary, i find that async/await brings a lot more readability and highlights the tasks i/o that communicate with an external service and wait for a response call.
>Aaahhahahah now i can't believe i read that!!
Then tell me why you would need extension methods. Apparently you don't understand monads.
>Ask the Java board. C# started implement in FP features borrowed from ML and Haskell since day one.
Oh so it's you again. I've seen you post this "it borrowed features from Haskell" garbage a billion times now. Almost every language has borrowed functional features from Haskell, even Scala. What the frick is even your point you moron?
>Green threads require a runtime, and a smarter runtime that that.
They don't with Loom, that's what's great about them. Now you can supply a scheduler but it's not necessary since the JVM handles them. With async/await you actually have to keep track which piece of code is blocking and which isn't. With loom you literally don't have to give a shit. It's superior in terms of maintainability/debugging and readability. er?
>What the frick is even your point you moron?
Not him but if I get this right, his poin is Java implementation of functional features are ass compared to C#
>Java implementation of functional features are ass compared to C#
They're both shit. Apart from the actual functional languages like Haskell, Scala, F# etc. Kotlin is the only language with acceptable functional capabilities.
C# has perfectly fine functional programming capabilities but is more on the OO end of the rope just like Kotlin. This post is the typical biased type of comment of people who shit on a language, not based on what i has to offer but based on it's backing. On the functional ladder, you can't put Java and C# on the same level and call yourself unbiased. Besides, Scala and F# aren't purely functional as you claim. Just like C#, they are multiparadigm languages but they are more on the FP end of the rope than the OO one. OCaml, Haskell, ML and Clojure are truly functional
The absolute state of your fried Mircosoft brain. When the frick did I say Scala and F# were purely functional language. I want you to fricking quote me right now.
>Just like C#, they are multiparadigm languages
No, they are not "just like C#". What makes a functional programming language functional is that you're having access to fundamental concepts like type classes, higher kinded types etc..which F# doesn't have either btw. Shit language.
>Kotlin has val and var, which is the same as C# var.
Why don't you just admit you don't know SHIT about functional programming? Yes, C# has some basic functional features JUST like Java but the way they are implemented are just ugly and makes the code look ugly as frick as well, contrary to Kotlin. I mean Java has higher order functions as well but they are ugly as frick to use. The ONLY reason C# is slightly more comfortable than Java is because Microsofrt doesn't give a flying frick about backwards compatibility, not because they are more competent and they can afford not to give a frick about backwards compatibility because they don't have nearly as many users as Java.
I can spot your posts from a mile away you are the same guy in every single fricking C# thread doing the same generic shilling over and over again. I swear to god I hope your whole fricking family dies by cancer.
>All I see are .net positions.
Fricking lol you really want me to post them again, don't you? You are the worst kind of israeliteshill. You just spread lies you don't even give a shit.
Closures delegates expression trees a generic query language that is not just an unusable marketing scheme like java streams and tail recursion compiler optimization are just a curated list of non exhaustive examples on FP features present in C# and that aren't in Java.
Java
>no interpolation
>no expression operators for functions
>no default parameter values
>no delegates
>interpolation
>default parameters
>functional features
When HR does shilling for programming languages kek
Many parts of Kotlin are modeled after C# (properties, interpolation, expression operators for functions operator overloading, Default parameter values, some lexical elements, etc.) so there are a lot of similarities. Kotlin has val and var, which is the same as C# var.
Want to really turn C# into Kotlin?
Put this in your .csproj:
<PropertyGroup>
<Nullable>enable</Nullable>
<WarningsAsErrors>CS8600;CS8602;CS8603;CS8618</WarningsAsErrors>
</PropertyGroup>
>They're both shit.
You clearly don't know C#
Eh you can even do this in Java you moron
Wow I don't care.
Why you called both of them shit? Autism?
Meant for
There's a nice difference between C# and Kotlin. In Kotlin you simply define a func and pass it because they are first class citizens. Gtfo with your ugly Func Java style shit.
I'll give you one simple example. Take Monero:
Full blown Java library will everything you need. Crypto utilities, daemon etc.. Everything's in there
https://github.com/monero-ecosystem/monero-java
Now check out this https://github.com/monero-ecosystem/csharp-monero-rpc-client
It's just a RPC client, nothing else because nobody wants to write for C#. You filthy fricking paid shill. And it's like that with a billion other projects. Nobody wants to write C# which is why they founded that troony .NET foundation, paying people to write libraries in order to create some kind of masquerade that C# would be popular. It's pathetic tbh.
https://www.nuget.org/packages/MoneroApi.Net/
kek and I think it's not even compatible with the post .NET Core .NET.
You don't get it, do you? You can keep listing features as much as you want, they don't make C# funtional because it wasn't designed to be functional in anyway. And by the way, those are not functional features.
Did you even read my fricking post? It's just an RPC client. There's no daemon and there are no crypto utilities which are necessary.
I haven't listed shit maybe you are confusing me with someone else, I was this guy
>And by the way, those are not functional features.
Yes they are
It's the same for the npm monero libraries. They're just rpc clients too. I quite honestly don't get the problem with using rpc clients
No? https://github.com/monero-ecosystem/monero-javascript
you took the wrong nuget library, the rpc client isn't the reference for writing applications that work with monero in c#, it's the moneroapi.net
https://www.nuget.org/packages/MoneroApi.Net/
I can tell you 100% that the C# shill who keep shilling C# on this board 24/7 is not an actual dev but a hired semi coder homosexual. He keeps copy & pasting shit that makes 0 sense. You make a statement like , he doesn't even understand what you're talking about and he answers with
.
https://github.com/kripod/MoneroApi.Net
>Project discontinued
And even if it weren't discontinued. That library doesn't include crypto utilities and a daemon either. Jesus you are beyond moronic.
Why don't you pass this as a request to your troony .NET foundation trannies. Maybe they will write one KEK
>You paid Microshat shills fricking baffle me.
When are you going to aknowledge that the people who like and use c# too are not fond of Microsoft either? I dislike Google, Microsoft and Oracle. That does not make me boycott Java, Go, Dart or Dotnet. I'm not a microshill as you like to call it dude. Neither i nor the other folks who appreciate C# in this thread. C# is a great language and it'll always be the first one that comes to my mind when i have to build something. At least until Rust matures enough.
Now imagine if you could group extension methods together, then make a generic bound on them, or take them as a function parameter
>Java has the Stream API.
Which is not an equivalent of LINQ in any way or form. At best they're the equivalent of IEnumerables/ICollections.
>Operator Overloading is bad
This is opinion based and therefore your opinion is discarded
>Java has a bigger ecosystem with a lot of alternatives that do the same job. The dotnet libraries are more qualitative and more robust.
Another kek thing is when it comes to big data your shitty Microsoft ecosystem is nothing but a dead desert. Kafka, Cassandra, Spark, Hadoop, Pulsar etc are all Java/Scala.
>Kafka, Cassandra, Spark, Hadoop, Pulsar etc are all Java/Scala.
Spark and Cassandra are available for C#. Up until now it was not possible to use Kafka, we had to use RabbitMQ instead but even Kafka is now available on dotnet. So what's your point exactly?
>The dotnet libraries are more qualitative and more robust.
The truth is as soon as you step off the golden path of MS vendored libraries, it's mostly paid libraries and abandonware from random pajeets
Their ecosystem is literally non existent. It's slighty different now because they have founded that gay ".NET foundation" thinking they can fix that problem with money but the real truth is nobody actually wants to write libraries for C#. Whenever there is some kind of a new platform, project on the internet, there are ALWAYS people immediately writing JS, Golang, Java libraries out of their own initiative but pretty much never C#. Their whole community is nothing but a bought echochamber.
Nuget has as many libraries as Python's pip but with less redundancy. I dare you to give me one thing that's lacking from the dotnet ecosystem and that is present in npm, pip and maven and i'll shit my mouth. If you can't, just admit you're a contrarian who doesn't know shit about shit
How about good pdf manipulation library? Java has at least pdfbox. Node has pdfkit (+ some wrappers) or pdf-lib. All .net options are either paid, or abandonware.
How about something sane for OOXML (open-xml-sdk is not sane), let's say for xlsx generation and processing? POI for java, obviously, and node has some options as well. For .net? Paid (EPPlus) or various abandonware, or some shady chinese POI port (and with exception of EPPlus 6+, which is again, paid, all of them depend on libgdiplus)
Fricking node has better ecosystem
>EPPlus
Nobody uses this anymore since the release of Core. Everybody uses either PDFSharp and or IronPDF which are free. Keep picking your battles and willfully ommitting the obvious.
This is hilarious. You ALWAYS come up with some kind of cope answer whenever someone makes it clear how shitty and abandoned the .NET ecosystem is.
>prove that almost all giant platforms are running Java
"IT'S VAPORWARE"
>prove that even more startups are using Java than C#
Frick I can't even remember what cope answer he delivered on this one
>prove that Java has at least twice as many job opportunities
"THAT WILL CHANGE"
Plug yourself off this board, seek help and cure your mental insanity. You keep manipulating the truth and showing what suits your narrative. Why did you chose to talk about EPPlus and ignore PDFSharp and IRONPDF when they're what anyone on the Core standard uses.
That PDF shit wasn't me. I posted the Monero shit.
Just to clarify - that was me, not him.
You asked for at least one example, i gave you two - xlsx and pdf.
No, neither pdfsharp, nor ironpdf replace epplus, because they are for for different usecases
Well first of all EPPlus is for reading/writing Excel files. And it's the only good one, because the rest are abandoned and/or non-crossplatform due to System.Drawing usage
Now
>PDFSharp
Abandonware. Not even compatible with newer .net series.
>IronPDF
Paid. There is no free version
So my point stands
>I dare you to give me one thing that's lacking from the dotnet ecosystem
>Keep picking your battles
Whatever you say, my dude
I thought this was going to be an itachi pasta.
>C# is so much better than Java, and i'm even taking into account their latest iterations of the language. It's also incredibly easy to work with and to deploy a working solution in no time. I have yet to find an easier to read syntax and a language that gets my webserver and api up
Don't fall for this bait. I got shilled into using .NET for a web service that I'm building, and the docs are some of the most convoluted and atrocious I've ever had the displeasure of reading. There's no clear cut way to do anything; there's circular references everywhere. Want to spin up a simple rest API with session authentication out of the box, without getting funneled into razor, or MVC or whatever the garbage MS equivalent of postgres is? Good luck. No, I don't want to make a stupid MVC or razor pages site or use JWT for auth. I just need the option to spin up a simple headless API with working redis session auth, that I can call from my react front-end, without having to re-implement fricking identity. I might as well just use golang at that point if I'm gonna be making all that boilerplate by myself.
m$ and sql
why haven't they ever got anything real
sql is a peripheral dog. the problem
of course, it serves the m$ model, to make the projects as large as possible and employ as many mediocre m$ certified dross, as possible.
They sound like crypto shills KEK
Because they're the employers, and you're the one begging them to give you the most money for the least amount of work.
You eat the shit that falls from your betters' tables, or you end up in prison. You have nothing of value to bargain with, so code monkey, code!
Also kek @ Microsoft releasing a new GUI framework every two years and selling it as the next killer framework.
Everything Microsoft does is shit and fails. Everything. Silverlight, Zune, Windows Phone/Mobile, Cortana (FRICKING KEK), MSN, Bob etc.. what's worse is they even kill products that were once successful and turned into shit after they had been bought by Microsoft like Nokia and Skype. What's worse is that obvious paid shilling on IQfy. Literally israelite tier.
>Microsoft
Damn, the woman! That's why c# is getting bloated as c++
HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA
*"QUALITY ECOSYSTEM"
The language itself is great, it's all the benefits of java with half the jank. The problem is with .Net and microsoft trying to retire half their APIs every other year. If it weren't for the big customers keeping them honest about support, they would have tried to throw ADO and winforms in the garbage. Microsoft still can't get their shit together with .net grfx apis. MS keeps being buttholes about interop with .net.
I would love to know how the C# shilling works. Are they like being paid an hour? Per thread? Are they Microsoft employees or did Microsoft hire one of these IQfy shilling companies?
All I know is that the mods are involved
>C# is bad
>Mass reply saying it's not bad
>Wow why so much shilling
moron
>>Mass reply
You mean mass samegayging? Can I ask you something? Do you ACTUALLY believe people think all these posts are not coming from the same person?
Now it turns into a schizo thread, congrats
Shut the frick up you gay paid shill
I like C#. It's comfy.
ayy
>Why do employers insist on such a garbage language?
Honest question. Why the shilling for languages? What do you homosexuals seek to gain? Pick the right one for the fricking job
"shill shill shill!" without hard evidence really should be a bannable offense. morons are using it to kill every thread on every board
I like c#
syntax is pleasant and it can do anything you'd want a windows machine to do
efforts to expand it beyond the confines of Microsoft's domain is a good idea
I don't care for the memory footprint and it seems to be tied hand in hand with windows apps/metro making it unclean by association
Same reasons they'd choose Java, but with the added benefit that programmers prefer working in C#. Simply choosing to be a C# shop means you have access to better programmers, and therefore should expect fewer bugs.
the "muh java ecosystem" has been (once again) ported to .NET: https://github.com/ikvm-revived/ikvm
Jesus you're fricking moronic.
Is that why you can't string a single sentence together to dispute anything?
>MUH DISPUTE
Do you even know what IKVM is for? It is not even meant to be a replacement for the JVM. You can use some old and small pre Java 8 libraries on Mono with a huge performance pentalty, that's it.
IKVM was updated yesterday and it supports .NET 6. Turns out it's you who's the moronic subhuman Black person.
>IKVM was updated yesterday and it supports .NET 6. Turns out it's you who's the moronic subhuman Black person.
That doesn't even contradict anything I've said?
>it's you who's the moronic subhuman Black person.
At least I'm not poor and fat. Have you lost weight already or are you still as fat as in picrel?
>Is that why you can't string a single sentence together to dispute anything?
What's even funnier is that this whole C# shilling thing seems to be a 24/7 job for you. You're on par with child molesters for me. Seriously, this is how much I hate you. If at least you were an actual developer but you're just copy&pasting shit from google and probably C# trannies you're hanging out with on some interntal Microisraelite DIscord channel. Frick you, frick your mother, frick your father, frick his father, frick his uncle and his mothers niece.
I can tell from how irrationally angry you are that you probably don't have a clue.
>I can tell from how irrationally angry you are that you probably don't have a clue.
You sound like those reddit vaxxtards
you sound like an incel who spends his days and night arguing about race on pol
You got that right chief
based chad
cursed turbohomosexual
Calling yourself "based" and using homosexuality as a derogative are extremely cringe
The self documenting code meme
It's not a meme if you aren't low IQ
Because MBAs can spell it
>Hello. I'm your personal Microshat troony.
I like .net but god damn I fricking hate microsoft and its corporate bullshit, this goblino in particular caused some shitstorm in .net foundation during one of its power trips
>the irrationally angry and unemployable larp dev is also anti-vax
Imagine my surprise
C# is rapidly approaching C++ speeds in real world scenarios where you don't have an exact hardware target.
While i agree that C#'s performance is rapidly evolving i think it's still too far to be considered on par with C++ yet and i doubt if it'll ever get there.
If you compare C# to a situation where you're running C++ on an embedded system where you know the exact hardware you're running on, C++ will smoke it. But you'd never use C# there to begin with. C# is when you're building some windows app that has to run on ten thousand different hardware configurations, where you can't really do much specific optimization in C++. They're a lot closer there than people generally give credit for, and that's the only comparison between the two that makes sense anyways.
I thought C# was mainly used to build apps and services on the cloud and write frontfacing APIs nowadays? In that case, i believe C++ would most probably still smoke it.