Live data from Hacker News

Ask HN: Is Go simplicity worth it?

news.ycombinator.com

1–10 of 21 posts

Ask HN: Is Go simplicity worth it?

#1
This is clearly a subjective matter, so I'm asking for your opinion on the topic if you have one.

For high level programming, is the value of simplicity really that important, realistically? I'm talking about manifestos like the [grug brained developer](https://grugbrain.dev/) and [harmful.cat-v.org](http://harmful.cat-v.org/software/java) where most rants point at Go as a better alternative. From my personal experience, Go is very nice to develop in exactly because of the focus on simplicity, but I'm struggling to find a realistic use for Go. Want to build a web-stack? Modern tools like Next.js, web workers, supabase etc. makes this process very easy, even though you have to write JS/TS which does not value simplicity as highly. New tech like Blazor and LiveWire lets you ditch the API pattern altogether when all you want to ship is a website. These techniques can reduce complexity in terms of how much code you need to write and maintain by ditching the frontend-backend bridge, but might introduce more complexity overall by having to use, say, C# for Blazor which is ever-growing with complexity and over-engineering. So, is it worth still sticking to Go and go with the good old fashion backend API + frontend pattern in your opinion?

When it comes to low level programming and simplicity, I struggle to find use cases for Go since we are often looking for real-time and highest performance (which Go compiler prefers speed over optimization). However, I think I'm starting to prefer C over Rust after writing a little C and previously a lot more Rust. Because I simply don't see the benefit of kinda-but-not-really-guaranteed safety with a lot of added complexity and cognitive load over the simplicity of Go or C for general purpose development. I.e. development where safety isn't a priority, because then I think Ada would be a better fit with stronger safety guarantees, no?

And sorry if it's controversial. I'm not looking to start a flame war, but I'm genuinely interested in learning different opinions on the matter.

Re: Ask HN: Is Go simplicity worth it?

#2
It’s never worth it to use anything other than Python. It’s just reached a point where even very complex problems are easy to “fix” in Python then “learn” in another language. I believe in 15 years all major companies will use it exclusively for web development.

Re: Ask HN: Is Go simplicity worth it?

#4
for large systems, you really can't beat the implicit infra that Java and .NET bring to the table. I am dealing with 20 year old VB code that interops with new .NET core code just fine. Try saying the same for Python.

The larger issue with Go, which Go enthusiasts will downvote me for, is that it allows for writing absolutely garbage code that is impossible to read. Readibility is king in software development, and developers spend 80% time reading it. I won't go into the details here, but Go has no constraints for how code should be structured, leading to spaghetti code. I have first hand experience, and 30 years professional experience.

Re: Ask HN: Is Go simplicity worth it?

#5
post #4

for large systems, you really can't beat the implicit infra that Java and .NET bring to the table. I am dealing with 20 year old VB code that interops with new .NET core code just fine. Try saying the same for Python. The larger issue with Go, which Go enthusiasts will downvote me for, is that it allows for writing absolutely garbage code that is impossible to read. Readibility is king in software development, and de…

Good point regarding .NET! The .NET CLR / VM is clever in that way.

Regarding your experience with readability in Go, I have to agree in some way because the known (and controversial) explicit error handling, but what you may realize sooner or later is that handling both the happy path and erroneous path is actually a net positive. That's the difference between seeing `if err != nil {` as code pollution or actual logic. I've realized the latter.

Re: Ask HN: Is Go simplicity worth it?

#8

What’s wrong with Java and the JVM really, particularly when Java has concise lambdas, pattern matching, virtual threads not to mention real threads that really work?

Well for starters, getting hold of a modern JDK seemed to be impossible the last time I tried (which was a couple of years ago on Windows). If I took the risk of downloading from the shady website that looked like it was last updated in 2005, I could get hold of Java 8 if Oracle was so generous as to let me download that for free .

And then the language itself forces class based programming (which isn't really OOP), which I heavily dislike due to it only over-complicating things in the long run. C# provides largely the same, but MS is actually way more open than Oracle as in it's easy to get documentation and the dev environment set up, and they provide newer and more modern features than Java. Which is surprising given it's Microsoft and their fetish for providing counter-intuitive and user-unfriendly products. When it comes to the JVM / .NET CLR, the only place I find it acceptable is on the server side IMO. The downgrade in performance (which means higher resource usage) side is not worth the "everything is an object" vision for me, at all. Not even close. Client side devices often run on battery power, so that has real consequences there.

So that's why I'm personally not the biggest Java fan. In fact, if anything on harmful.cat-v.org is true, it's "Java is write once, run away" for me... sorry. If only Oracle could provide the same user-friendliness that Microsoft is showing with .NET, ditch class-based programming (which means rewrite the entire language, not very realistic) then maybe it could be interesting, but most likely not better than Go or Node.js, in my experience anyways.

And by the way, what do you mean by threads that really work? It's cool that Java gives you the power of having system threads and green threads in the same environment, but when is that realistically needed? Only time I can think of is writing client-sided code where you want performance to be highly optimized and not wanting to waste time on organizing a new green-thread, but as I've mentioned I believe Java on the client side is nothing but a sin.

Re: Ask HN: Is Go simplicity worth it?

#9

It’s never worth it to use anything other than Python. It’s just reached a point where even very complex problems are easy to “fix” in Python then “learn” in another language. I believe in 15 years all major companies will use it exclusively for web development.

Interesting take! Although, writing client sided code is not really suited at all in Python due to the horrendous performance. That can be accepted when we're waiting for IO anyways behind a server, or when a new developer is learning to program, but apart from that, it's not really optimal at all.

Re: Ask HN: Is Go simplicity worth it?

#10
post #5
post #4

for large systems, you really can't beat the implicit infra that Java and .NET bring to the table. I am dealing with 20 year old VB code that interops with new .NET core code just fine. Try saying the same for Python. The larger issue with Go, which Go enthusiasts will downvote me for, is that it allows for writing absolutely garbage code that is impossible to read. Readibility is king in software development, and de…

Good point regarding .NET! The .NET CLR / VM is clever in that way. Regarding your experience with readability in Go, I have to agree in some way because the known (and controversial) explicit error handling, but what you may realize sooner or later is that handling both the happy path and erroneous path is actually a net positive. That's the difference between seeing `if err != nil {` as code pollution or actual log…

This older reply is pretty exhaustive. Go leaves critical readability structuring to devs (a bad idea).

https://news.ycombinator.com/item?id=38128698

Post reply on HN