Hacker News new | ask | show | jobs
by emmanueloga_ 639 days ago
I disagree with C# not being groundbreaking or unique, at least to some extent. Yes, a big part of the language could be considered "vanilla object oriented", but that's not really a bad thing. These are some things that C# pioneered:

* Expression Trees and LINQ (still a pretty unique feature)

* async/await/yield syntax, adopted later by many others

* get/set property methods

* null coalescing (??) syntax

* extension methods and partial classes

Even if C# was not the originator of some of these, it definitely played a key role in popularizing them and offered a good reference syntax and semantics that others could draw inspiration from.

C# also has great synergy with the F# language which is so unique and innovative that it might seem 'alien' at times. :-) I think some of the C# features appeared in some form in F# first (citation needed :-).

1 comments

- Stuff like LINQ and Expression Trees are to be found in Lisps, Smalltalk and ML derived languages

- Kind of true on this one, although Active Objects, and various flavours of co-routines predate its use in Midori, which eventually lead to async/await design

- Already present in Eiffel and Delphi

- Eiffel among possible others

- Special case of languages that allow for generalised call operators, and Delphi and C++ Builder did partial before

F# currently is so relevant that apparently has zero content to show up on .NET 9 release notes.

Currently posted .NET 9 articles talk mostly about platform-wide features and improvements, pretty much all of which equally benefit F#. Probably even more so when it comes to performance - I expect devirtualization and escape analysis improvements to impact F# to a greater extent than C#.

Language-specific articles are usually posted closer to the release date. Example: https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/

Except that they haven't been shy about C# 13.

https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/cs...

The efforts on F# are a tragedy, instead of providing proper content, forward to blog posts that we all know eventually disappear from Microsoft blog history.

https://learn.microsoft.com/en-us/dotnet/fsharp/whats-new/fs...

That's just how F# team does things. There's no "single direction and decision" behind this - much less people work on F#, it's a much more community-driven language.

Personally, I see nothing wrong with it, because what matters most is how practical the language is when applied to solving a particular task, how well it integrates with the rest of the ecosystem, etc. On this front, I think F# does better than Scala or Clojure, or even Kotlin.

What it does need, I think, is better marketing around data science and machine learning domains - F# is a language which very well fits into this use case, and already has small but nice set of libraries like Diffsharp, and is being used by research labs in pharma sector (albeit on top of Fable, which I'm not a fan of).

You also need to remember that many C# features stabilize very late into release cycle. On one hand, posting about development early and actively brings more feedback, which is good, but it also may give a wrong impression, especially if a casual reader misses "this is early/experimental" disclaimers.

Scala, Clojure, and Kotlin are much more taken care of than F# will ever be.

In tooling, books, conferences, critical applications used in large scale across the industry.

Meanwhile Microsoft keeps behaving as if it was a management mistake to have added it to VS 2010.

Kotlin? For sure, it's the Android language after all, so it is looked after, sure. Does it integrate better? That's up to debate. For example, F# 9 integrates C# NRTs in the form of T | null unions, which is elegant and idiomatic approach that brings together nullness knowledge between the two. For now, this is not the case with Kotlin.

I encourage you to look at the state of Clojure and its usability within larger Java ecosystem. Quantity of material, as usual, is not everything.

> Meanwhile Microsoft keeps behaving as if it was a management mistake to have added it to VS 2010.

Do you have anything to back up this assumption with?

I don’t think C# has introduced any never-seen-before features. Usually they have been tried out in an experimental language before.

I belive Linq was prototyped in Haskell or at least based on experiments in Haskell.