Hacker News new | ask | show | jobs
by onlyrealcuzzo 17 days 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.

2 comments

> 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.

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."

> 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.

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.