What type of applications/systems Go is bad for?
I just want to say that I love Go. I have used it for 8 years, and I love it as a language. I hopefully can end my career as a Go dev, I love it so much. I however have taken on a lot of projects where I feel that maybe Go isn't the best fit. And I just wanted to go over things that I feel Go is kind of bad at.
-
Business domain heavy applications. If most of your development effort is updating business logic for an application I feel go is bad at this. This mainly is because you're updating some json schema or transforming one. And I almost feel Go is just not great for that. The code looks really clunky. It is also the source of some of the worst Go code I've seen. Because of Go's limitation I've seen a lot of makeshift implementations that are hard to read. And I've seen a lot of interface pollution here
-
Frontend/Gui. I know there are a few front end and Gui frameworks for Go. But for the most part I have found that a lot of Go primitive don't work well for this. One is that garbage collector. I kind of feel for desktop applications you kind of need this. I know C# is used a lot of this. But C# leverages a lot of UI frameworks very well, and the underlying runtimes like .NET seem to optimize the C# code. Java has similar limitation, but again Java was built day 1 with UI development in mind. So it's runtime is much more optimize for this.
-
Data engineering. Similar to business rules. This requires a lot of data transformation. Tons of parsing of data.
-
Game development. I think the garbage collector is just going to get in your way here. Simple games probably aren't an issue. But anything that requires you use OpenGL or any other sort of renderer this a non starter. C# is used for game development it of course it also has a GC. But again lots of times C# run on top of game engines, so these optimizations are done under the hood. And if you're not using an engine, almost everyone goes with manual memory management.
-
Embedded systems. I know there is tinyGo. I haven't heard about it in years. But Go just based on its default toolkit does not seem to work well here. But this shouldn't be much of a surprise.
Now I know Go can be used for a lot of this stuff. But the question is are you fighting against the current when you are doing this in Go? Like for data wrangling and transformation. I just feel that there are so many better choices like Python. Or for business rules development. Like sure there are many many rules engines for Go, but are they are mature as something like say DROOLS?
I feel Go is really good for network programming, API development, and things that require really good and efficient I/O over the wire. But it does not feel like a great business language.
Anyway thought or opinions? Disagree? Please share
Posted Jul 26, 2024, 2:37 PM UTC