Say something good and bad about C#

...

Other urls found in this thread:

youtube.com/watch?v=gBkDvqIGSaE
stackoverflow.com/questions/82437/why-is-it-impossible-to-override-a-getter-only-property-and-add-a-setter.
stackoverflow.com/a/4262301
twitter.com/SFWRedditVideos

poo containment language
poo containment language

>gets you employed
>you have nothing to talk about with collegues at work because they only know about windows and microsoft ecosystem

POO
LOO

>.NEET
>Employed
Poo harder, satya

scaffolding, visual studio is great (stay mad losers), linq is great
a little bit heavy but hosting is cheap nowadays so it doesn't really matter when your object is 3K in memory and then you see neo-luddites flipping shit insisting we have to stick with some functional 80s piece of shit hipster lang just so it will fit on a PDA made in 2001

HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA

No wonder there

Linq is broken

stdlib
Microshitware and retarded Object.NamingConvention

shit, all this generics garbage hurts my eyes, i don't know why people like it. i'm glad i code in dynamic languages.

Good: Good control over the execution flow of your application unlike say Node or PooHP, generics and interfaces adding and removing features from data types easily
Bad: Generics and interfaces, you can get lost pretty bad in classes implementing thousands of em and type casting can get pretty bad, can be a mess to deal with sometimes

It's not JavaScript.
It's C#.

I stopped reading those "oh, this language is super shitty because I say so"-dropout psuedo complaint articles a long time ago. When I am looking up reference material, it's fun to see both stackoverflow show up at the top and then some "you shouldn't -use- this" written by some dropout faggot. Guess who is making more money, the "clueless code monkey" on stack or the psuedo dropout who still goes to university taking 101 classes to tell everyone else how wrong they are?

>Linq is bad because I don't use lists
This is like saying a for loop is bad because you believe that it's better to still use a goto statement. The point of this framework is to interact with this thing called "a database" so you can get the list of records you want from it, without having to write sql queries by hand every time. I know this isn't relevant to you as a wannabe 80s haskell dropout hipster, next time it might be easier to retitle the little page you got there as "I am a neo-luddite stuck in the previous millennium and I can't accept anything else exists"

>Damage status
>Controlled
Fuck off, pajeet. Unless you come up with a valid argument don't come back.

What's your issue with JS, personally?

>Literally botnet language
Eww

meming aside? nothing. I have no real problems with any programing language and most* of them have a use one way or another.

>Linq is broken
The pic related describes an extremely niche and minor issue.
Yeah, being able to write a new universal LINQ method without having to implement it in every single numerable class it's going to be used with would be a nice perk to have, but it isn't something to call "broken".

LINQ visualizes selection process akin to SQL - especially when you resort to the writing style presented in the pic related. Given that, I'm not even sure adding layers of abstraction directly to it is a good idea, to begin with.

It's visually pleasing, clean, and very readable.
It's somewhat niche.

>meming aside? nothing.
a = '1'
b = 2
c = a + b
Guess what c's value is

...

never used JavaScript: not three because soft typing shittery?

‘12’

It actually makes sense. The language just allows you to concatenate strings with numbers - that's perfectly acceptable behavior.

>concatenate strings with numbers
'1' is not a string, mongol

It is in JS.

Are you retarded?

I am making more money than 80s dropout losers. And I mean all of them at once. Also, if I was making $1 with c#, it would also be more than all 80s dropout losers at once.

>we must remove lists because my shitty 80s lang doesn't have it
>we must remove the web because my shitty 80s lang doesn't have it
>we must eliminate 90% of the human race because they create a need that my shitty 80s lang can't satisfy
neo-luddites are so funny to watch. All you have to do, is take your shitty lang and put it on a web framework, and have some sort of database, and it'd be relevant overnight. but you can't do this because you're too busy spending 3 decades making an overcomplicated hello world. Pretending to be a "programmer" like this is worse than a liberal arts degree because you're even less likely to ever do anything with it

haskell (or insert your shitty hipster 80s dropout language here) is for hipsters who are too "smart" to make money

That's a string in JS. Well done.

patent trap

youtube.com/watch?v=gBkDvqIGSaE

Good: Easily best IDE/tooling of any language
Bad: Not nearly as performant as C/C++

Hmm, last I checked JS was a dynamic, weakly typed language, which also offers you ways to enforce the type of primitives
const a = Number('1');
const b = Number(2);
const c = a + b;
can you guess what c is not?

> Linq is broken because c# doesn't allow for generic type abstraction

This is factually incorrect.

1. Linq is not broken because the author claims something ELSE is broken

2. C# does allow for generic abstractions, the author is probably too preoccupied with their tranny pre-op HRT injections to get better with c#

3. Haskell is not a viable replacement for dotnet, specifically c# in any way shape or form

>Not nearly as performant as C/C++
For many tasks it actually is. The compiler optimizes the shit out of the code.
Of course, there's no arguing against the fact C++ and especially C are much more optimizable manually and whenever a human can optimize the code better than the compiler these languages will produce much faster results.

DOTNET_CLI_TELEMETRY_OPTOUT=1

For pretty much anything, assuming that you write optimal code, C/C++ will have better performance.

Now, it will take more code to do with C/C++. It will be harder to write optimal code. It's questionable if that addition performance matters at all in 99% of cases. But it will be faster.

>mfw people hating on fucking JS of all things are absolute brainlets

This. But I like typescript myself.

>For many tasks it actually is. The compiler optimizes the shit out of the code.
>pajeets actually believe this

As a language, it's broken and poorly thought out.

But it does protect retards from themselves and has good standards supporting tooling.

B T F O

>Gets blown the fuck out for not having arguments
>bububut maah money, trust me I make it more than u
Simply put, "pathetic".

sad but true

good: its what java should have been

bad: its object-oriented

> What Java should have been.

It *is* Java.

a lot of college recruiters prefer candidates with c# experience.

Are you really retarded, user?

Good:
Contains mediocre programmers that think they are "too smart for java"
Bad:
C# is probably the worst language I can think of. Microsoft rebranded Java is less portable than Java, slower and less expressive than modern Java. The language itself is stupid. Last time I had the misfortune to work with I was seriously pissed off. I remember:
> i++.ToString works, but ++i.ToString does not.
> Parameters are not supported for most properties, only indexers, even though this is possible in Visual Basic .NET.
> The conventions are difficult to code review and deviate from other popular language conventions of similar style:
- Almost everything is in pascal case (SomeClass, SomeConstantVariable, SomeProperty)
- Unable to differentiate between 'extends' and 'implements' without using Hungarian-like notation such as IInterface
> Promotes slop (variant types and LINQ, while powerful adds a lot of clutter)
>out parameters, with syntax sugar.
>You can't override a virtual or abstract property that has a getter OR a setter with one that has a getter AND a setter, making life quite difficult in the realm of property inheritance
But this does not apply to interfaces though, read stackoverflow.com/questions/82437/why-is-it-impossible-to-override-a-getter-only-property-and-add-a-setter.
> You can't perform any operations, even simple arithmetic, with objects inside a generic method (e.g. T plus(T t1, T t2) { return t1+t2; }
> You can't assign a new value inside a foreach loop (e.g. foreach(int i in vec) { i = i+1; }).
> Implementing IDisposable properly is too complicated. In particular, a naive implementation will not dispose if the finalizer is called by the garbage collector.
> Inconsistent numeric types: short is signed and ushort is unsigned; int is signed and uint is unsigned; long is signed and ulong is unsigned — but byte is unsigned and sbyte is signed.
There is a very low chance that I'll ever go back to C# again. C# is not worth my time

I know you are

Better than java
Still feels like java

Which one does pay more? C# or Java?

Not programming pays you more than programming

t. never had a job.

I have been programming for living since 2004-5

do you really write code to manage memory yourself on 2017?

also please note the graph posted has data for .net core which is the bleeding edge unoptimized version of .net that is not in wide use.

Wouldn't the biggest problem with C#/.net is that it is more of a language used in business technologies thus causing knowledge of the .net libraries to outweigh basic programming knowledge?

Of course this is impossible in C#. This author does not understand types. f does not return type SomeData, it returns type C.

>I stopped reading those "oh, this language is super shitty because I say so"-dropout psuedo complaint articles a long time ago

I blocked medium.com in my DNS settings a long time ago. Great way to keep your sanity in check.

Good for you I don't even need to do so because it's fuckin blocked sheer by default

>i++.ToString works, but ++i.ToString does not.
That's because you are a brainlet and have no clue how unary operators work.

Not him but it just works in real languages
#include
#include


int main()
{
int i{3};
std::cout

entirely different syntax
okay, since you are worse than a brainlet I'll show you how those unary operators are interpreted by the compiler
(i++).ToString
++(i.ToString)
It's okay to be wrong sometimes, at least admit it :)

>(i++).ToString
>++(i.ToString)
ABSOLUTELY DISGUSTING

Do pajeets actually defend this garbage?

...

You are not white, pajeet

not him im actually op but this is typical to say the least.
>gets btfo
>b-but you are pajeet
you really got him there mate

>botNET Core SDK

C# is objectively the best programming language for the development of graphical user interfaces. C# is Microsoft's very capable answer to Java and is a force to be reckoned with, even in cross platform development.

With Android and iOS, there is Xamarin (based on Mono). With development on macOS and Linux there are two different frameworks: .NET Core and Mono. Mono is a completely opensauce implementation. There is also standard .NET which is primarily for Windows.

C# is obviously not as fast as C++ but still draws a lot of inspiration from it. C# also draws inspiration from Java. It learns from the mistakes of both of these languages.

Optional Framework (as you can use Mono or standard .NET instead) with optional ANONYMOUS telemetry. Learn to read.See This.

>> Parameters are not supported for most properties,
You do realize that properties are synatic sugar for accessors and mutators, right?
Does public int getNumber(){ return 0;]] look familiar to you? If you are putting parameters on a getter or a setter, is it really a getter or a setter then? Doesn't seem like it, numbnuts.

This couldn't be more wrong.

>So user, can you tell us why you would be a good fit for our muhcompananapapa
>T-THIS IS MY CHANCE
>shits so hard he leaps onto table jumping up from the shit which hardens instantly giving him a shit-platform upon which to speak
>**************I ___----USE----_____ A SHITTY OLD 80S LANGUAGE AND I AM BETTER THAN YOU!!!!!!!!!!!!!!!!!!!!!!!!*************
>oh user, I just remembered, I have a fucking doctor's appointment you asshole!
>3 hours later at doctor's office user showed up with shitrocket-stand still attached asking if that guy is available for a second interview
they didn't even ask to see my 84 page hello world

>.NET
>Dot NET
>Bot NET
I liked C# at first, but have grown due dislike it due to microshaft's bullshitery

>I liked C# at first, but then anons on Sup Forums told me I must hate it.

> good
I can do everything i want in a single LINQ query.
> bad
.NET core is as of right now, still kindof shit. Mono doesn't always work properly.
I'm sheltered from the nitty gritty native stuff.

good: it does the things its designed to do well
bad: It doesnt do the things its designed to do well

What a shocker!

i thought this same thing after reading his post but didnt say anything.

you need to be immune to the memes

Comfiest language out there.
Cross platform support could be better.

PKHeX is written in it.
Everybody else can compile the bad list.

good:
>literally best language with the best tooling in the entire world
>makes lincucks shiver,and cry in confusion and anger

bad:
>still no BigDecimal.(or i just didnt found it i guess).

>Using the query syntax instead of the method syntax
>Failing this hard at generics
>Not passing the selection function as an argument

C# combines the best things about object-oriented languages with the best things about functional languages and this doesn't seem to grok either of them.

>You can't assign a new value inside a foreach loop (e.g. foreach(int i in vec) { i = i+1; }).

vec = vec.Select(i -> i + 1).ToList();

>You can't perform any operations, even simple arithmetic, with objects inside a generic method (e.g. T plus(T t1, T t2) { return t1+t2; }

Generic property restrictions are the answer to this for most things; arithmetic still sucks because they didn't interface any of the numeric types.

>best tooling
Still can't compete with with Java EE. Thanks to .net core, the only fags cry and shiver are from the MS, for the lost years and fuckery against Java. I still miss MS own java vm. :^)

>javaEE

that literally dead thing?

Easy as fuck
Reliant on having .NET framework bullshit installed.
>C# is objectively the best programming language for the development of graphical user interfaces.
Nar thats Delphi, hell thats where C# took most of its inspiration from.

>Testing exception handling in my code
>Try to think for the easiest thing that throws an exception
>1/0 should do the trick
>It actually executes without problem and returns infinity
>WTF ?!?!

For me this is a major sign that.net is broken

Give us an example

using System;

public class Program
{
public static void Main()
{
double a = 1;
double b = 0;
double wtf = a / b;
Console.WriteLine(wtf);
}
}

stackoverflow.com/a/4262301

That's literally mandated by IEEE 754.

>good
C
>bad
#

No shit.
They documented so it's fine.
No, fuck you
They literally have an exception called DivideByZeroException
And it only covers ints and decimals.
The thing is even worse on vbnet/asp where division of integers is internally converted to floating point division.
If i wanted to manually handle arithmetic errors i would stay in c++

Nice design

>Good
#
>Bad
C

FTFY

poor baby did you fail the JS retard test?

>like a child ranting about something he knows very little about
look into ieee mate

meh

Good: Most beautiful language (sans next point)

Bad: The reason C# was good was because anyone could fucking read it if you understood the basic elements of the syntax (which isn't hard at all since it's C-based syntax), but then they decided to add a bunch of esoteric syntax because 'LESS CHARACTERS = CLEANER CODE'. I will never use your dumb fucking lambda expressions, your Linq, and the random changes in pointer syntax from C. Async syntax is borderline.

oh and the 'var' keyword can die in a fucking fire

>I don't like it because it's not C

I made the switch from Java a few months ago.
Visual Studio needs to die.

>oh and the 'var' keyword can die in a fucking fire
Why though? Most of the time one can immediately understand what's "var" exactly is.
It makes the writing process easier, especially when you're working on a big project in a team and your class names StartLookingLikeThis.
>I will never use your dumb fucking lambda expressions
Lambdas are generally used inside specific constructs so they become naturally readable after a bit of practice. Single line methods are also quite understandable.
I do agree, though, that lambdas look weird when you see them for the first time.
>your Linq
I don't like the query-style link, but the method-style (.this.one.I.mean) in my opinion represents a very human-like way of filtering stuff.