Not really, it is a great development experience, but so is the Java ecosystem, note the stress on ecosystem and not language grammar.
Also LINQ that so many on the thread are salivating about, were already present in Smalltalk and Common Lisp collections, were influenced by ML languages and the time Erik Meijer from Haskell fame was part of Visual Basic team.
See "Confessions of a Used language Salesman: Getting the Masses Hooked on Haskell".
Nowadays busy with Scala and Kotlin.
And since I made the reference, Java and .NET IDEs, still don't offer everything that Smalltalk or Common Lisp/Lisp Machines/Interlisp-D were capable of, and yes they also offer stuff that wasn't possible back then.
> Also LINQ that so many on the thread are salivating about, were already present in Smalltalk and Common Lisp collections
I think that it's clear that C# in particular was never intending to originate new programming concepts; it was never a research language. It is a commercial language, and aims to take and popularise the best ideas from such research languages, and package them for coders who work in businesses. As such, there has to be some evidence for that idea already. It must be demonstrated to be effective.
You can assume that any good idea in C# already existed somewhere else beforehand, even if not well known. It's not there to break conceptual ground or be in the first segment of the innovation curve.
I think it was the first language to specifically introduce the async and await keywords, but it wasn't even the first language on the .NET platform to support the programming model - that honor goes to F#. See https://tomasp.net/academic/papers/async/async.pdf
> Despite that C# was the first mainstream language that popularised the async/await keywords, it wasn’t the language that invented the concept. F# added asynchronous workflows with await points in version 2.0 in 2007 (5 years before C#).
Which is exactly my point about c# mainstreaming and popularising concepts that already exist, even if they exist in less-known or less polished versions.
What C# has that Kotlin doesn't is the ability to write perfromant code.
Sure, if you really care you probably will go for something lower level, but if you don't want to abandon all the nice things that high lvl language offer, C# still exposes some tools to get your hand dirty every now and then.
(Unsafe, stack allocation etc.)
Kotlin meanwhile goes even further then java and completely removes the distinction between stack and heap, slamming every single type into an object.
Painful.
Smalltalk and Haskell with a with a great development experience? That's the highest endorsement possible. Sour grapes about older languages not getting critical mass isn't a valid point against .NET.
Also LINQ that so many on the thread are salivating about, were already present in Smalltalk and Common Lisp collections, were influenced by ML languages and the time Erik Meijer from Haskell fame was part of Visual Basic team.
See "Confessions of a Used language Salesman: Getting the Masses Hooked on Haskell".
Nowadays busy with Scala and Kotlin.
And since I made the reference, Java and .NET IDEs, still don't offer everything that Smalltalk or Common Lisp/Lisp Machines/Interlisp-D were capable of, and yes they also offer stuff that wasn't possible back then.