5 ms·
Dotnet and C# are a killer combination and I frankly dont get why go has to be even considered. Go syntax is very cognitively demanding. Maybe I am getting old
by kumarvvr 4y ago
Dotnet and C# are a killer combination and I frankly dont get why go has to be even considered.
Go syntax is very cognitively demanding. Maybe I am getting old or have become used to C#, but between reading well formed go and C# code, C# always wins for me.
- KronisLV 4y agoYou might as well say the same about Java (with select codebases), or even Python. Or, for the folks who have familiarity with different stacks, maybe something along the lines of Ruby, Node or whatever else they enjoy more. Admittedly, a lot of it comes down to personal preference and familiarity with different technologies. Though in regards to Go in particular, on a technical level: - it's simple to build self-contained executables, it's up there with the likes of FreePascal in this regard - it's also a relatively simple language that's easy to pick up and use, in contrast to how complex code can get with C# and Java - it also has fewer footguns than C or C++ without the complexity of Rust (which some might prefer), although it doesn't try to do as much - it has a decent community and lots of useful packages, even the included http libraries are nice to just get things done - it doesn't have a history of challenging versioning and platform support, when compared with .NET (Windows only support with IIS for legacy projects, anyone?) - the performance is generally good enough All of that combined means that Go is nice for writing both quick utilities, as well as smaller and larger services alike. Just look at Nomad, a container orchestration platform, the executables of which can be shipped as a single binary: https://www.nomadproject.io/downloads https://www.nomadproject.io/downloads Overall, it's pretty good for just getting things done in a reasonable amount of time and a limited amount of headaches. For example, Python might lead to code that is easier to write and read, but packaging can be a nightmare. Java might be better for select enterprise systems, but configuration is generally a bit of a mess there. .NET is a good alternative, but some folks also try to steer clear of Microsoft and tooling on *nix can be limited, much like it is for Java (your best bet would be to use JetBrains commercial products, since MonoDevelop isn't all that popular anymore, Visual Studio Code plugins wouldn't give you a "full IDE" experience and there is nothing quite like Eclipse or NetBeans for .NET). Further thoughts: the age of a language might also coincide with how loved or dreaded it is, since we simply don't see that many horrible enterprise monolith messes written in Go as of yet: https://earthly.dev/blog/brown-green-language/ https://earthly.dev/blog/brown-green-language/
- kumarvvr 4y ago> it's simple to build self-contained executables Also doable in dotnet > it's also a relatively simple language that's easy to pick up and use, in contrast to how complex code can get with C# and Java Go is not a simple language. It has made choices of syntax that are baffling. Not to mention the mess that is exceptions and generics. C# and Java, on the other hand, feel natural to read. > it also has fewer footguns than C or C++ without the complexity of Rust (which some might prefer), although it doesn't try to do as much C# is the same in this case. Far fewer footguns. > it has a decent community and lots of useful packages, even the included http libraries are nice to just get things done C# wins, but perhaps because it has been around for so long. But its ecosystem is very good. > it doesn't have a history of challenging versioning and platform support, when compared with .NET (Windows only support with IIS for legacy projects, anyone?) Things change, systems change, environments change. At present, C# and dotnet are truly cross platform and are amazing platforms. > the performance is generally good enough In Go, as your program size and team gets bigger, code management becomes harder. C#, along with Visual Studio is at its productive best, whether its with one developer or a 100 developers.
- KronisLV 4y agoIf it is the best option for you, then that's great - finding a good fit for your needs is what you should choose technology based on, after all. My own experiences do not allow me to agree with all of your arguments, nor do I think you or anyone else can make them in such an absolute manner (such as about the language complexity/scope) but I also acknowledge that people will have different experiences, even with the same technologies! A trivial example of comparing the possible scope of any two languages in question, would be to glance at their lists of reserved words, for example https://go.dev/ref/spec#Keywords https://go.dev/ref/spec#Keywords and https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/ https://docs.microsoft.com/en-us/dotnet/csharp/language-refe... However admittedly that's not a discussion that I have the time for, though I'm sure that lots of people here might share their own thoughts and experiences. Honestly, for web development, everything starting with .NET Core and the newer versions has been pretty cool, so it's not like you have to deal with the inherent complexity every day, unless someone gets a bit too clever. Of course, less isn't always better, as certain other languages might demonstrate (a silly example, but still): https://en.wikipedia.org/wiki/Brainfuck https://en.wikipedia.org/wiki/Brainfuck The only thing I cannot agree with here strongly is your argument about Visual Studio: I yearn for the day when Microsoft will finally port it over to *nix, but if you don't need to support it as a developer platform then you're in a pretty nice place to be! For everyone else, in the mean time, I guess there is Rider https://www.jetbrains.com/rider/ https://www.jetbrains.com/rider/ (though, of course, a paid product)
- dustinmoris 4y agoIt's the opposite for me. C# is becoming a complete clusterfuck of half baked features, bad historical choices, fear from Microsoft product owners to clean up the language and deprecate some old shit that is just polluting the language and making it hard for new beginners to learn and the worst of all, C# has a huge identity crisis and it shows in the yearly updates. The language changes so much every year that it's too tiresome to keep up with, it's increasingly more confusing and it is very unclear if C# wants to be an OOP language, an FP language or some weird jack of all trades. It's a horrible choice for beginners and I have seen many newbies who absolutely got frustrated by C#. Go is very neat, true to its core identity and very very stable. I have been developing .NET (C# and F#) for almost 20 years and I don't enjoy it at all anymore. EDIT: Just last week the .NET team tweeted that they are looking to introduce green threads to .NET after all. I love the green thread implementation in Go and I think it is superior to .NET's async/await model which get scheduled by OS threads, but .NET has gone down that route many years ago and it's embedded everywhere now and introducing such a new fundamental change now is just plain fucking stupid. Microsoft is so dumb for even thinking this is a good thing to do. If they don't like how C# works then invent a new language with modern fundamentals which you like but stop changing C# so much that it's become completely unrecognisable. .NET developers don't want to rewrite their code bases every 12 months. We have real work to do.