51 ms·
> Go strikes me as one of the most conservative programming languages available today. It’s small and simple, and every detail is carefully thought out. This a
by spion 8y ago
> Go strikes me as one of the most conservative programming languages available today. It’s small and simple, and every detail is carefully thought out.
This article is wrong in many ways, but I thought I'd point out this particular one. There are many really weird warts in Go, in fact its about average in "wartiness". Here is one example https://dave.cheney.net/2017/08/09/typed-nils-in-go-2 https://dave.cheney.net/2017/08/09/typed-nils-in-go-2
Go biggest advantage isn't the language, its the decent documentation and standard library design. The language is a bit mediocre. I wish the Go community accepted this and moved on - a mediocre language with good documentation and well done standard library is still an acceptable contender since so many other languages get those two wrong.
- throwaway415415 8y agoSucks for you, considered very good by plenty of other people who use it daily.
- rebeccaskinner 8y agoI use Go daily and I agree with the general sentiment that it's a janky language full of warts and could really benefit from features like generics.
- kasey_junk 8y agoSame
- throwaway415415 8y agoMaybe go back to java or c++? I'd rather have less people complain about a feature I don't want in the language.
- rebeccaskinner 8y agoI'd love to get away from Go again, but unfortunately it's the hot thing that people see on your resume and then they don't want to talk to you about anything else. I'm very concerned that in a few years it's going to be the terrible low-paying boring thing that people see on your resume and don't want to talk to you about anything else.
- throwaway415415 8y agoIts the hot thing for a reason. Adapt or be left out.
- rebeccaskinner 8y agoI've been using Go in production for 5 years now, I don't think there's a lot of adapting left to do. From the other side of a few years of experience I think I see the reality of the situation pretty clearly. Go isn't a good language by any means. It's the hot thing because it's a marginally less painful blub than python or java and cheap entry-level developers can be onboarded to it quickly and be left to churn out boring but largely unharmful code. On top of it's programming with mittens mentality it had the force multiplier effect of becoming the devops language dejure. I think the staying power of Go is largely dependent on whether or not the industry finds the current state of devops a local maxima that it sticks on for a while, or whether things push further into PaaS territory and the current devops tooling becomes irrelevant for everyone except the big cloud platform implementers.
- latronic_notron 8y agoJust curious: why don't you want generics in Go? The language already uses them for Arrays, Maps and Slices, plus a lot of code relies on runtime-typed ad-hoc generics with interface{}. It's not as if Go is a language without warts... there's a lot of ugly stuff, like Iota, Reflection, the error handling, interface{} itself. This is a legitimate question, btw. Legitimately looking for other points of view
- apta 8y agoKeep in mind that many golang programmers just parrot what the golang authors say, without fully understanding it or even realizing the golang authors are wrong (not saying that's the case in this specific instance). They hear the golang authors complain about Java, that it's the only way to do things, so they think that the only other solution is to go the extreme opposite way, not even looking at real modern languages (which golang isn't) like Kotlin or even C# for instance. It's very evident that the golang authors have no experience designing language, and didn't look in depth at what other languages did.
- throwaway415415 8y agoUnfortunately I am not parroting. If you are used to read code, and you read c++, you will see that templates are abused. No generics force devs to make their code clearer and thus more secure. It is evident that Go is a better language than most thanks to the creators having deep experience in that domain.
- latronic_notron 8y agoThey aren't abused in C#, Java, Haskell, OCaml and other languages. Honestly, picking C++ as an example of traditional generic usage is a bit disingenuous.
- spion 8y agoI would suggest a Go programmer give ReasonML an honest try (as an example language where "generics" are done right), but the getting started / documentation situation is still not at Golang level so thats a bit annoying. Maybe F# would be a better choice. .NET Core and its tooling are pretty well done. C# and NET Core would be another nice alternative.
- spion 8y agoThere are plenty of people who consider C++ good too and its used by people daily. Doesn't mean that Rust isn't a better language, even though there are less people that use it daily. I think we need to be real about what are the strengths and weaknesses of each platform instead of drinking the coolaid. Otherwise we don't learn anything and the bad parts are going to find their way in the next one.
- emersion 8y agoThere are some weird parts in the Go language, yes. But since it's so small, a lot fewer than other languages.
- apta 8y ago> Go biggest advantage isn't the language, its the decent documentation and standard library design Which, ironically, Java is just superior in every way when it comes to documentation of the standard library. Large open source Java projects are well designed and very well documented, unlike golang projects.
- spion 8y agoJava is not really superior in standard library design. There is too much architecture astronautics going on. Standard interfaces are too complicated. Nominal interfaces kinda suck. Java also lacks green threads. There is baggage in the design of many libraries related to previous lack of lambdas that is now annoying. The Go documentation as well as standard interfaces are tastefully and minimally done (for an imperative language): https://golang.org/doc/ https://golang.org/doc/ - e.g. https://golang.org/pkg/io/ https://golang.org/pkg/io/ ... To my knowledge there is no equivalent of this for Java that comes close. Compare https://golang.org/pkg/io/#Reader https://golang.org/pkg/io/#Reader to this mess https://docs.oracle.com/javase/7/docs/api/java/io/Reader.html https://docs.oracle.com/javase/7/docs/api/java/io/Reader.htm... Java has pretty nice generics. With Java 10 the language is now decent too.
- Gibbon1 8y agoI'm under the impression that Java implements generics via type erasure.
- spion 8y agoThats not an entirely bad way to do it.
- apta 8y ago> Java also lacks green threads Green threads are not the be-all-end-all solution for concurrency. They have their place, but so do event based async io. That being said, Java is getting green threads in the form of Fibers. > Compare https://golang.org/pkg/io/#Reader https://golang.org/pkg/io/#Reader to this mess https://docs.oracle.com/javase/7/docs/api/java/io/Reader.htm.. https://docs.oracle.com/javase/7/docs/api/java/io/Reader.htm.... Obviously Java's Reader interface does more work, and has a `close()` method, which golang lacks. Golang is forced to go with this way to write interfaces due to how they are implemented (sacrificing usability to get nominal typing, which is a very questionable design decision). Languages like Kotlin, Rust, Scala among others have superior solutions.