frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Open in hackernews

Go is still not good

https://blog.habets.se/2025/07/Go-is-still-not-good.html
74•ustad•2h ago

Comments

keyle•2h ago
I use Go daily for work, alongside Dart, Python.

I say switching to Go is like a different kind of Zen. It takes time, to settle in and get in the flow of Go... Unlike the others, the LSP is fast, the developer, not so much. Once you've lost all will to live you become quite proficient at it. /s

written-beyond•23m ago
My developer experience was similar to rust but more frustrating because of the lax typing.

ISTG if I get downvoted for sharing my opinion I will give up on life.

figmert•28m ago
Has Go become the new PHP? Every now and then I see an article complaining about Go's shortcomings.
giancarlostoro•24m ago
No, this has been the case as long as Go has been around, then you look and its some C or C++ developer with specific needs, thats okay, its not for everyone.
ginko•20m ago
Go was announced as a replacement for C & C++ so I think it's reasonable to compare it to that.
Matl•9m ago
It was intended as a as a replacement for C & C++ for Google's use case of network services btw.
wild_egg•6m ago
It hasn't been promoted that way for over a decade at this point.
pydry•18m ago
Go is a pretty good example of how mediocre technology that would never have taken off on its own merits benefits from the rose tinted spectacles that get applied when FAANG starts a project.
christophilus•6m ago
I don’t buy this at all. I picked up Go because it has fast compilation speed, produces static binaries, can build useful things without a ton of dependencies, is relatively easy to maintain, and has good tooling baked in. I think this is why it gained adoption vs Dart or whatever other corporate-backed languages I’m forgetting.
nikolayasdf123•25m ago
if this is the worst, not too bad.
giancarlostoro•23m ago
Agree, most of us arent needing niche C++ / C language features, what Go has for us is sufficient.
pif•24m ago
It doesn't need to be good because it is not meant for good developers.
Buttons840•6m ago
And it's perfect for most business software, because most businesses are not focused on building good software.

Go has a good-enough standard library, and Go can support a "pile-of-if-statements" architecture. This is all you need.

Most enterprise environments are not handled with enough care to move beyond "pile-of-if-statements". Sure, maybe when the code was new it had a decent architecture, but soon the original developers left and then the next wave came in and they had different ideas and dreamed of a "rewrite", which they sneakily started but never finished, then they left, and the 3rd wave of developers came in and by that point the code was a mess and so now they just throw if-statements onto the pile until the Jira tickets are closed, and the company chugs along with its shitty software, and if the company ever leaks the personal data of 100 million people, they aren't financially liable.

softwaredoug•21m ago
I like Go, but my main annoyance is deciding when to use a pointer or not use a pointer as variable/receiver/argument. And if its an interface variable, it has a pointer to the concrete instance in the interface 'struct'. Some things are canonically passed as pointers like contexts.

It just feels sloppy and I'm worried I'm going to make a mistake.

vbezhenar•16m ago
Just use pointers everywhere? Who cares.
grey-area•16m ago
I just always use pointers for structs.
nikolayasdf123•3m ago
I 80% of time use structs. common misunderstanding: it does not reduce performance for pointer vs value receivers (Go compiler generates same code for both, no copy of struct receiver happens). most of structs are small anyways, safe to copy. Go also automatically translates value receivers and pointer receivers back-and-forth. and if I see pointer I see something that can be mutated (or very large). written 400,000 LOC in Go, rarely seeing this issue.
baq•19m ago
> Though Python is almost entirely refcounted, so one can pretty much rely on the __del__ finalizer being called.

yeah no. you need an acyclic structure to maybe guarantee this, in CPython. other Python implementations are more normal in that you shouldn't rely on finalizers at all.

sgarland•10m ago
I love Python, but the sheer number of caveats and warnings for __del__ makes me question if this person has ever read the docs [0]. My favorite WTF:

> It is possible (though not recommended!) for the __del__() method to postpone destruction of the instance by creating a new reference to it. This is called object resurrection.

[0]: https://docs.python.org/3/reference/datamodel.html#object.__...

tex0•18m ago
If you don't like Go, then just let go. I hope nobody forces you to use it.

Some critique is definitely valid, but some of it just sounds like they didn't take the time to grasp the language. It's trade offs all the way. For example there is a lot I like about Rust, but still no my favorite language.

7thpower•10m ago
Which begs the question: What is your favorite language?
klabb3•3m ago
[delayed]
ben0x539•3m ago
Few things are truly forced upon me in life but walking away from everything that I don't like would be foolish. There is compromise everywhere and I don't think entering into a tradeoff means I'm not entitled to have opinions about the things I'm trading off.

I don't think the article sounds like someone didn't take the time to grasp the language. It sounds like it's talking about the kind of thing that really only grates on you after you've seriously used the language for a while.

blixt•17m ago
I've been using Go more or less in every full-time job I've had since pre-1.0. It's simple for people on the team to pick up the basics, it generally chugs along (I'm rarely worried about updating to latest version of Go), it has most useful things built in, it compiles fast. Concurrency is tricky but if you spend some time with it, it's nice to express data flow in Go. The type system is most of the time very convenient, if sometimes a bit verbose. Just all-around a trusty tool in the belt.

But I can't help but agree with a lot of points in this article. Go was designed by some old-school folks that maybe stuck a bit too hard to their principles, losing sight of the practical conveniences. That said, it's a _feeling_ I have, and maybe Go would be much worse if it had solved all these quirks. To be fair, I see more leniency in fixing quirks in the last few years, like at some point I didn't think we'd ever see generics, or custom iterators, etc.

The points about RAM and portability seem mostly like personal grievances though. If it was better, that would be nice, of course. But the GC in Go is very unlikely to cause issues in most programs even at very large scale, and it's not that hard to debug. And Go runs on most platforms anyone could ever wish to ship their software on.

But yeah the whole error / nil situation still bothers me. I find myself wishing for Result[Ok, Err] and Optional[T] quite often.

torginus•15m ago
I still don't understand why defer works on function scope, and not lexical scope, and nobody has been able to explain to me the reason for it.

In fact this was so surprising to me is that I only found out about it when I wrote code that processed files in a loop, and it started crashing once the list of files got too big, because defer didnt close the handles until the function returned.

When I asked some other Go programmers, they told me to wrap the loop body in an anonymus func and invoke that.

grey-area•15m ago
There’s probably no deep reason, does it matter much?
christophilus•9m ago
I’ve worked with languages that have both, and find myself wishing I could have function-level defer inside conditionals when I use the block-level languages.
gwd•5m ago
So sometimes you want it lexical scope, and sometimes function scope; For example, maybe you open a bunch of files in a loop and need them all open for the rest of the function.

Right now it's function scope; if you need it lexical scope, you can wrap it in a function.

Suppose it were lexical scope and you needed it function scope. Then what do you do?

porridgeraisin•14m ago
> Previous posts Why Go is not my favourite language and Go programs are not portable have me critiquing Go for over a decade.

I chuckled

jact•11m ago
I worked briefly on extending an Go static site generator someone wrote for a client. The code was very clear and easy to read, but difficult to extend due to the many rough edges with the language. Simple changes required altering a lot of code in ways that were not immediately obvious. The ability to encapsulate and abstract is hindered in the name of “simplicity.” Abstraction is the primary way we achieve simple and easy to extend code. John Ousterhoust defined a complex program as one that is difficult to extend rather than necessarily being large or difficult to understand at scale. The average Go program seems to violate this principle a lot. Programs appear “simple” but extension proves difficult and fraught.

Go is a case of the emperor having no clothes. Telling people that they just don’t get it or that it’s a different way of doing things just doesn’t convince me. The only thing it has going for it is a simple dev experience.

akoboldfrying•9m ago
defer is no worse than Java's try-with-resources. Neither is true RAII, because in both cases you, the caller, need to remember to write the wordy form ("try (...) {" or "defer ...") instead of the plain form ("..."), which will still compile but silently do the wrong thing.
asmor•8m ago
Skill issue, and also wash your mouth.

1. If you want bounded scope, use an inline function. Works for defer too.

2. Array manipulation depending on memory space is a bit of a footgun, but I'd argue you usually don't manipulate a copy and then keep the source around. You usually assign the first argument of append back to itself. There's copy for the rare case you don't. The alternative is to have more indirect pointers, and you hate those too!

3. I have literally never had the issue that library code uses panic. Also they're not exceptions. They're bluescreen-level bugchecks where you "press enter to continue" at your own risk. It's usually fine and most HTTP libraries wrap requests in a recover for you, but it's not flow control.

4. If you don't know what's safe to do with a file handle you can thank libc for that, not Go.

the_duke•6m ago
I personally don't like Go, and it has many shortcomings, but there is a reason it is popular regardless:

Go is a reasonably performant language that makes it pretty straightforward to write reliable, highly concurrent services that don't rely on heavy multithreading - all thanks to the goroutine model.

There really was no other reasonably popular, static, compiled language around when Google came out.

And there still barely is - the only real competitor that sits in a similar space is Java with the new virtual threads.

Languages with async/await promise something similar, but in practice are burdened with a lot of complexity (avoiding blocking in async tasks, function colouring, ...)

I'm not counting Erlang here, because it is a very different language...

So I'd say Go is popular despite the myriad of shortcomings, thanks to goroutines and the Google project street cred.

jonathan920•4m ago
Oh no , Rust is too tough, go is no good, am i going back to java?
antiquark•3m ago
I'm still appalled that there's no "do while" loop in go.
zwnow•3m ago
> Wait, what? Why is err reused for foo2()? Is there’s something subtle I’m not seeing? Even if we change that to :=, we’re left to wonder why err is in scope for (potentially) the rest of the function. Why? Is it read later?

First time its assigned nil, second time its overwritten in case there's an error in the 2nd function. I dont see the authors issue? Its very explicit.

crinkly•3m ago
I dislike Go but I haven’t found anything else I dislike less.

Show HN: PDJsonEditor – JSON editor with code↔graph sync and API fetch (OSS)

https://json.podosoft.io
1•korone•1m ago•0 comments

What about using rel="share-url" to expose sharing intents?

https://shkspr.mobi/blog/2025/08/what-about-using-relshare-url-to-expose-sharing-intents/
2•edent•3m ago•0 comments

Do I need a Lisp Machine comeback?

https://far.chickenkiller.com/computing/do-i-need-a-lisp-machine-comeback/
1•farooqkz•4m ago•0 comments

Cursor runs shell commands straight from files

https://twitter.com/pelaseyed/status/1958857885670162801
1•homanp•4m ago•1 comments

DHL: German postal service to suspend transport of business parcels to US

https://www.reuters.com/business/dhl-german-postal-service-suspend-transport-business-parcels-us-2025-08-22/
1•mraniki•4m ago•0 comments

Part I: Tricks or Traps? A Deep Dive into RL for LLM Reasoning

https://arxiv.org/abs/2508.08221
1•Anon84•7m ago•0 comments

Seed-OSS: open-source LLM models by ByteDance

https://huggingface.co/ByteDance-Seed/Seed-OSS-36B-Instruct
1•maxloh•8m ago•0 comments

Scaling Your AI Enterprise Architecture with MCP Systems

https://decodingml.substack.com/p/why-mcp-breaks-old-enterprise-ai
1•rbanffy•8m ago•0 comments

Building the Chiplet Ecosystem – By Austin Lyons

https://www.chipstrat.com/p/building-the-chiplet-ecosystem
1•rbanffy•10m ago•0 comments

Vale Programming Language

https://vale.dev/
1•begoon•10m ago•0 comments

The tar archive format, its extensions, and why GNU tar extracts in quadratic ti

https://mort.coffee/home/tar/
1•fanf2•10m ago•0 comments

Bloomberg DMCA'd gamersnexus GPU smuggling documentary for quoting the President [video]

https://www.youtube.com/watch?v=6RJvrTC6oTI
2•SXX•10m ago•0 comments

OpenAI lawyers question Meta's role in Elon Musk's $97B takeover bid

https://techcrunch.com/2025/08/21/openai-lawyers-question-metas-role-in-elon-musks-97b-takeover-bid/
2•rbanffy•10m ago•0 comments

Scientists find new quantum behavior in unusual superconducting material

https://phys.org/news/2025-08-scientists-quantum-behavior-unusual-superconducting.html
1•PaulHoule•11m ago•0 comments

Fun with Golang Slices

https://mmudama.github.io/posts/2025/fun-with-slices/
1•mooreds•11m ago•0 comments

My Responses to the Register

https://xeiaso.net/notes/2025/el-reg-responses/
1•mooreds•12m ago•0 comments

Our approach to energy innovation and AI's environmental footprint

https://blog.google/outreach-initiatives/sustainability/google-ai-energy-efficiency/
1•mooreds•12m ago•0 comments

European space tech has data to sell – but where are the buyers?

https://thenextweb.com/news/europe-space-tech-data-buyers
1•amalinovic•13m ago•0 comments

FFmpeg 8.0

https://code.ffmpeg.org/FFmpeg/FFmpeg/src/tag/n8.0/Changelog
1•gyan•13m ago•0 comments

Google Drive Int, Python 3.11 in Conda Envs, SEC Improvements in Datalore 2025.4

https://blog.jetbrains.com/datalore/2025/08/22/google-drive-integration-python-3-11-in-conda-environments-and-security-improvements-in-datalore-2025-4/
1•unripe_syntax•14m ago•0 comments

UN officially declares famine in Gaza

https://www.lemonde.fr/en/international/article/2025/08/22/un-declares-famine-in-gaza_6744612_4.html
2•Qem•14m ago•0 comments

The Hidden Cost of Winning:How RL Training on Poker Degrades LLM Moral Alignment

https://tobysimonds.com/research/2025/08/22/PokerRL.html
2•tamassimond•15m ago•0 comments

Udemy. Course. Connect brain to OpenAI via brain interface. Limited Free access

https://www.udemy.com/course/chatgpt-brain-computer-interfaces-vibe-coding-for-all/?couponCode=33FD1EC7EC19A85EC709
2•ArminiShield•16m ago•0 comments

ChatPRD AI Product Manager

https://www.chatprd.ai/
1•bretpiatt•21m ago•0 comments

AskCyph Unified AI platform (apps, chatbots, video, images via API or UI)

https://askcyph.ai
1•cyphertechinc•21m ago•1 comments

Ecosia suggests to take over Chrome stewardship without sale

https://www.heise.de/en/news/Browser-Ecosia-wants-responsibility-for-Chrome-but-without-paying-for-it-10574207.html
1•Propelloni•23m ago•0 comments

OpenAI and Ollama compatible API powered by your ChatGPT plan

https://github.com/RayBytes/ChatMock
1•smoser•24m ago•0 comments

The Hobbyist Restorer Who Rocked the Art World with an A.I. Innovation

https://www.nytimes.com/2025/08/22/world/europe/art-restoration-ai-innovation.html
1•donohoe•26m ago•0 comments

Fake Maker

https://motionmuse.ai/explore
1•joeyehaw•26m ago•0 comments

The trouble with trigger warnings: True drama is an emotional ambush

https://unherd.com/2025/08/art-should-trigger-you/
1•drankl•26m ago•0 comments