TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Lies we tell ourselves to keep using Golang

748 pointsby 0xedbabout 3 years ago

57 comments

HL33tibCe7about 3 years ago
The author writes well and makes compelling points. His &quot;I want to get off Mr Golang&#x27;s Wild Ride&quot; post is good too.<p>But I don&#x27;t find myself agreeing with his position, which is &quot;you shouldn&#x27;t use Go for production services&quot; (he explicitly says this in one of his Go posts, I forget which one and don&#x27;t have time to look right now).<p>The better alternative to Go is Rust. Okay, sure, I&#x27;m willing to admit that in the examples presented, Rust handles things better. But Rust isn&#x27;t a panacea. Rust is complicated and hard, and often it&#x27;s not worth taking on that burden just to theoretically handle cases that rarely occur and even more rarely cause any problem. Programming is a means to an end, and the cost of using Rust (hiring, increased development time) is often not worth it.<p>The reason Go is successful is because it&#x27;s easy for companies to use to solve production problems with teams of varying expertise. Its stdlib is well-featured, its ecosystem is good. There&#x27;s generally one correct way of doing things. The same doesn&#x27;t appear true in Rust. For example, an _incredibly_ common thing to do in production code is to make a web request. In Go, there is no need for debate, you use the stdlib. In Rust, you have to use a crate, which requires a decision to be made. Even worse is the async story, in Rust you have to decide whether to use Tokio or whatever. That burden is just not present with Go.<p>Btw this article should not be flagged and it&#x27;s pathetic that people have flagged it.
评论 #31206963 未加载
评论 #31207157 未加载
评论 #31210224 未加载
评论 #31207219 未加载
评论 #31206653 未加载
评论 #31213899 未加载
评论 #31213658 未加载
评论 #31213936 未加载
评论 #31216093 未加载
评论 #31207275 未加载
评论 #31303547 未加载
评论 #31357635 未加载
评论 #31209698 未加载
rmastersabout 3 years ago
Flagging this post strikes me as shameful censorship of an unpopular opinion.<p>You may say it&#x27;s the snark&#x2F;anger&#x2F;frustration that got flagged, but I suspect it would not have been flagged if the topic were different.<p>Presuming the author is making bad-faith arguments for internet blog points goes against the spirit of HN. I prefer to draw my own conclusions, thank you. I normally expect HN to take the higher ground with calm and reasoned counter arguments of the content but not today I guess.
评论 #31207191 未加载
评论 #31206614 未加载
评论 #31206564 未加载
评论 #31206693 未加载
blindseerabout 3 years ago
I&#x27;ve used Go and Rust professionally and in side projects, and I had used Go first before Rust. When I first used Go, I was like &quot;oh wow, this is so simple and easy&quot;, and I didn&#x27;t realize that I was putting up with the language. Learning Rust was relatively harder, but once I did and wrote some non trivial programs in Rust, it was like a pathway in my brain opened up and was previously blocked, and then when I went back to Go, I was painfully aware of issues that I the programmer had to keep in mind (or write a LOT of boilerplate code to keep track of). Issues that Rust&#x27;s type system just solves.<p>The way `nil` can seep into your codebase in Go and how bad the FFI is in Go will prevent me from ever choosing it for a project going forward. And I personally would not feel confident modifying Go code written by someone else, and would not feel confident accepting PRs into my Go codebase unless I understood every line inside and out.<p>Rust is a breath of fresh air in that regard.<p>All that said, I think the author here is idealistic in a certain sense. In the scale of &quot;solving a problem by hand (or using Excel&#x2F;a proprietary tool etc)&quot; to &quot;writing a computer program to automate it&quot;, both Go and Rust are very close to each other. And once someone learns Go and knows it well enough, the incremental cost of learning Rust or even thinking about the problems Rust solves for you becomes not worth it. I think that it&#x27;s sad that this is the way it works, but that&#x27;s just how it is. It&#x27;s easy for settle for a local optima like Go when taking into consideration family, pets, salary, time, effort etc.<p>I do think on a long enough timescale, programmers will eventually move to a &quot;better&quot; language. But in my opinion, that time scale exceeds the lifespan of a human :)
评论 #31206420 未加载
评论 #31223714 未加载
strebloabout 3 years ago
I didn&#x27;t care in the last post and I don&#x27;t care about this one either. I care about my productivity, I care about my team&#x27;s productivity, and I care about getting stuff shipped. Those are the things I care about, and go works great for that. If you care about those things too, and you&#x27;re using go, you shouldn&#x27;t stop using go.<p>My whole career people have been telling me to stop using languages or tools I&#x27;ve been productive with. I&#x27;ve built successful companies where everything was written in python, the whole time people on HN telling me how I was using a lowly language because of things like whitespace significance or strings that were not unicode by default.<p>If you care about other stuff, fine. If you don&#x27;t think go works for you, don&#x27;t use go. Just stop telling people who are using go (and other productive languages) to stop using them because of obscure language design issues or obscure API choices that people rarely encounter day to day. That isn&#x27;t what matters to most people, and it&#x27;s actually bad advice.<p>The problem is that there are a ton of less experienced people reading stuff on HN (just as I once was) who will take this to heart but have nothing actionable to gain from it, except to think they&#x27;re a bad developer using a bad language. They aren&#x27;t, and they&#x27;re not.
评论 #31206282 未加载
评论 #31206544 未加载
评论 #31206962 未加载
评论 #31206173 未加载
评论 #31206000 未加载
评论 #31213998 未加载
评论 #31207711 未加载
评论 #31205860 未加载
boulosabout 3 years ago
As people have remarked, Amos&#x27;s style can be grating and hyperbolic. That doesn&#x27;t make a lot of his complaints about Go as a language incorrect.<p>I do think he&#x27;s misunderstanding that the design intent is &quot;networked C&quot; and that Go + Protobuf is much better than he thinks. A lot of his complaints with the language and runtime boil down to:<p>- It&#x27;s got a primitive type system (yep, nobody disagrees)<p>- It leaves a lot of problems to you (yep, just like C)<p>- you can&#x27;t integrate it into existing binaries (yep, distributed systems connected by RPC)<p>He comes to terms with the last one and admits it, but it is not only the thing Go is good at but it was the <i>design intent</i>. If you start from &quot;we want a language and runtime for writing distributed systems that would otherwise be written in C or Java&quot; then Go is pretty good!<p>I&#x27;m a happy Go, Rust, C, and C++ person. They&#x27;re each for different things. That Rust worked out (is working out?) despite being an incredibly powerful and complex language (compared to C) is awesome. In the mid-2000s, it&#x27;s not clear that you&#x27;d bet on a language like Rust. It is clear you could do better than Java or C++ for distributed systems programming, and Go hit that pretty reasonably (I do wish the language had a better type system, and I&#x27;m glad to see Ian finally land generics, but I&#x27;d absolutely reach for Rust when writing code in a small group that can handle the &quot;language complexity&quot; in exchange for the benefits).
评论 #31210585 未加载
评论 #31213686 未加载
kitdabout 3 years ago
The author obviously doesn&#x27;t like Go. Ok, he can have his own opinions.<p>I&#x27;ve been coding professionally since 1987, using everything from mainframe assembler, Fortran, C, VB, Java, C++, to most recently Go. IMHO, the language itself plays a smaller role in its usefulness than most think. As important is the tooling, stdlib, ecosystem, community and &quot;StackOverflow&quot;-ability.<p>Go has a few warts, like every language, but not that many, and they are more than made up for by how easy it is to assemble and run a project using it. It&#x27;s that that makes it the most productive language I&#x27;ve used so far.
评论 #31205845 未加载
评论 #31205726 未加载
评论 #31205610 未加载
评论 #31205731 未加载
评论 #31205683 未加载
crawshawabout 3 years ago
Tailscalar here.<p>Go made prototyping our product easy. We have relatively rarely needed Go expertise on the team to make the product better, when we did it was for the exotic iOS environment (not normal iOS, the Network Extension).<p>It’s far from perfect (and I really should write an experience report about all the times Go has let us down!), but it gives us less trouble than Node and Swift do, for our relatively minor uses of those languages. I don’t think any other language would have been a better choice, even putting our expertise aside.<p>On the whole I would say you don’t need Go experts on your team to build products in the language.
评论 #31214046 未加载
cglanabout 3 years ago
I just don&#x27;t see the issue with Go. After dealing with inscrutable errors in some python code that interfaces with OpenSSL. Or dealing with impossible to trace errors in Spring Boot. Or Javascript? An absolute nightmare from start to finish. There&#x27;s something extremely nice to get an error, place a breakpoint and trace exactly (even if it&#x27;s a third party library) that error is happening.<p>I will take all the footguns in the world for that ability. Plus in general the tooling is just amazing. I know there is other Unix tooling out there but I&#x27;m sorry, they kinda suck and are terrible to use. They&#x27;re for the type of person who can use vim with their eyes closed and unfortunately that&#x27;s not me.<p>The other footguns he mentioned? Valid. A linter will catch a chunk of them though. I just generally don&#x27;t think they matter half the time. I think of it like the iPhone. It&#x27;s a pleasure to use like 80% of the time maybe 85% and 10% it feels hacky and terrible to get something working and 5% you just can&#x27;t or shouldn&#x27;t do it.<p>So for the 80% use case (backend crud apps or backend web apis) I&#x27;d take Go every time. Plus it compiles almost instantly versus multi minute turnaround times in a lot of other languages.
评论 #31206976 未加载
steaminghamsabout 3 years ago
I generally like go and also see its problems as the author does.<p>However, with respect to the points about Go as a prototyping&#x2F;starter language, there is not better language to start writing a project with in my opinion. Lots of languages have big communities of packages of various levels of maintenance but almost no other language has a standard library that is as usable as Go with the same guarantees between versions. I think its the biggest downfall of all these new languages like Rust&#x2F;Zig&#x2F;Hare etc, they all go for these minuscule standard libraries. I have no wish to start a project with any of them as all of them would involve I hunt down the &#x27;best&#x27; http library and the &#x27;best&#x27; async library and weigh their upsides and downsides, so I just reach for go and crack out the code I need to get it done, nothing else lets me do that half as easily, maintenance may be harder but at least I&#x27;m probably going to spend less time maintaining the list of packages that are still usable.
评论 #31208296 未加载
kgeistabout 3 years ago
We have tens of microservices written in Go.<p>Go is good for onboarding new devs because it&#x27;s simple. Our existing PHP devs were taught Go and it was painless. Jumping from PHP straight into Rust would be pretty painful, I think. Finding Rust devs isn&#x27;t easy in our town.<p>But I agree with most of the points. You got to be very careful when writing in Go, because there are many gotchas. So many gotchas that I had to write a large document describing all the conventions and rules to remember to write bug-free (hopefully) Go. This &quot;Go with conventions&quot; reminds of the days when you&#x27;d try to simulate OOP in C - it works but error-prone.<p>Many of the problems are caught early with good unit and integration testing, however, just like with scripting languages. In my experience, most of the bugs in production in our Go microservices come from logical mistakes, not from misusing Go.
评论 #31207212 未加载
评论 #31225251 未加载
评论 #31212605 未加载
mcluckabout 3 years ago
I&#x27;m honestly surprised at the response to this article. I&#x27;m not involved in the Rust or Go spaces enough to have any strong opinions. This article was, yes, a little aggressive in tone but presented very honest and accurate information about a language that the author clearly has experience in. It seems like a lot of the people complaining in the comments didn&#x27;t actually read the article. The author even explains how those who have bought in to Go may not want to hear what they&#x27;re saying and it&#x27;s right. No one wants to hear that their baby is ugly but sometimes it&#x27;s the truth.<p>To those who do use Go: someone can call your baby ugly and you can still love it.
评论 #31206305 未加载
评论 #31206977 未加载
评论 #31207028 未加载
评论 #31207173 未加载
评论 #31206634 未加载
评论 #31206974 未加载
评论 #31212338 未加载
评论 #31206696 未加载
评论 #31206965 未加载
评论 #31206791 未加载
eatonphilabout 3 years ago
I use Go heavily cross-platform developing DataStation [0] and dsq [1]. I am not an expert. And I don&#x27;t have proof for it but on some rudimentary benchmarks the Linux-specific file idioms in the Go standard library definitely don&#x27;t seem to translate well to even macOS let alone Windows. For example some good streaming techniques for reading large files on Linux that work really well there seemed to be pretty bad on macOS.<p>I think Amos has presented more proof than I can on the topic of just how Linux-influenced Go is. And I think it is fine for the majority of Go users because the majority users of Go are building server apps or Linux CLIs.<p>Amos has spent some time building cross-platform desktop systems with Go for itch.io and I think I&#x27;m seeing some of the same things they are in that scenario.<p>I think this is a reasonable article. I didn&#x27;t notice anything too flame-y myself but if for you Amos gets flame-y at any point I think that&#x27;s worth ignoring because there does seem to be something up with Go in cross-platform applications. Amos does have good experience here. (Go look at itchi.io&#x27;s github like wharf [2] or butler [3] where they are&#x2F;were the main contributor.)<p>I like Go a lot and for most things I&#x27;d keep using it still. Just sharing some observations.<p>[0] <a href="https:&#x2F;&#x2F;github.com&#x2F;multiprocessio&#x2F;datastation" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;multiprocessio&#x2F;datastation</a><p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;multiprocessio&#x2F;dsq" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;multiprocessio&#x2F;dsq</a><p>[2] <a href="https:&#x2F;&#x2F;github.com&#x2F;itchio&#x2F;wharf" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;itchio&#x2F;wharf</a><p>[3] <a href="https:&#x2F;&#x2F;github.com&#x2F;itchio&#x2F;butler" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;itchio&#x2F;butler</a>
trentnixabout 3 years ago
I&#x27;m not emotionally attached to Go, I want to learn rust, and I&#x27;m old enough to realize the search for the perfect tool is utter folly. So the inevitable religious wars that surround critiques like this don&#x27;t move the needle for me.<p>So while this article didn&#x27;t really convince me of anything, I have to admit I <i>did</i> learn a thing or two (or five). Kudos to the author, who is a fantastic writer and communicator. Even if you aren&#x27;t neck deep in the language wars, it&#x27;s worth reading.
assbuttbuttassabout 3 years ago
I feel like go hits a sweet spot between productivity and correctness.<p>Working in Python, I constantly run into errors that static typing could have caught. Working in Rust, I feel like I&#x27;m constantly fighting the borrow checker. Maybe a more experienced Rust programmer would feel differently, but one of the strengths of Go is that it&#x27;s relatively easy to learn
评论 #31208334 未加载
tristorabout 3 years ago
I use Go. I love Go. The reason why is pretty simple for me: It gets things done in a way that feels comfortable and has strong tooling. I am well aware it has shortcomings. I occasionally even run into them. However, as someone who doesn&#x27;t particularly &#x2F;like&#x2F; writing code, and instead sees it as the inevitable requirement of creating things that do something for me, I really appreciate that Go for the most part doesn&#x27;t get in my way so I can make things that do something and move on.<p>I generally heavily preference scripting&#x2F;interpreted languages over compiled languages, because compiled languages have a bevy of stuff that qualifies as &quot;getting in my way&quot;. Go is refreshingly not like that, and therefore is the primary compiled language I use these days, and largely the primary language I use at all. Then again, I&#x27;m not an SWE. I&#x27;m a SysOps&#x2F;SRE turned PM-T. So it&#x27;s unlikely I would ever dig deeply enough to care about the particulars of a language&#x27;s design other than knowing which problems it is best at and which problems a better choice can be made to solve.<p>Both this article and his previous article, I&#x27;ve read thoroughly. I understand and appreciate the criticism. But fundamentally there&#x27;s seems to be an implicit assumption within both articles that other developers who use Go don&#x27;t already know (most of) these things. Anyone who uses Go long enough will eventually run into some of its shortcomings. I&#x27;m not sure exactly why it rubs me the wrong way, but it feels like there&#x27;s something subtlety insulting in the way the author presents his arguments. Like if we weren&#x27;t all stupid rubes we&#x27;d just use whatever his preferred language is (Rust, presumably?).<p>The way people get zealoted about languages these days (especially some pretty terrible ones for getting things done) tempts me to just go back to writing Perl. In all the languages I&#x27;ve used over the years, I&#x27;ve probably got more raw work done in Perl than anything else, and it&#x27;s still near and dear to my heart, despite being objectively a badly designed language.
mattbeeabout 3 years ago
Yes, this is a really good article, I think the tone is warranted! I&#x27;m writing a Go course at the moment - all the basics on channels, slices, pointers with all their warts - and am not shying away from saying &quot;sorry this doesn&#x27;t make any sense, you just have to know it and beware&quot;.<p>I appreciate the nil method receivers, the zero value meanings, the types that are actually hidden pointers, but if you&#x27;re not coming from C, a lot of it sounds inconsistent and counter-intuitive. And I&#x27;m not sure there&#x27;s a way to justify it to programmers who have grown up on better, safer, clearer abstractions, even with the potential performance gains.
hintymadabout 3 years ago
I&#x27;m not sure why choice of programming language is such a heated topic. &quot;Want to use Java? Over my dead body&quot;, said a ex-Uber employee. &quot;Let&#x27;s rewrite Kafka in Rust to avoid using Java in our team&quot;, said an employee in a $10B+ unicorn. &quot;Go is a plague. Let&#x27;s use Rust&quot;, said an employee in another $5B+ unicorn. Doesn&#x27;t language itself contribute just a small portion to our productivity? The platforms and ecosystems of programming languages usually matter more? And it&#x27;s simply childish to argue that GC sucks when your services handle merely 100s of QPS (even if millions of QPS, so what? It really depends on what you try to achieve), or to argue that language X sucks because it does not have feature Y. I hate to break the news to language fanatics: your program is slow most likely because you didn&#x27;t choose the right data structures or algorithms instead of using the wrong language. You productivity sucks most likely because you didn&#x27;t write simple, correct, or operable software.
评论 #31208361 未加载
评论 #31208415 未加载
evo_9about 3 years ago
The flagged feature needs to be tweaked on HN; it&#x27;s being used far too often to censure opinions others simply do not agree with.
评论 #31206594 未加载
评论 #31206932 未加载
评论 #31206566 未加载
unethical_banabout 3 years ago
&gt; Why does the Go compiler suddenly care if we provide explicit values now? If the language was self-consistent, it would let me omit both parameters, and just default to zero.<p>Without analyzing the rest of the post (which I read without having the skill to fully comprehend), this stuck out to me.<p>Perhaps the language behaves one way and not another by design? It&#x27;s abstraction. By using a Struct, I&#x27;m telling the function &quot;don&#x27;t worry what is in this one box of data, just take it and process it as best you can&quot; while defining two inputs to a function says &quot;I demand that two pieces of data be present&quot;.<p>I don&#x27;t think it&#x27;s an inconsistency to see this behavior.
评论 #31205889 未加载
评论 #31208012 未加载
SeanLukeabout 3 years ago
I don&#x27;t know nothin&#x27; about Go. But this complaint really surprised me:<p>&gt; Go not letting you do operator overloading, harking back to the Java days where a == b isn&#x27;t the same as a.equals(b)<p>Does this guy really not understand that in a mutable language, (eq ...) is not the same as (equalp ...) and should never be confused with it?<p>Also: operator overloading is the spawn of Satan.
评论 #31205701 未加载
评论 #31205833 未加载
评论 #31207018 未加载
评论 #31205940 未加载
评论 #31207234 未加载
评论 #31216498 未加载
评论 #31223768 未加载
mfrwabout 3 years ago
I use go at my ${DAY_JOB} and I love go. I think it’s a little too aggressive on our part as a community to flag this post. Although, I do not agree to all the opinions shared by the author. Let&#x27;s agree to disagree :)
1970-01-01about 3 years ago
Why&#x27;s this flagged? It&#x27;s not poorly written and makes good points. I don&#x27;t agree with many of them, yet I still up-voted because it makes good points.
throwaway4goodabout 3 years ago
This article should not be flagged.
评论 #31206123 未加载
ctvoabout 3 years ago
Unrelated (though a fun read) to the content: Thank you for making your blog readable. The typography choices are exemplary.
lucasyvasabout 3 years ago
This shouldn&#x27;t be flagged...
评论 #31206293 未加载
评论 #31206263 未加载
评论 #31206571 未加载
Zababaabout 3 years ago
I have a hard time judging the &quot;actual quality&quot; of the article, but considering the quality of the discussions it generates, I don&#x27;t think something like that is a good fit for HN.<p>There&#x27;s something that I think is important to mention: there&#x27;s a difference between theorical ways to make bugs and bugs that happen in reality. The author spends more time talking about theorical ways to make bugs than bugs that happen in reality. I&#x27;m all for the &quot;we should be using good tools&quot;, but there&#x27;s also a point where you shouldn&#x27;t use a tool just to use it.<p>An example of that: at work we have a very huge codebase that&#x27;s a pile of C++, C#, JS and TS. The codebase is more than 20 years old. Typescript is a relatively recent addition. I&#x27;ve seen part of the adoption, and talked a lot with the people that adopted it. And the conclusion is that it didn&#x27;t really reduced the errors we have in production. We already have processes to cover for that: being careful during development, pair programming, code reviews, automated tests, manual tests. However, it made the development way easier, since Typescript has a better IDE support. But it didn&#x27;t lead to use reducing our processes.<p>A lot of the article seems to be rationalizing bad experiences with Go due to bug happening in production. I don&#x27;t want to reject the criticism entirely, but I think the language isn&#x27;t the only thing you can blame here. And my own experience is that processes matters more than the language when try to write good code. It seems like the author has a different experience compared to mine, and I don&#x27;t want to fall into the fallacy of &quot;it&#x27;s possible to write bad code in every language&quot;. But I think the author should recognize that people can have widely different experiences, and that there isn&#x27;t always someone that&#x27;s right and someone that&#x27;s wrong.<p>I&#x27;ve read lots of thing about Typescript adoption and lots of people&#x2F;companies mention a reduction of bugs in production. This didn&#x27;t happen for us. That doesn&#x27;t mean they&#x27;re wrong, and that also doesn&#x27;t mean that Typescript is useless for reducing bugs in production. It means we have different experiences. I think it would be more productive to talk about our experiences, and try to find out why they are so different. This way we could learn a bit more about software engineering, and develop more empathy for each others.
评论 #31206221 未加载
dimglabout 3 years ago
This article should get unflagged. This is an eloquently written article and a good discussion about Golang. I think we need more articles critical of Golang.<p>Edit: I&#x27;m really shocked by the downvotes. Can someone explain why my comment is worthy of being downvoted?
pphyschabout 3 years ago
The recent paper from Go core devs, &quot;The GO PL and <i>its Environment</i>&quot; highlights that a <i>major</i> aspect of Go is its environment&#x2F;ecosystem, from the very start.<p>But the OP, in either article, zeroes in on narrow language&#x2F;STL design choices and never zooms out to consider the ecosystem and how Go works in an actual software engineering team. Pardon the vulgar analogy, but this is like zooming in on a dog&#x27;s asshole and going &quot;what the fuck is this? It looks gross and shit comes out&quot; without considering that it is an integral part of a well-functioning whole.<p>It all comes down to misunderstanding each other&#x27;s positions.
DLAabout 3 years ago
So much Go hate and arguments over language design details. Meh. Back to producing fast, well-organized, maintainable, bullet proof code in Go for real-world problems.
评论 #31225491 未加载
benreesmanabout 3 years ago
You guys <i>flagged</i> this? That is not the move of a vibrant, growing, confident community. I’m no fan of the Rust jihad myself, but this isn’t spam or hate speech or whatever.<p>That is a super weak move.
评论 #31207126 未加载
评论 #31206720 未加载
评论 #31206397 未加载
评论 #31206592 未加载
评论 #31206550 未加载
评论 #31207468 未加载
评论 #31206839 未加载
HerrmannMabout 3 years ago
2014 Story Time, when I was a phd student working on programming languages (apologies for my broken English, non native speaker here).<p>The multidisciplinary lab I was in had a &quot;Go or Rust&quot; dilemma. As the language guy, I was asked for my opinion.<p>I had no experience with Go, and a small bad one with Rust: there was weird stuff going on with pointers, and even seemingly simple programs would fail to compile due to a less than happy borrow checker. Working with Rust required a heavy learning investment. On the other hand, Go looked simple, with amazing goroutine, fast compilation time (great for the code&#x2F;compile loop), and backed by a big company, which is reassuring for then still young languages.<p>As I could not form my opinion on significant coding experience, I looked at the principles. It appeared to me that Rust design was guided by language principles, whereas Go was guided by system&#x2F;engineering requirements. For example, Rust had generic and sum types, which Go lacked. Rust error are &quot;naturally&quot; dealt with using sum types, whereas Go relied on error codes. Go had that &quot;operating system flavor&quot;, with features usually closed to the OS directly implemented in the language (goroutines, which are great). Rust had that &quot;things are complicated flavor&quot;, in both the language (borrow checker, several kind of pointers), and the library (several kind of string?!) which at first is of-putting.<p>Being a language guy, I argued for Rust&#x27;s good use of language principles over Go&#x27;s more practical approach. My bet was that Rust usability would improve. A mix of Java&#x2F;Scala was chosen. I now code in C++...<p>--- --- ---<p>A note on simplicity. Simplicity is a lie. Things (not only programming languages) are not simple, they are messy, hard. Truly hard. In my experience, simplicity claims are usually superficial, and show their limits when going a bit deeper. As programmers, we like to have simple, generic, abstracted constructs, because it makes our life easier. But the world is not generic; it is full of special cases, corner cases, situations that do not fall in a nice hierarchy, which is its beauty. It took me too long to &quot;accept&quot; this beautiful complexity, and to stop fighting it. If you are still looking for simplicity, maybe check that you are not fighting the world&#x27;s complexity.
评论 #31214110 未加载
rvieiraabout 3 years ago
I guess that, like everything, it depends on what you&#x27;re using it for and which compromises one is willing to do.<p>I&#x27;m not proficient nor use at $DAY_JOB C, Go or Rust. However, I wanted to write an Emacs dynamic module and those were my main choices AFAIK.<p>I&#x27;ve picked Go to write a grunt work module (fetching JSON, parsing it, transform it, send back to Emacs) and it&#x27;s been smooth sailing.<p>I then found the benefits of writing client glue code between Minikube, direct K8s and Docker and Emacs a breeze.<p>What lie am I telling myself?
smasher164about 3 years ago
Not a fan of articles that attempt to speak for me or say that I have stockholm syndrome. It’s super gaslighty and a pernicious form of contempt culture in the tech community. Instead of just saying how they feel about a language, they try to claim a moral high ground.
zozbot234about 3 years ago
What&#x27;s up with the anti-Golang shitposts lately? I liked fasterthanlime better when he didn&#x27;t just sound like a card-carrying Rust zealot. This isn&#x27;t even about the practicalities of his argument really; optics matter, and it&#x27;s especially bad since the Rust community used to be known for its politeness and always being fair to other language communities.
评论 #31205372 未加载
评论 #31205476 未加载
评论 #31206136 未加载
评论 #31205386 未加载
评论 #31205536 未加载
评论 #31205357 未加载
评论 #31205394 未加载
wara23arishabout 3 years ago
Im a go noobie so I had a question about the following.<p>&gt; Go&#x27;s lack of support for immutable data — the only way to prevent something from being mutated is to only hand out copies of it, and to be very careful to not mutate it in the code that actually has access to the inner bits.<p>I thought everything was handed out as copies in go by default unless a pointer was being passed. So this would make it “easy” to tell whether you are mutating a object or not.<p>would appreciate if anyone can clear that up for me.<p>side notes:<p>since Im still a junior, not too interested in language wars and feel like everything i touch i learn something from no matter how old&#x2F;new it is.<p>honestly, i would never have the confidence to critic this &lt;language&gt; in that fashion. i cant convince myself that i know enough about language design&#x2F;systems to critic anything that harshly.<p>maybe its my shortcoming as a junior :)
评论 #31205674 未加载
评论 #31205967 未加载
评论 #31205782 未加载
评论 #31205807 未加载
评论 #31205855 未加载
TheMagicHorseyabout 3 years ago
I&#x27;m just a simple dev in a 3-man team building an app and a back-end to go with it. Our company is default dead. Maybe some day I will regret choosing Go for our back-end. But right now it is the right balance of scalability, easy async, good tooling, great back-end infrastructure (Google App Engine and Firestore) and productivity.<p>I read articles like this, and think to myself ... some future CTO will curse my choices today. But then I feel that future CTO will curse any choices I make, and it won&#x27;t be fair for her to curse my choices ... because I&#x27;m just trying to get us from default dead to default alive without running out of the small amount of money we raised.<p>Rust is absolutely not an option for us. We don&#x27;t have the skills or time to write a Rust backend right now.
victoryhbabout 3 years ago
Why is HN flagging this article? Just because it exposes the (debatable) flaws of a language that the HN crowd love? Justifications must be provided.
unethical_banabout 3 years ago
One more thing to note (on this post that is already on page 2 of HN after 47 minutes):<p>To me, as a scripter-ops kind of person, Go is useful as a Python variant. You get types, you get a huge standard library, and much of ops is network-based communication and glue code. The last job I had, I was tasked with rewriting a moderate Python lambda into golang as a POC for ease of use, and performance.<p>I relearned the basics of go in about two days, used google and docs copiously, but otherwise did not change the structure of the program.<p>The execution time was cut in half! It&#x27;s an easy language to get using quickly and serves that purpose well. I wonder if the author could acknowledge the comparison to Python.
评论 #31206046 未加载
foldrabout 3 years ago
&gt; Go&#x27;s confusion between &quot;type aliases&quot; and &quot;newtypes&quot;. The only way to make a newtype in go is to make a separate package with an opaque type and use interfaces for indirection, which is costly and awkward.<p>It&#x27;s very unclear what this is supposed to mean. &#x27;type Foo int&#x27; in Go creates a new &#x27;Foo&#x27; type that can&#x27;t be used as an int without casting (a̶l̶t̶h̶o̶u̶g̶h̶ ̶y̶o̶u̶ ̶c̶a̶n̶ ̶a̶s̶s̶i̶g̶n̶ ̶a̶n̶ ̶i̶n̶t̶ ̶t̶o̶ ̶i̶t̶). If you don&#x27;t want to allow that, you can just wrap it in a single member struct.
评论 #31205532 未加载
评论 #31205748 未加载
评论 #31205671 未加载
prophesiabout 3 years ago
I use Go for simple CLI apps and it&#x27;s pretty dang good for that. They&#x27;re used by coworkers, contractors, and clients so the fact I can just send over an executable for any OS is really nice.<p>I wouldn&#x27;t use it for anything too complex, or requiring a GUI. Mainly because I&#x27;d be much better off using the languages in my day job that I&#x27;m more familiar with.
aw4yabout 3 years ago
how boring? Don&#x27;t wanna use Go? Use something else. What&#x27;s the point? Invest your time on questioning your knowledge and improving it instead of this.
评论 #31205626 未加载
pensatoioabout 3 years ago
I don&#x27;t understand all the attention these articles are getting. If you don&#x27;t like it, stop using it. Why are you going to so much effort to complain?<p>You can write bad code in any language. You can write difficult to read code in any language. Every language has pitfalls and downsides.<p>Personally, I work in golang full time, and I adore it. Development is painless, and our codebase feels very easy to read.
评论 #31294614 未加载
penlightmentabout 3 years ago
It&#x27;s the matter of one&#x27;s opinion, I personally love it. The design has +n years of experience behind it and stands on shoulder of some serious people (yea you already know who they are).<p>Every language has its own gotchas, and if you are not satisfied with it, coding some Java might help you gain a little perspective.
评论 #31225588 未加载
unethical_banabout 3 years ago
This post should not have been flagged, just because people don&#x27;t like hearing criticism of a language.
jonathanstrangeabout 3 years ago
Meh, this blog post is a rather subjective rant. I can offer the opposite opinion, although I&#x27;m not sure that&#x27;s helpful. The more I use Go, the more I like it. I&#x27;m very productive with it, similar to -- though not quite on a par yet -- the productivity I had when I was programming in REALBasic. Most of the benefits of Go result from the tooling and the availability of 3rd party, open source libraries with permissive licenses that are &quot;good enough&quot; for my purposes. I could probably also use Python instead and benefit from even more 3rd party support, but there would also be downsides to it. I appreciate Go&#x27;s compact executables and easy deployment.<p>Quite honestly, in what concerns choices of languages, my experience is that it&#x27;s not so much the language per se that counts, but rather the tooling, developer community, and the availability of 3rd-party libraries.
amznbyebyebyeabout 3 years ago
Why is this flagged? Come on
overlistedabout 3 years ago
Did someone take down his server because of this blogpost?
beltsazarabout 3 years ago
Does anyone know the guidelines of when to flag submissions?<p>For me, submissions that spread misinformation should be flagged. But just because you don&#x27;t agree or like the article, doesn&#x27;t mean that you should flag it. I guess this submission is flagged because some people don&#x27;t like it but HN doesn&#x27;t have downvote button, so they use the flag button as an alternative.
georgia_peachabout 3 years ago
I believe he wrote a binary diff&#x2F;patch system in it. If I had to do such a thing in Go, I would also hate Go.<p>He should just own up to trying to shove the square peg into the round hole and move on with his life, rather than blame the peg. There is no shame in it. At one point or another, we&#x27;ve all done it.
chimenabout 3 years ago
One quick question as a TLDR: did he write about Rust being better?
anacrolixabout 3 years ago
couldn&#x27;t agree more!
v4vvdqabout 3 years ago
Author should have used this article to propose Go 2.0 changes. For me, I read it like a rant.
fxtentacleabout 3 years ago
I guess this is mostly a Rust fanboy virtue signalling in their eternal war against Go and C. <i>sigh</i>
rob74about 3 years ago
Oh no, here we go again. So you don&#x27;t like Go (no idea what this &quot;golang&quot; thing is everybody keeps talking about)? That&#x27;s cool! You don&#x27;t have to write yet another blog post saying that you <i>really, really</i> don&#x27;t like it, with more strawman arguments and again quoting that quoted-to-death quote by Rob Pike about Go being designed for stupid developers, we got you the first time!
评论 #31205603 未加载
评论 #31205642 未加载
评论 #31205522 未加载
评论 #31205500 未加载
评论 #31205501 未加载
评论 #31205606 未加载
评论 #31206057 未加载
评论 #31205605 未加载
JamesMcMinnabout 3 years ago
This is an opportunity piece written for no reason other than to ride the wave from a recent re-post of a 2 year old blog article. It offers nothing over the original blog post and it&#x27;s difficult not to be cynical about the authors intent with this article.
评论 #31205873 未加载
Thaxllabout 3 years ago
I&#x27;m just wondering why the author keeps making those articles about strongly disliking Go, ok we get it your favorite language is Rust, you don&#x27;t like Go. Why does the author does not move on, exactly?<p>&quot;Fine. It may well be that Go is not adequate for production services unless your shop is literally made up of Go experts (Tailscale) or you have infinite money to spend on engineering costs (Google).&quot;<p>This is really wrong on so many level especially coming from someone that has shipped what exactly in production? What is the expertise of OP to tell people to not use a language that was proven to be very successful.
评论 #31206853 未加载
评论 #31207770 未加载
评论 #31206904 未加载
评论 #31206949 未加载
blubabout 3 years ago
The author doesn’t fundamentally misunderstand programming language design, but rather misunderstands programmers.<p>Most programmers don’t need someone to tell them which tools to use. Of those green enough to need it, they certainly shouldn’t look to the internet for advice and they absolutely shouldn’t look to HN or random blogs for advice. Instead they should find a local community which can offer them support when they stumble and point them to interesting job opportunities. Because those people are real and they can build relationships and connections which will be much more valuable than some measly programming language.<p>Many online authors - even if technically skilled - have quite an over-inflated sense of importance. What makes somebody think that their experience in domain X and country Y apply in any way shape or form to the hundreds and thousands of industries, countries and cultures all over the planet?