5 ms·
I've used Go for a few projects and I think that people who point out all of the things that Go doesn't have and Go doesn't support misunderstand the language.
by Kapura 11y ago
I've used Go for a few projects and I think that people who point out all of the things that Go doesn't have and Go doesn't support misunderstand the language.
The problem is that most big languages today are hammers, and they can are used to hit all sorts of nails to fasten all sorts of unholy planks together. Go is a screwdriver. Still good for construction, but you need to be using it in the correct way and you can't wail away at the problem the same way you're used to. Hammer people try to pound the screw in and get frustrated at the resistance they encounter. Perhaps they should instead ask themselves why the choices have been made, what possible benefits come from using a different tool. And you know what, maybe they just prefer hammers. Nothing wrong with that.
- danieldk 11y agoI've used Go for a few projects and I think that people who point out all of the things that Go doesn't have and Go doesn't support misunderstand the language. This is the standard Go defense. 'It's not Go, it's you.' I have written some larger projects in Go, and I am in full agreement with the article - Go is a relatively weak and repetitive language, similar to pre-generics Java. So, why does Go gain so much traction? While it may be a weak programming language, this is often compensated by excellent tooling and easy deployability. Plus dyed-in-the-wool Unix users (me inclusive) never liked the JVM baggage that comes with JVM languages.
- Kapura 11y agoCertainly Go lacks some features (generics) which are more-or-less standard in other large languages, but I think that's a sacrifice to the code quality gods (not that you can't write shit code in Go). To use another metaphor: if C++ and Java are motorcycles, Go is more like a bicycle. Smaller, easier to maintain, and more portable, but there are times when you might really wish you had a motor.
- trimbo 11y ago> easier to maintain How do we know this? Has anyone written enough Go in an environment with a lot of engineers to make that determination?
- 15155 11y agoI think a common sense standpoint would actually prove the opposite for some facts of Go: tons of unnecessary duplication due to a lack of generics is bound to lead to bugs, hard-to-maintain code due to sheer volume.
- AnimalMuppet 11y agoYes, I suspect that Google has, at a minimum. There may be others as well.
- fromMars 11y agoJava's verbosity makes me want to puke. Go wins over java on this point alone. I wish go had generics, but, overall, I enjoy writing Go, because I can do most of the things I did in java while feeling like I am writing python. I like other languages like Haskell (haven't looked at Rust), but I can't use it on the projects for a variety of reasons.
- mike_hearn 11y agoModern Java (e.g. 8+) would seem to be much less verbose than Go, as well as being more type safe, once you take the if (err != nil) boilerplate that seems to infest all Go code into account. If you didn't do any Java for 10 years then maybe Go looks good in comparison, but I don't see how with the modern stuff, especially when you compare IDEs, debuggers, profilers and other tools. But if you want something much more concise than Java, look at Kotlin or Scala.
- srameshc 11y agoI tried Scala and Akka. And then I found Go Concurrency. And then I decided to stick to Go. Scala and Java 8 are probably better, but the simplicity that Go brings in can not be compared to.
- sgt 11y agoAgreed. "fromMars" should really take a look at Java 8 which is a lot more pragmatic and powerful than the Java of the past.
- odonnellryan 11y agoIt's still a very young language. It is good for a lot of stuff: I've written quite a few daemons in Go that perform really simple tasks very quickly (think: get an HTTP request, do something small, forward it). I've also worked on Docker, which while the design patterns are interesting, is a larger project that works very well with Go!
- srameshc 11y agoThat you have a strong background to understand the short comings, what are your recommended alternatives to Go in the order of your preference ? And where would you think Go fits in well as of now.
- spyspy 11y ago> I think that people who point out all of the things that Go doesn't have and Go doesn't support misunderstand the language This is the argument that's always thrown out. The OP obviously understands the language very well. Saying someone just "doesn't understand" belittles those that are voicing genuine criticisms. A language shouldn't be based solely around ideology.
- Kapura 11y ago> A language shouldn't be based solely around ideology. I don't want to get too philosophical, but aren't all languages ideological to some degree? Certainly somebody who always chooses to write Clojure over Java has some strong beliefs about how code should be structured and behave. Go's is just another philosophy borne out of frustrations with "features" of other langs.