There seems to be a huge uproar about this (although could be just a vocal minority). I guess the idea is that the practice of writing a compiler with the language in question is a somewhat important tradition.
From a more practical point of view I think this is great. Build time is one of the main reason why I got a 7950X3D instead of a say 7800X3D. Faster building time = better, no question about it.
 
It's a shame the infrastructure for C# AOT compilation is such an afterthought. There's no reason C# couldn't be competetive for this, Microsoft needs to dogfood more.
 
It's a shame the infrastructure for C# AOT compilation is such an afterthought. There's no reason C# couldn't be competetive for this, Microsoft needs to dogfood more.
he explained why they didn't go with C#, although it has a lot of language features. This is the part of the interview where he mentions why.

Why not C#?
 
There seems to be a huge uproar about this (although could be just a vocal minority). I guess the idea is that the practice of writing a compiler with the language in question is a somewhat important tradition.
From a more practical point of view I think this is great. Build time is one of the main reason why I got a 7950X3D instead of a say 7800X3D. Faster building time = better, no question about it.
Typescript is kinda impressive in that it uses things like generics and stuff and makes it compatible with Javascript, and I dunno about how many languages write the compilers in the language in question, but Typescript is a huge undertaking.

The switch to Go can make Typescript more suited to a bit of everything while having more control of the memory at the same time. Maybe we are going to see it in more desktop apps, game engines, etc.
 
he explained why they didn't go with C#, although it has a lot of language features. This is the part of the interview where he mentions why.
You can write a functional style in C# just fine and it isn't purely a technological choice. C# should be an important part of their ecosystem, so they should dogfood it.

Letting the Windows ecosystem slowly erode into nothing but a way to run the 365 Office suit and a browser is a terrible idea. Yes, 365/Azure is printing money, but that's no reason to just let everything else rot.
 
You can write a functional style in C# just fine and it isn't purely a technological choice. C# should be an important part of their ecosystem, so they should dogfood it.

Letting the Windows ecosystem slowly erode into nothing but a way to run the 365 Office suit and a browser is a terrible idea. Yes, 365/Azure is printing money, but that's no reason to just let everything else rot.

While it's true that it could be beneficial to Microsoft if they spend more resources on improving C#, requiring or taking preferences on their own project for the sake of this is the wrong approach IMHO. If Microsoft actually requires project managers to use C#, I think the reverse will occur, that is C# will become even more stagnant because since people are required to use it, why improve it?

To put it simply, he explained why they chose Go over C# for various reasons (one of the reason is that Go is available on more platforms, which is quite a big problem). What Microsoft should do is to improve C# on these fronts.
 
I think the reverse will occur, that is C# will become even more stagnant because since people are required to use it, why improve it?

In a non dysfunctional company, internal teams will communicate better where the problems are and have more power to allocate resources where needed.

Of course Microsoft is deeply dysfunctional.
 
While it's true that it could be beneficial to Microsoft if they spend more resources on improving C#, requiring or taking preferences on their own project for the sake of this is the wrong approach IMHO. If Microsoft actually requires project managers to use C#, I think the reverse will occur, that is C# will become even more stagnant because since people are required to use it, why improve it?

To put it simply, he explained why they chose Go over C# for various reasons (one of the reason is that Go is available on more platforms, which is quite a big problem). What Microsoft should do is to improve C# on these fronts.
And they do. .NET has been evolving and improving at an impressive pace in recent years, especially since the transition from the old Framework and the decoupling from Windows concluded - it's anything but stagnant.

But yeah, Hejlsbergs arguments are sound (well, he should know :D, but the pragmatism still is refreshing):

Native AOT compilation (well, a true attempt at least, not the previous "just pack everything and the runtime behind a PE") is a rather recent feature in .NET and still evolving. From its current platform limitations it's quite obvious that a major driving use case has been container deployments, and even for that it's still far from a "fire and forget" drop-in replacement if you're aiming for that sweet low overhead.

And while C# the language has evolved admirably, it still can't fully escape the old cruft, which can be limiting *especially* when you're switching from something like Typescript...
 
Last edited:
some extra info in the article below.


 
TypeScript debuted in 2012 as a statically typed superset of JavaScript designed to improve maintainability and scalability in large projects. It subsequently grew in importance and frequently ranked among the most loved and widely adopted languages in several survey-based examinations of programming language popularity. For example, just a few months ago we reported "TypeScript Tops New JetBrains 'Language Promise Index.'" Over the years, in some surveys, it also vaulted ahead of languages such as Python, C# and Java.

More information on Project Corsa will be provided in a March 13 AMA (ask me anything) event on the TypeScript Community Discord.

Meanwhile, there is much discussion about the new project, much of it centered around the choice of Go as opposed to Microsoft darlings like Rust. Daniel Rosenwasser, principal product manager for TypeScript, early today started a Hacker News discussion on the port, and TypeScript dev lead Ryan Cavanaugh did the same on Reddit.
From the latter: "In the end we had two options - do a complete from-scratch rewrite in Rust, which could take years and yield an incompatible version of TypeScript that no one could actually use, or just do a port in Go and get something usable in a year or so and have something that's extremely compatible in terms of semantics and extremely competitive in terms of performance."



 
AFAIU this won't change the runtime, only the compilation of Typescript programs. Am I correct?

Yes. Typescript compiler always compiles into Javascript and you still need a Javascript engine (such as V8) to run them.
 
You can write a functional style in C# just fine and it isn't purely a technological choice. C# should be an important part of their ecosystem, so they should dogfood it.

Letting the Windows ecosystem slowly erode into nothing but a way to run the 365 Office suit and a browser is a terrible idea. Yes, 365/Azure is printing money, but that's no reason to just let everything else rot.
they should bring back .NET Native. Make things as fast as possible.

C# doesn't lack language features, I'd say they don't need much more tbh. They added a bit of F# stuff into C#, the language is full of features, it has structs, and value types, etc, for performance critical stuff..., but what about things like the burst compiler in Unity? (meant for very high performance games using C#)m what happened to it? Or simply what about bringing back .NET Native....? Or just use a different approach to bytecode and don't necessarily try to follow Java steps.
 
So a programming language is being ported to another programming language that doesn't make sense
a bit like saying C++ is is being ported to Fortran
Edit: think I understand now, the language isn't being ported, the compiler has been re-written in Go
 
Last edited:
Back
Top