G#: A modern .NET language with Go, Kotlin, and Swift ergonomics(davidobando.github.io)
davidobando.github.io
G#: A modern .NET language with Go, Kotlin, and Swift ergonomics
https://davidobando.github.io/gsharp/
20 comments
Agree, and this is a huge bungle you can make in language design, that will affect compiler performance down the line significantly.
If you know which package each type comes from, you only need to check the exports of that package, otherwise its a local.
Otherwise you have to start compilation by building up a list of every package and its exports. This is particularly bad for incremental compilation, and starts to drag on large projects.
The saving grace of .NET in this case is that most .NET programs traditionally didn't have that many imports. You have mscorlib for the framework itself, which is almost all the basics, and maybe ASP.NET and a dozen other small packages.
But this doesn't have to be the case, and if you have thousands of small packages (because your app is huge), then your performance tanks.
If you know which package each type comes from, you only need to check the exports of that package, otherwise its a local.
Otherwise you have to start compilation by building up a list of every package and its exports. This is particularly bad for incremental compilation, and starts to drag on large projects.
The saving grace of .NET in this case is that most .NET programs traditionally didn't have that many imports. You have mscorlib for the framework itself, which is almost all the basics, and maybe ASP.NET and a dozen other small packages.
But this doesn't have to be the case, and if you have thousands of small packages (because your app is huge), then your performance tanks.
While the language itself doesn't seem very interesting (which is perhaps the point). The idea of building a new language on top of the CLR runtime feels very wise. Instead of a new language suffering from a lack of ecosystem, you get everything else that's already built, even in other (CLR-based) languages. This does leave me wondering what the trade off is. Do you sacrifice any potential language features for CLR compatibility? Or provided you can get it compile, it will run?
Also, are there other language ecosystems with a similar capability?
Also, are there other language ecosystems with a similar capability?
The JVM has a ton of languages built on it.
> This does leave me wondering what the trade off is.
Microsoft
Microsoft
I mean, one trade-off is obvious: you get the drawbacks of the runtime too. Any .NET program is opting you into tens of MBs of binary/lib size and RAM usage for what a C program could do in <1mb. This completely rules out using in the language in certain domains eg. embedded.
If I could accept a resource intensive plattform, I'd rather choose Java - .NET strongly feels like a Microsoft trap
And you would miss out - .NET is a rare case of Microsoft actually made something quite good.
A language controlled primarily by Oracle is certainly... a choice, if you prefer avoiding traps controlled by megalomaniac overlords.
Who in their right mind would want to copy Go?
Not really anything here which distinguishes it from c#?
I have a strong feeling that no new languages will get adopted at all, now that it's important for AI to be proficient in speaking them.
The best AI models at this point are perfectly fine handling new languages and frameworks and stuff - as long as you can point the llm to some docs and some example code it's not gonna do noticeably worse than it would at another language.
Sure, but you expect of AI the ability to use the vast knowledge on languages and platforms that already exist out there. Just because they can be toughy to understand a new language won't make them proficient in it, able to save problems, etc.
> you expect of AI the ability to use the vast knowledge on languages and platforms that already exist out there.
They do. Even completely novel esolangs have enough in common with other things that the current models don't even blink.
I really recommend trying it some time.
They do. Even completely novel esolangs have enough in common with other things that the current models don't even blink.
I really recommend trying it some time.
I've been suspecting this myself and its probably the biggest thing I dislike about ai having taken over the proffession.
If anything, research for AI based tooling for direct code generation is only increasing.
"Go ... ergomonics"
"G# compiles straight to managed assemblies and runs on the modern .NET runtime"
These two are nothing close because it completely misses Go's ergonomics of compilation to portable static-linked binaries. For language constructs, maybe they have similar ergonomics, but the language is not only constructs. You have to ship your programs somehow, and this is where requirement to ship both binaries and the interpreter for them, sucks.
These two are nothing close because it completely misses Go's ergonomics of compilation to portable static-linked binaries. For language constructs, maybe they have similar ergonomics, but the language is not only constructs. You have to ship your programs somehow, and this is where requirement to ship both binaries and the interpreter for them, sucks.
.NET is not an intepreter. Also, it has been able to compile to a single binary for years.
But it really is, in a sense that another program is required to interpret IL format, even if it is JIT-compiled after loading. Think of it similar to the ELF interpreter for dynamically-linked binaries.
Speaking of compilation to a self-contained binary, I hope in the future G# will support it. No mentions as of today though.
Speaking of compilation to a self-contained binary, I hope in the future G# will support it. No mentions as of today though.
In go, if I don’t know a constructs definition, i know exactly where to look at and find it.
When exploring a new language I won’t always setup an ide first. I just want to look at the documentation on my own. Heck, any language which requires ide or any mandatory tooling to work with it, is already handicapping a developer.
G# seems to copy go syntax but didn’t copy the things that go makes it easier to understand any go code.