3 ms·
I am someone with significant experience in Java, C#, C++, and JS/TS. I am a bit of a newbie to Go but have used it for a few things at work. So, I can give a
by alemanek 2y ago
I am someone with significant experience in Java, C#, C++, and JS/TS. I am a bit of a newbie to Go but have used it for a few things at work. So, I can give a bit of a comparison for you.
I really like the DevX and strong standard library of Go. Also I really like that the community around Go has a strong preference for just using the stdlib and not going crazy with third party libraries.
Languages are just tools but I have a strong preference for Go for backend services and CLI applications now. Just my 2cents.
- DarkNova6 2y agoHey, thanks for the reply. That sounds really nice! I wonder, which aspects of the "Go" std lib are considered strong? Would you say it is more like .net where the std-lib also comes with framework-grade capabilities such as REST-endpoints and setting up applications? Because in the classical sense of a library, I think Java is fantastic (collections, strings, NIO, HTTP 2.0, etc.). But it misses framework-level out-of-the-box solutions.
- metaltyphoon 2y agoNot STD comes close to .NET, IMO.
- alemanek 2y agoSo take this with a big mountain of salt as I am newer to Go and my experience with .Net is a bit dated but I do have 7 YoE with C#. The C# stdlib is larger and more batteries included for sure. But, it feels less focused than Go to me. Over its history it has supported a ton of different styles of programming. Whereas Go’s maintainers have been, at least so far, more obsessive on keeping the language small. As a result you get libraries and codebases that have a mix of legacy and modern flavors of .NET. That isn’t the fault of the language but more of its large history and wider scope. GoLang doesn’t have a rich UI library built in for example whereas .NET has 3 if I am remembering correctly. I like the focus of Go but C# is a great language and .NET is an excellent framework. Here are some things that I think Go does better though: - TLS and x509 stdlib is fantastic - Explicit error returns instead of Exception throwing - A developer culture around idiomatic Go. It’s subjective but it sets a tone for a single coding style. - Less “magic”. This is more of a sin of Java frameworks but .NET has lots of higher level abstractions the push lots of interactions behind the curtain. - tiny docker images and super fast startup. Here are some things I miss from C#: - really nice Enums - Better support for functional programming. - LINQ to objects - Annotations, specifically validation logic as annotations. - JSON handling is more straightforward .NET is super capable though. Nothing wrong with using it and it is much more broadly applicable than Go in my opinion. But, I like the ergonomics of Go and for backend services and CLI tools I think it is a strong choice. But, I wouldn’t choose it to build a game or a desktop/mobile GUI application currently.