Rendered at 06:30:59 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
borland 2 hours ago [-]
Yuck. I like both Go and C# a lot, and use them both professionally.
In my experience the strengths of Go are mostly
- Deployability via single-file static binaries
- Simple syntax that anyone can learn (no exceptions, no classes or inheritance)
- Wicked fast compile times
And the strengths of C# are
- Powerful language with null-safety and lots of syntax sugar
- Runtime-level coroutines so you don't need `async/await` everywhere
G# seems like it has the _worst_ of both worlds, not the best. It's fun to write compilers, and good on them for doing it, but no thank you for real use
rmuratov 21 minutes ago [-]
C# has single-file static binaries
gwbas1c 4 hours ago [-]
How is this different than C#? What new concepts does this bring that C# doesn't?
20 years ago there was some momentum behind Visual Basic .Net; but the language was so similar to C# that it just wasn't worth using. There was a joke that .Net was a "skinnable language."
BTW, there's a whole nitpicky/semantic argument that C# isn't null safe because of the null forgiving operator. That will probably come into play with G# if the null forgiving operator can be used from C# to pass null into G# code that doesn't expect it.
AdieuToLogic 3 hours ago [-]
> 20 years ago there was some momentum behind Visual Basic .Net; but the language was so similar to C# that it just wasn't worth using.
IronPython[0] and IronRuby[1] would like a word... Largely so they could be remembered.
There was a joke that .Net was a "skinnable language."
I remember the MS documentation had sample code in all the variants of .NET languages they created (C#, F#, VB.NET), and of course there were decompilers that let you choose which one to target, with many other translation tools available between them.
Foobar8568 1 hours ago [-]
The momentum behind VB.NET was mainly because most enterprises using VB6 assumed it was the natural replacement.
gnabgib 58 minutes ago [-]
Your humble opinion? Nobody likes giving up what they know.. Perl, Python, Ruby, VB6 (can be moved to c#), Pascal (still relevant)
vivzkestrel 43 minutes ago [-]
- stupid question: how do you make a programming language like this from scratch?
- what is the thought process that goes into making a programming language
- what is this field of study or discipline called?
- why do we have so many programming languages? what purpose do they intend to solve and how do we know what purpose a programming language was made for?
- for example, why was swift made if objective c exists and why was objective c made if c++ exists?
tinco 8 minutes ago [-]
When I was in university the course was called compiler construction. Making a language like G# is very simple and about the level that the final project of the course would be if the team was working together really well and went for maximum bonus points.
We have so many programming languages because it's a fun and relatively easy thing to start, and lots of people have differing opinions of how it should be done. Also making a programming language seems like a difficult thing from the outside so it has a certain allure.
Swift exists because objective c has archaic language design that modern developers reject. Objective C exists because as far as I know at the time smalltalk style object oriented programming was hip and C++ made the wrong decisions in their eyes. It could also be that C++ wasn't popular enough yet at that point for Apple to commit to it. In that period basically all major operating systems went different ways. The Unix derivatives went all in on plain C, Microsoft went C++ and Apple objective c, though I think OSX itself is plain C for the most part.
Scaevolus 7 minutes ago [-]
- it's easy to prompt an LLM to do it for you, especially if you're targeting a pre-existing runtime like CLR or transpiling to another language. previously you'd have to grind out the parser and compiler for a new language, but a lot of that work is mechanical
- "I want a language that works a little differently"
- programming language theory (PLT), generally
- languages are tools. the authors should explain what their languages are best suited for
- Obj C and C++ were both developed around the same time as extensions of C. Obj C was focused on message passing and Smalltalk's object system, while C++ was focused on adding as many abstractions as possible to C. Neither language has good support for avoiding null pointer dereferences, one of the primary things Swift addresses with its richer type system and Optionals.
truncate 3 hours ago [-]
I wish README is clear whether they are using AI or not, and if so what the guidelines are. Not that anything wrong with using it, but given anyone with $$$ for tokens can do it, its nice to know what their process is etc etc. Gives me more confidence that its worth checking out.
Bnjoroge 3 hours ago [-]
It’s a pretty safe assumption that most recent projects use AI in some capacity. Models have gotten pretty good
afavour 3 hours ago [-]
Agreed... the commit log looks very much AI generated to me. And the project was started on May 22 so it's just under two months old.
Not that either of these things is disqualifying but AI really has make it difficult to know how established a project actually is.
hbcdbff 1 hours ago [-]
It’s slop
achr2 4 hours ago [-]
What is it bringing from those languages? The FAQ reads like it is just altered syntax for C#, no difference in semantics or function.
seabrookmx 3 hours ago [-]
Here I am wanting the opposite. I want C# compiled into a static binary like with the GoLang toolchain!
Maybe .NET AOT will get there one day..
borland 2 hours ago [-]
I used it recently to write a useful utility related to OpenTelemetry file processing. .NET AOT produced a single-file static binary which is similar in size to what Go would produce, and can be dropped into any target system and run without dependencies, just like Go does.
Reflection, is one thing. Of course some runtime stuff are missing, but the problem is that no one is using source generators before trying out aot, so as soon you try aot you just meet a wall of compilation errors. Most people just want to be able parse a json file without jumping through hoops. Bad DX
raphinou 31 minutes ago [-]
Is the familiar syntax so important? I learnt f# being used to algol syntax, and the syntax was not a hurdle.
onlyrealcuzzo 4 hours ago [-]
Just trying to offer some help here, not an attack:
```
G# brings Go-, Kotlin-, and Swift-style ergonomics — packages, func, data class, nullable handling with if let, structured concurrency with scope — to the .NET runtime. Source compiles directly to managed assemblies.
```
This is a decent description - but as someone also building a language in a similar space - who isn't super familiar with the .NET runtime... My first question is... Why not C#?
I'm by no means a C# expert, but I thought most of this was supposed to be in C#. C# is not terribly un-ergonomic, and Go is simple, but not really ergonomic except for Goroutines...
`packages` and `func` being the first two selling points is alarming. Sure, people probably prefer `fn foo() -> Dog` over `Dog foo()`. No one's picking a language for that. C# has namespaces... C# has `record` and `record struct`. C# has not-ideal nil handling, but it still has it. I'm not convinced `if let` is better enough to be a selling point - a lot of people don't like that!
Your main selling point seems like `scope` and your concurrency model vs C#, but C#'s is not exactly terrible...
Rich Hickey has a joke about semi-colons in language design, and your main pitch seems to sell yourself short.
Btw, I think your GitHub page does your language a lot better justice.
Syzygies 4 hours ago [-]
> Rich Hickey has a joke about semi-colons in language design
I didn't see semicolons, but I saw plenty of {} braces, and I can't explain why they're needed.
"I'm already quite sure how I will die: I'll read another article on Hacker News about a new programming language where I see nothing new, and I'll read that they included {}; to make C programmers comfortable. I'll have a massive stroke."
AdieuToLogic 3 hours ago [-]
> I didn't see semicolons, but I saw plenty of {} braces, and I can't explain why they're needed.
"Curly braces" (a.k.a. "{}") make lexicographical scope simpler to manage for lexers and parsers. Alternate grammars increase compiler complexity, excluding trivial token replacement.
As for semicolons, they are only a linguistic requirement for supporting multiple executable statements on the same source-code line.
narnarpapadaddy 3 hours ago [-]
It’s probably too little too late in the age of Claude…
C# grew all those features over time. It had to leave syntax to support old patterns to preserve backwards compatibility. Thus, the syntax has grown a bit noisy over time to support all those features. This is reboot keeping the newer ergonomics and streamlining the syntax.
I probably wouldn’t adopt it for existing projects or use .Net for any future project, but it looks really nice for what it is.
hbcdbff 1 hours ago [-]
“Width-bearing”, wow, Claude really loves that “bearing” suffix doesn’t he
andyferris 1 hours ago [-]
I was hoping from the tagline it would have sum types (rust-like payloads on enums, like Swift).
Kuyawa 4 hours ago [-]
I like it. I consider myself picky with regards to weird syntax in new languages and this is terse and very readable. Approved!
Kitajima 1 hours ago [-]
I lived long enough to see a programming language called G#.
What a great era.
captainbland 2 hours ago [-]
I'm less familiar with Swift but from a design point of view Go and Kotlin have really different ergonomics. Kotlin leans in really hard to creating DSLs etc. whereas Go avoids all that stuff like the plague. To me this makes the tag line a little confusing, like what does this imply for the design of this language?
HeavyStorm 5 hours ago [-]
Looks nice, congratulations.
I feel like we've done full circle. Languages are back to being (mostly) procedural. I'm not sure I like it, but it seems that this is what people prefer.
Personally, I'd rather see something like dependant types on a dotnet language. An addition, not just a simplification.
demosthanos 4 hours ago [-]
> I feel like we've done full circle. Languages are back to being (mostly) procedural. I'm not sure I like it, but it seems that this is what people prefer.
Is this an actual shift, or is this just what happens when LLMs make it possible for anyone to build a language quickly?
This one feels less like someone thought carefully about what semantics they wanted to have and more like someone without a lot of familiarity with the design space of programming languages decided to build one that had all their favorite features from the languages that they already know:
> G# brings Go-, Kotlin-, and Swift-style ergonomics — packages, func, data class, nullable handling with if let, structured concurrency with scope — to the .NET runtime.
Nothing wrong with that at all, I love to see the increased interest in language design, but I wouldn't read a shift in preferences into this wave of PLs. It's a shift in who is writing PLs, not a shift in preferences.
jdw64 2 hours ago [-]
Looks pretty good to me.
aryehof 2 hours ago [-]
Does this support new programming abstractions, or just another remix of existing ones?
You've been tricked by the SCP, this is the dupe - check the IDs (it's older than the one you linked to.. although there's also the one 31 days ago /w 9 points/2 comments from the OP)
Areading314 3 hours ago [-]
New programming languages? Doesn't seem needed anymore
In my experience the strengths of Go are mostly - Deployability via single-file static binaries - Simple syntax that anyone can learn (no exceptions, no classes or inheritance) - Wicked fast compile times
And the strengths of C# are - Powerful language with null-safety and lots of syntax sugar - Runtime-level coroutines so you don't need `async/await` everywhere
G# seems like it has the _worst_ of both worlds, not the best. It's fun to write compilers, and good on them for doing it, but no thank you for real use
20 years ago there was some momentum behind Visual Basic .Net; but the language was so similar to C# that it just wasn't worth using. There was a joke that .Net was a "skinnable language."
BTW, there's a whole nitpicky/semantic argument that C# isn't null safe because of the null forgiving operator. That will probably come into play with G# if the null forgiving operator can be used from C# to pass null into G# code that doesn't expect it.
IronPython[0] and IronRuby[1] would like a word... Largely so they could be remembered.
0 - https://en.wikipedia.org/wiki/IronPython
1 - https://en.wikipedia.org/wiki/IronRuby
I remember the MS documentation had sample code in all the variants of .NET languages they created (C#, F#, VB.NET), and of course there were decompilers that let you choose which one to target, with many other translation tools available between them.
- what is the thought process that goes into making a programming language
- what is this field of study or discipline called?
- why do we have so many programming languages? what purpose do they intend to solve and how do we know what purpose a programming language was made for?
- for example, why was swift made if objective c exists and why was objective c made if c++ exists?
We have so many programming languages because it's a fun and relatively easy thing to start, and lots of people have differing opinions of how it should be done. Also making a programming language seems like a difficult thing from the outside so it has a certain allure.
Swift exists because objective c has archaic language design that modern developers reject. Objective C exists because as far as I know at the time smalltalk style object oriented programming was hip and C++ made the wrong decisions in their eyes. It could also be that C++ wasn't popular enough yet at that point for Apple to commit to it. In that period basically all major operating systems went different ways. The Unix derivatives went all in on plain C, Microsoft went C++ and Apple objective c, though I think OSX itself is plain C for the most part.
- "I want a language that works a little differently"
- programming language theory (PLT), generally
- languages are tools. the authors should explain what their languages are best suited for
- Obj C and C++ were both developed around the same time as extensions of C. Obj C was focused on message passing and Smalltalk's object system, while C++ was focused on adding as many abstractions as possible to C. Neither language has good support for avoiding null pointer dereferences, one of the primary things Swift addresses with its richer type system and Optionals.
Not that either of these things is disqualifying but AI really has make it difficult to know how established a project actually is.
Maybe .NET AOT will get there one day..
It was nice. Feel free to take a look
https://github.com/OctopusDeploy/OtelImporter
Read the docs of what’s missing, if you are honestly interested in what’s missing.
https://learn.microsoft.com/en-us/dotnet/core/deploying/nati...
Reflection, is one thing. Of course some runtime stuff are missing, but the problem is that no one is using source generators before trying out aot, so as soon you try aot you just meet a wall of compilation errors. Most people just want to be able parse a json file without jumping through hoops. Bad DX
``` G# brings Go-, Kotlin-, and Swift-style ergonomics — packages, func, data class, nullable handling with if let, structured concurrency with scope — to the .NET runtime. Source compiles directly to managed assemblies. ```
This is a decent description - but as someone also building a language in a similar space - who isn't super familiar with the .NET runtime... My first question is... Why not C#?
I'm by no means a C# expert, but I thought most of this was supposed to be in C#. C# is not terribly un-ergonomic, and Go is simple, but not really ergonomic except for Goroutines...
`packages` and `func` being the first two selling points is alarming. Sure, people probably prefer `fn foo() -> Dog` over `Dog foo()`. No one's picking a language for that. C# has namespaces... C# has `record` and `record struct`. C# has not-ideal nil handling, but it still has it. I'm not convinced `if let` is better enough to be a selling point - a lot of people don't like that!
Your main selling point seems like `scope` and your concurrency model vs C#, but C#'s is not exactly terrible...
Rich Hickey has a joke about semi-colons in language design, and your main pitch seems to sell yourself short.
Btw, I think your GitHub page does your language a lot better justice.
I didn't see semicolons, but I saw plenty of {} braces, and I can't explain why they're needed.
https://github.com/Syzygies/Compare
"I'm already quite sure how I will die: I'll read another article on Hacker News about a new programming language where I see nothing new, and I'll read that they included {}; to make C programmers comfortable. I'll have a massive stroke."
"Curly braces" (a.k.a. "{}") make lexicographical scope simpler to manage for lexers and parsers. Alternate grammars increase compiler complexity, excluding trivial token replacement.
As for semicolons, they are only a linguistic requirement for supporting multiple executable statements on the same source-code line.
C# grew all those features over time. It had to leave syntax to support old patterns to preserve backwards compatibility. Thus, the syntax has grown a bit noisy over time to support all those features. This is reboot keeping the newer ergonomics and streamlining the syntax.
I probably wouldn’t adopt it for existing projects or use .Net for any future project, but it looks really nice for what it is.
What a great era.
I feel like we've done full circle. Languages are back to being (mostly) procedural. I'm not sure I like it, but it seems that this is what people prefer.
Personally, I'd rather see something like dependant types on a dotnet language. An addition, not just a simplification.
Is this an actual shift, or is this just what happens when LLMs make it possible for anyone to build a language quickly?
This one feels less like someone thought carefully about what semantics they wanted to have and more like someone without a lot of familiarity with the design space of programming languages decided to build one that had all their favorite features from the languages that they already know:
> G# brings Go-, Kotlin-, and Swift-style ergonomics — packages, func, data class, nullable handling with if let, structured concurrency with scope — to the .NET runtime.
Nothing wrong with that at all, I love to see the increased interest in language design, but I wouldn't read a shift in preferences into this wave of PLs. It's a shift in who is writing PLs, not a shift in preferences.