Live data from Hacker News

Update to the .NET language strategy

devblogs.microsoft.com

121–130 of 151 posts

Re: Update to the .NET language strategy

#122
post #80
post #38

Hot take but I wish they’d start a new lang in the spirit of what’s happening in swift/Kotlin instead of evolving C#. I use it everyday. I love the new pattern matching, it simplifies a lot of gnarly reflective type checks and feels good. Records are nice too. I see discriminant unions are coming soon. But they’re painting themselves into the corner in terms of syntax and overcoming OOP defaults. A fresh start would…

Where does TypeScript fit into this? It's a wildly successful language from Microsoft that's also interpreted but doesn't use the CLR. Disclaimer: I work at Microsoft, but not in the Developer Division.

Start a petition for T#.

Merge C# and TypeScript.

I want my C# pattern matching in TypeScript and TypeScript's fluidity in C#.

Simplified initialization in C# without new(). Unless otherwise specified, use a default generic Dictionary and infer the types for map initialization like:

    var x = { ["a"] = 1 };
Instead of:

    var x = new Dictionary {...};
Then automatic type mapping and conversion utilities to objects:

    record class Rec(string a, int val);

    var k = x as (Rec)
(Yes, can already be done with implicit type conversion operators or writing utility classes, but making it more like TypeScript would just make it easier to adopt)

Re: Update to the .NET language strategy

#123

Earlier quoted context omitted.

Wow! Big differences! Ocaml has a VM which is included by default (70kb), and can also compile to native (skip the VM altogether). It has been like that since at least 2002 (the first time I checked it, probably before that). Haskell has HKT, which generalize generics. Java and C# share 95% ideas in comparison to stuff outside Java/C#. That's why the comparison is boring: there is very little to compare.

So we went from Java vs C# to C# vs the world? I see where this is going, anyway Another differences Approach to async Approach to ecosystem fragmentation Approach to GCs In general people would argue that C# > Java, but JVM > CLR

Now we are startung to talk serious.

Yes, I'd like Java's ability to use and tune different GCs to be available in other places.

Async is pretty much the colored vs non-colored function discussion, for which there are good arguments on both sides.

Related to C# being better than Java, I think it is, but not in a significant way. If Java uses 100% boilerplate, C# uses around 90% boilerplate. An improvement indeed, but way more progress can be achieved. And then C# has some questionable features (extension methods: methods for a class but that are not part of the class code).

Related to VMs, JVM may be better than CLR, but again both of them have an unacceptable footprint because you have to educate the final user on managing the internals of your application (yay I have to install, update and be wary of exploits for the Java Runtime/.net redistributable, and then different versions are subtly incompatible, so to use program X I have to uninstall the version I use for program Y).

Re: Update to the .NET language strategy

#124
post #88

Earlier quoted context omitted.

I always saw Basic as the language for non-professionals who wanted to create their own software: hobbyists, amateurs, small business owners, people who have an idea and want to automate whatever it is they're doing, but aren't trying to write code for a living. C#, by contrast, is a proper mainstream language for professional programmers.

Replace basic with Lua and read your line back. Just because a language is simple doesn't mean it can't have industrial purposes by whatever gauge you measure things. Theres a bunch of things I wouldn't use basic for just the same with C# and "popular-language-here". Probably the most used programming language is VBA or maybe the Excel macro if you consider that a language.

Did that remark come across as a criticism? I did not mean it so; distributing the power of programming as broadly as possible has always been a central value in my career, and that's why I joined the VB team in the first place. I meant that while it made sense for cutting-edge language development to happen elsewhere, I had thought that VB would have been a great place for work on improved human factors. How can we design the interfaces for this complex system so that people who do not yet have (and may never gain) a strong mental model of its architecture will nevertheless be able to improvise their way to success? That's where I thought the value of VB was.

Re: Update to the .NET language strategy

#125
post #120
post #96

Earlier quoted context omitted.

Not really, plenty of VS tooling doesn't exist on VS4Mac nor VSCode. GUI frameworks don't consider Linux a deployment target, not even MAUI with its Xamarin heritage. Due to its Windows original focus, lots of libraries still rely on Win32, COM and other Windows specific issues. This also inhibits most big name CMSs, which still rely on .NET Framework, e.g. Sitecore, SharePoint, Dynamics,.... Targeting Linux containe…

Stop wasting time with VSCode when doing professional development on .NET and use Rider on Linux and Mac. The C# addon for VSCode is lacking so many features compared to VS and Rider that it's mostly a toy. The Rider licensing cost is negligible when compared to a developer's compensation.

I don't waste time, we mostly target Windows with .NET, for UNIX workloads we usually use node and Java, as you can see by my last sentence there is very little .NET/UNIX for us, and even so, it is developed on Windows deployed on Linux.

No need to pay for Rider licenses on top of the VS ones we already have.

Re: Update to the .NET language strategy

#126

Earlier quoted context omitted.

So we went from Java vs C# to C# vs the world? I see where this is going, anyway Another differences Approach to async Approach to ecosystem fragmentation Approach to GCs In general people would argue that C# > Java, but JVM > CLR

Now we are startung to talk serious. Yes, I'd like Java's ability to use and tune different GCs to be available in other places. Async is pretty much the colored vs non-colored function discussion, for which there are good arguments on both sides. Related to C# being better than Java, I think it is, but not in a significant way. If Java uses 100% boilerplate, C# uses around 90% boilerplate. An improvement indeed, but…

>And then C# has some questionable features (extension methods: methods for a class but that are not part of the class code).

I dont think people share this opinion.

Extension methods are very handy and powerful while being simple and you can see how similar vision works well in Rust: impl trait for type

It allows e.g library makers to create strong small core and users/community to create their wrappers/integrations easily

Re: Update to the .NET language strategy

#127

Earlier quoted context omitted.

So we went from Java vs C# to C# vs the world? I see where this is going, anyway Another differences Approach to async Approach to ecosystem fragmentation Approach to GCs In general people would argue that C# > Java, but JVM > CLR

Now we are startung to talk serious. Yes, I'd like Java's ability to use and tune different GCs to be available in other places. Async is pretty much the colored vs non-colored function discussion, for which there are good arguments on both sides. Related to C# being better than Java, I think it is, but not in a significant way. If Java uses 100% boilerplate, C# uses around 90% boilerplate. An improvement indeed, but…

Extensions are a horrible thing. But when you need em, man they are nice to have.

Re: Update to the .NET language strategy

#128
post #41

> F# explores new language possibilities and the community provides a rich experience across platforms. There are several interesting observations to be had here. For one, F# already explored (past tense) new language features and has long been essentially feature complete. It gets little features here and there, which are generally quality of life type of things (like anonymous records, for example). Another interpr…

Latest the F# folks tried to pivot the language into data science and be a safer alternative to Python, only to have Microsoft hire Guido and being the company that finally managed to push the CPython devs to focus on performance, and JIT integration.

Re: Update to the .NET language strategy

#129
post #7

TLDR: C# is our real language. F# is a thing that gets supported to the extent that unpaid volunteers do the work. VB is in back-compat legacy support mode.

VB is not only for compatibility. VB is a key piece between pure development and advanced Office capabilities, more commonly found in Excel with VBA (Visual Basic for Applications) We cannot forget that the biggest competitor of any new software based startup/project is a spreadsheet created by the target users

I experienced this in first hand when doing some contracting for a lifesciences company.

Many of their researchers weren't using R or Python, rather VB, as they were already quite skilled in VBA, so having IT giving them access to VB.NET was a natural evolution.

Re: Update to the .NET language strategy

#130
post #98

Earlier quoted context omitted.

Yeah, it is strange that they did not mention that part of F# directly, only obliquely in saying that they maintain compilers and toolchains and runtimes with extensive community support, or something similar, perhaps on the linked page. https://www.microsoft.com/en-us/research/wp-content/uploads/... There's an example of a Microsoft Research paper on F#.

Have you checked the date? I think nowadays only Don Syme is employed by Microsoft research.

Actually on the Reddit thread, they mentioned he has left Microsfot Research as well, https://githubnext.com/team/dsyme/
Post reply on HN