Which 10 extra key word? It is a statically typed (bring things like types, type parameters, ...), object oriented language (brings things like abstract, override, class, ...) and high performance (brings things like ref, in, out, ...).
And it is expressive instead of "mathematical" (like ML languages) which makes productively in code reviews a thing.
Maybe functional language programmers will one day pull the stick out of their arses and get a bit less supercilious, and realise that expressiveness and function name length has absolutely nothing to do with runtime performance, especially in native and properly JITed runtimes. Maybe they'll realise it makes things easier to approach, read, reason about, and hence write more correctly.
> OOP is a scam, a useful scam but still a scam, it is in no way easier or better to force _everything_ to be a class
You're in luck - C# doesn't force everything to be a class and has many functional programming features. Hell, even C++ has had functions as data for, like, 10 years now.
well to do anything new in a C# project one typically ends up making a class inside a new namespace, if I just want to write a solver with no state it's quite jarring and distracts from otherwise a pretty good language that I like working in. So 2 new nouns and a handful of keywords.
That's it. No namespaces (which were never required anyway, not even in C# 1.0), no classes, no functions even. If you want to define a function, you can just do so in global scope, and if it's a single expression you don't even need the braces:
int Fib(int n) => (n <= 1) ? n : Fib(n - 1) + Fib(n - 2);
I really want to like C# but there is a reason why it has no ecosystem outside of enterprise and gaming slop