7 ms·
The Golang fanboyism is getting out of hand. Rust may not be the flawless language zealots tend to believe but at least it has something new to offer that was m
by laerus 5y ago
The Golang fanboyism is getting out of hand. Rust may not be the flawless language zealots tend to believe but at least it has something new to offer that was missing from the PL ecosystem and many other features that the industry didn't take seriously till lately cause they were "only for research languages".
I don't even get why Golang is considered a good language. The new goto primitive for concurrency, the half baked error handling, the fact that it's designers think that programmers are not smart enough and made a language that looks like Java and feels like Python (but hey, no class inheritance and the compile times are faaast) are just a few of the examples that don't make it good enough for me. I wonder how popular Golang would have been if it wasn't backed up by it's company.
What is this tendency for the software industry to try and make everything "easy"? Trying to oversimplify something that is inherently complex only adds accidental complexity.
- SkyMarshal 5y agoI agree, though will point out that one other factor in go’s favor besides fast compiles is relatively easy cross-compiling to other architectures. At least back when it came out, that was a noticeable feature to folks evaluating it. But yeah it seems to be more of a competitor vs Python and Ruby than vs Rust.
- zozbot234 5y agoTo be fair, the combination of cargo and llvm makes cross-compiling just as easy in Rust. But yes it's a great improvement over clunky old C/C++ toolchains. Go is not a bad language after all, in fact it has plenty of things going for it.
- thinkharderdev 5y agoI think a big factor in Go adoption was exactly this. If you wanted a language that could be used for system-y programming (i.e. something that AOT compiles to a native binary) then Go was the only game in town (before Rust came onto the scene) aside from C/C++. And the tooling for C/C++ development is pretty atrocious. I hadn't done any C++ dev in a long time until relatively recently and was pretty shocked to see how bad it was. It's amazing that there is still no reliable way to manage dependencies and the various C++ package managers out there (vcpkg, conan, etc) are still extremely finicky.
- mfer 5y agoThe people who created Go had vast amounts of experience in creating new useful things. It's not their first system or language. For example, they created unix and utf8. Please give them a little credit for their experience and time trying to build things. Programming languages are there to make programmers productive. Otherwise we would all work in something like assembly (I've done that but try to stay away from it now). Go attempts to do this by hiding the complexity. When people have to spend time dealing with language (or platform) complexity they have less time to spend on their business logic or the core thing they are trying to do. By making the complex simple for the majority of cases they enable people to be more productive in solving their specific issues. I say all of this as someone who likes and has issues with both Go and Rust. And, every language I've ever used.
- kitd 5y agoProgramming languages are there to make programmers productive 100% agree and I find I can produce more software value [1] per unit time/effort in Golang than anything else. Is it the perfect language? No, there are certainly some warts, but no show-stoppers, and no more than other languages. [1] "software value" being defined as software that meets its requirements, is easy to write and build initially, easy to maintain by others, and performant enough not to need extra-ordinary hardware.
- azth 5y agoJust because they created an OS and a character encoding does not mean that they are automatically good at creating programming languages.
- philosopher1234 5y agonor did he say it did. the point of listing their credentials was to request a more sympathetic ear. if you're intent on seeing only the bad side of go, then no one will be able to convince you. taking a sympathetic perspective is required to truly understand the language and its utility.
- 5y ago
- parhamn 5y agoI'm really curious: the article cited at the end of the post [1] lists major projects that use each respective language. For golang it lists: Kubernetes, Docker, Github CLI, Hugo, Caddy, Drone, Ethereum, Syncthing, Terraform For Rust it lists: Firefox, ripgrep, alacritty, deno, Habitat While both lists are a bit cherry-picked and some not really true, it is certainly true that there are significant more (I'd guess 1 or 2 orders of magnitude) large projects using Golang. What do you make of the fact? Certainly it's not programmers that want to be treated like they're not smart. Nor can you assume all the different team's engineering leaders made foolish decisions. [1] https://thenewstack.io/rust-vs-go-why-theyre-better-together/ https://thenewstack.io/rust-vs-go-why-theyre-better-together...
- azth 5y agoSimple: hype. I've seen it at an employer who heavily uses golang. Even a very high up key person in the org was not able to properly defend why the company was using it. It has its use cases, it's basically a faster python, and it's good for writing command line apps since it compiles to native code. Other than that, it has nothing going for it especially compared to proper mature server side languages like Java and C#. Even its compile times are not that impressive when programs get large, which is quite ironic.
- zozbot234 5y agoRust is a lot newer, for one thing. It was arguably not even generally usable prior to the 2018 edition (which added 'non-lexical' lifetimes). Go has had practically no major changes since its 1.0 release in 2012 or so. Yes, it has generics now but these are very new still.
- scottlamb 5y ago> While both lists are a bit cherry-picked and some not really true, it is certainly true that there are significant more (I'd guess 1 or 2 orders of magnitude) large projects using Golang. I think Go's been a mature base for those kinds of projects long enough for them to have been written. Rust not only is newer but arguably is still pretty immature for network programming. For sync code, the library base isn't there and probably never will be (because most of the libraries are being written for tokio instead). For async code, there are still a bunch of well-known difficulties. [1] This is my biggest complaint about Rust. People are aware of it and working to improve it, so I hope to see a change over the next several years. It will never be as simple as Go, though. Go's green threads model has downsides but it is really pleasant and simple to program in. [1] e.g. see https://carllerche.com/2021/06/17/six-ways-to-make-async-rust-easier/ https://carllerche.com/2021/06/17/six-ways-to-make-async-rus...
- ithrow 5y agoI don't even get why Golang is considered a good language. Because it's a more 'get shit done' language (with a fast solid runtime, good stdlib and and fast compiles), it's not concerned with giving its users the means and ergonomics to produce the most beautiful programs, instead, a language for the majority of backend developers.
- zozbot234 5y agoThe 'get shit done' feel of Go and the like is quite illusory, because you're left with a mountain of bugs and general technical debt to be addressed. Rust is designed to 'get sh!t right', where once it's "done" there's at least a fighting chance that it's really done and can actually be delivered in production.
- vlunkr 5y ago> you're left with a mountain of bugs and general technical debt to be addressed Unless you can elaborate more, this is pretty meaningless. I could make the same statement about Rust or literally any language and it would be just as substantial.
- Yoric 5y agoI haven't done any serious go, so I cannot debate this in depth. However, seen from a distance, it feels like: - people who code in Rust and hate it do so because they keep fighting the borrow checker; - people who code in go and hate it do so because their code is buggy. Now I code regularly in Rust, I enjoy it very much and I very much understand why some people dislike the borrow checker. I prefer Rust but I very much understand why some of these developers may prefer go (or Python, or TypeScript, etc.). On the other hand, I don't code in go (sufficiently) to know whether go is as full of gotchas as developers who hate go make it look.
- lanstin 5y agoGiven that the data seem to suggest more code is written in Go, perhaps it's just that code is in general buggy and that is a hateful thing, but it means the language isn't getting in the way also.
- azth 5y agoI firmly believe that the only reason golang gained traction and got to the point where it is today is that it had the Google branding behind it. As you point out, its design philosophy is overly simplistic to the point of being almost naive. Complexity exists in the real world, there's no getting away from it, and if you keep your language deliberately "simple", you are pushing complexity to the user. I wouldn't even say golang looks like Java. Java has evolved quite significantly in the past few years, adding many useful features that further aid in program modeling ability and expressiveness, like records and pattern matching. Not to mention it getting green threads that are going to be better implemented than golang's "goroutines" by virtue of having structured concurrency built in from the start.
- philosopher1234 5y agoHow is the design too simple? Why is complexity better?
- azth 5y agoGolang is anemic when it comes to modeling ability and expressiveness. I have come across so many code sections where having something like sealed classes and pattern matching or switch expressions would have made code so much readable and safer. The world is complex, it's just reality. The question becomes where do you want to push that complexity, on the user or on the language? golang decides the former, which is why you end up with messes like the kubernetes code base.
- philosopher1234 5y ago>Golang is anemic when it comes to modeling ability and expressiveness. I have come across so many code sections where having something like sealed classes and pattern matching or switch expressions would have made code so much readable and safer. But there is a tradeoff. Every complex feature you add has a continuous cost applied to every reader, in that they have to become expert with the new feature. C++ is a great example of the failure mode here, and even Java has too many features such that using many of them will confuse most of my coworkers. Having few features means that the code is more accessible, and you can spend your cognitive load on the genuine complexity of your problem rather than fiddling with language knobs.
- Thaxll 5y agoWhat's your definition of a good language? As for Golang fanboyism which contrary to Rust is almost none existent, I mean on every HN / Reddit post you're going to get someone that will tell you about Rust, why would you use a language with GC, error handling, no sum types etc ... hinting that it's the best language, something that you never see with Go users.
- int_19h 5y agoGo users also make similar claims, it's just that their definition of "best" is different (e.g. valuing simplicity over generality or correctness).
- deleted 5y ago[deleted]
- kitd 5y agoI think classifying the post as "fanboyism" is a bit harsh. The blog presented figures in a misleading way. Seems fair that he should be allowed to respond and correct.