6 ms·
> As a simple language to wire pieces together, Golang is fine, but it really doesn't give you the tools (imo) to be productive for anything more complex than s
by why-el 9y ago
> As a simple language to wire pieces together, Golang is fine, but it really doesn't give you the tools (imo) to be productive for anything more complex than simple apps. It's a great alternative to JS (again imo), but not something I'd like to write.
How do you address its popularity in the field of cloud computing then (which I presume you would agree is pretty complex)? This was mentioned in ample detail by Rob in the article. Is Kubernetes not a "productive" system by your definition?
- Karrot_Kream 9y agoThe article is scant on details as to what exactly it was about Golang that propelled these companies to stardom, if it even did that at all. Do not mix causation with correlation, though this goes both ways and I maybe wrong in doubting Golang.
- rbehrends 9y ago> How do you address its popularity in the field of cloud computing then (which I presume you would agree is pretty complex)? Go was simply the first language to successfully target the niche of imperative, natively compiled, GCed languages. It wasn't the first language of this kind, but the first to have a reasonable amount of adoption/backing. Whatever other flaws it has or had were trumped by the lack of serious competition in this area.
- kminehart 9y agoI worry that a lot of developers who have been using languages like Java or C# see Go and immediately feel the need to point out that Go doesn't support language features that they've come to rely on, and so they see that as a weakness or a flaw. With Go, you're getting a lot of high-level language features like anonymous functions, while also gaining the control that you're not able to get in higher level languages like Python or Ruby or Java. I think this works out great for cloud computing, where performance is a major requirement, but the technology is expanding rapidly enough that a step up from C or C++ is very necessary. A lot of the complaints I hear are related to abstractions, too, and I understand those to an extent. I also think that if you're complaining about the lack of generics, maybe you're not thinking about interfaces correctly. A perfect example is the beautiful simplicity that is the [`io.Reader`](https://medium.com/@matryer/golang-advent-calendar-day-seventeen-io-reader-in-depth-6f744bb4320b https://medium.com/@matryer/golang-advent-calendar-day-seven...). So, whenever someone says something like the OP: > As a simple language to wire pieces together, Golang is fine, but it really doesn't give you the tools (imo) to be productive for anything more complex than simple apps. I take that as meaning, "I've never seriously used Go beyond writing a hello world app. It doesn't have the features I rely on to be productive, therefore I don't think it's a capable language for larger projects." I will say though, dependency management in Go is hell. I wish Go had something like Cargo.
- aphextron 9y ago>I will say though, dependency management in Go is hell. I wish Go had something like Cargo. This is the number one thing that has kept me from going full on Go. The killer feature of Node was NPM, not Javascript. Unless Golang comes up with something comparable it will forever remain niche.
- cloverich 9y ago(NOTE: I am not a gopher) I thought godep was that? It's marked as suitable for production now, and I think official as of their next release. https://github.com/golang/dep https://github.com/golang/dep
- kminehart 9y agoIt is certainly a fantastic solution, and I definitely appreciate the work that Sam Boyer and the `dep` contributors do. There's a lot of "gotya"s with using dep though. One that gets me a lot is the fact that I like to commit my vendor folder, just for faster CI. So if I committed my vendor folder with a copy of "k8s.io/client-go", and then in a different project I imported a package from my vendored project, it would never compile until I removed my local copy of that "vendor" folder, since it's looking for that specific dependency ("my-project/vendor/k8s.io/client-go"). Not sure if I explained that super well.
- infogulch 9y agoOk, but why would you do that? Either just vendor it in the new project (copy-paste a directory) or download it to your gopath and import that. The nice thing is that you don't have to change the import when you decide to vendor.
- KishanB 9y agoI personally like glide more than godep
- 9y ago
- kenhwang 9y agoThe language that appeals to the masses with low barrier to entry in a niche always wins the popularity contest in that domain. I attribute it to herd mentality; assuming skill has a standard distribution, the average developer herd gets a massive head start. You can see the idiot friendly language eclipse in popularity in other domains too even though "better" alternatives exist: - elegant general purpose: python over ruby - web: php over python/rails - SQL databases: MySQL over Postgres - NoSQL: MongoDB over CouchDB/Postgres Go's just the first mass appeal language in the concurrency performance domain and it just opened the door to a lot of developers who before wouldn't dare play in the space.
- makapuf 9y agoSome of the dumber but more popular solutions here are just older ones. And please refrain from starting unsubstantiated flamewars. What's next, editors: emacs over vi ? Colors: black over white ?
- Can_Not 9y agoPHP has some unique design considerations that make it better suited for web. PHP's main significant weaknesses for that domain would be the lack of a strong type system, lack of strong event based server ecosystem (what reactphp does, nodejs, golang, etc.), and it's slower than Java. It has multiple popular long supported rails alternatives. Python and Ruby have nothing over PHP for web development. PHP has the absolute best first class support for isolated http request handling, live updating only challenged by erlang, standard library designed entirely around webdev, great tooling for building c extensions, widespread cpanel hosting, and composer (pip is garbage compared to composer). So while you might like ruby/python because it's prettier or because PHP 4 was awful, the idea that one of them is a better web language is totally laughable. If you asked me to define a language better than PHP for web applications, I would have you a long list not even considering python and ruby.