8 ms·
I think this is an amazing milestone; I contributed to Go in the early phases and was very excited about the project. I even had Rob Pike OK some of my patches
by dvt 14y ago
I think this is an amazing milestone; I contributed to Go in the early phases and was very excited about the project. I even had Rob Pike OK some of my patches (which was a huge nerd ego boost, obviously).
However, the direction the language took ended up being quite predictable and somewhat of a bore. The problem with Go is that it doesn't seem to fit any particular niche. Some other design decisions were questionable (no exception handling, for one).
I kind of like Go, but I haven't used it for years. There's no real reason to NOT write something in C (or, rarely, C++) or Java, or if I need some serious scaling, Erlang (or just use either something like libevent for C or Kilim for Java).
Go is very D-like. D, like Go, can't really find its niche. If Go or D were more idiomatic, perhaps they would be adopted in early programming classes (high schools and colleges -- like Python, for example), but even though goroutines, channels, and fast compilation are interesting concepts, they aren't really enough to detract from writing in the many other languages that do just about the same thing (and are a lot more popular).
- deleted 14y ago[deleted]
- afhof 14y agoI suspect that the kind of scaling Go was intended for was programming scale. A lot of the design of the language seems specific for large scale projects (statically compiling everything, not having unused variables, explicitly naming all imports, fast compiler, test and benchmarking as builtins, code changing via go fix). These are problems I have seen with larger java projects with unused imports, unused variables, library dependencies, long compile times, etc. I think that Go's niche is for extremely large projects, but it remains to be seen if it will work.
- enneff 14y ago> I suspect that the kind of scaling Go was intended for was programming scale. Your suspicions are well-founded! http://talks.golang.org/2012/splash.article http://talks.golang.org/2012/splash.article
- taligent 14y agoIDEs have flagged and/or auto-corrected unused imports/variables for well over a decade now. And the issues with library dependencies/compile times generally only exist for large projects. And many frameworks e.g. Play don't have compile cycles. Personally I see Go being perfect for smaller web apps that would be super fast on an EC2 Micro. For the higher end apps the JVM is proven and far more flexible.
- enneff 14y agoHave you used it since 3 days after it was launched, more than three years ago? (That's when you contributed.) The language, libraries, and ecosystem are miles ahead of where they were back in 2009. Why not use C? Because C has no sensible packaging system, is unsafe, requires manual memory management, and offers a degree of control that is unnecessary for most tasks. Why not use Java? Because it is verbose and picky and basically forces you to use an IDE to get anything done, etc etc. If there were nothing wrong with these languages (they're the main ones we use at Google) we wouldn't have developed Go. Use Go more! You'll see why people love it, and why we created it.
- dvt 14y agoTo be fair, I haven't used it since 2011 and I'm sure a lot has changed. I've read plenty of valid criticisms however which (after having used it for several projects) deterred me from using it again. For a project a couple of years ago, I needed to use OpenCV and the Go bindings were quite immature. I just switched to C++ (for that project) and never really returned. But now that I think about it, whenever people that are interested in being introduced to coding (it happens a lot on campus) ask me "what language should I learn?" I've never answered Go. I'm not sure if most people would.
- NateDad 14y agoWhile I don't think it's really a harsh criticism to say that Go shouldn't be your first language... I'd be interested to know what you think a good first language would be. Certainly not C or C++, if you're discounting Go. I'd also discount Java and C#, since they're syntactically quite similar to Go. Certainly not erlang. So... python? ruby? While I like those languages, I feel that the lack of a compiler is a pretty big hindrance to new programmers. Statically typed languages can catch many errors that produce some truly strange error messages in dynamic languages.
- derefr 14y agoYou addressed two of those questions, but what I really, really want to know is the answer to the third one. Why not use Erlang? It seems like the kind of thing Google would like, and yet I'm not familiar with any Google projects done in it.
- obilgic 14y agoOf course it has it's niche. It is fun, organized and simple to write like ruby, but It is a statically typed, compiled language. There you go.
- vladev 14y agoHonestly, I mostly share(d) your opinion, but am starting to see Go in a different light. The problem is that the community pitches it against C/C++, where Go, with its GC, just doesn't fit well, and Java, whose runtime and libraries is still miles ahead (fast GC, for one). However, Go seems to be very good at what Python/Ruby/Node.js/Perl are good at. It provides a simple, clean language with more guarantees and better runtime (mainly the cheap goroutines). I see Go taking some of their role for web development, simple tools (Go programs produce a single binary - very easy to distribute).
- dvt 14y agoI think you may be right, and I completely understand the problematic benchmarks that always crop up. I don't pretend I'm smarter than the people at Google (because I'm not), but some questionable decisions were made (there's plenty of literature out there written by reputable people) -- and I think that's why Go hasn't seen more of the lime light. Apart from Google (who uses it for Youtube), Go hasn't really been used in large projects. Maybe 1.1 will change that. I might give it another shot, too!
- mseepgood 14y ago> Apart from Google (who uses it for Youtube), Go hasn't really been used in large projects. I don't know how large each of these projects is, but a growing number of companies are using it for serious projects: Iron.io: How We Went from 30 Servers to 2 with Go http://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2-go.html http://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2... Behind the Scenes: Big Data at Torbit http://torbit.com/blog/2013/02/19/big-data-at-torbit/ http://torbit.com/blog/2013/02/19/big-data-at-torbit/ pool.ntp.org DNS server in Go http://news.ntppool.org/2012/10/new-dns-server.html http://news.ntppool.org/2012/10/new-dns-server.html Juju at Canonical http://www.reddit.com/r/programming/comments/18atce/juju_canonical_109k_lines_of_go_code/ http://www.reddit.com/r/programming/comments/18atce/juju_can... Go at bitly http://word.bitly.com/post/29550171827/go-go-gadget http://word.bitly.com/post/29550171827/go-go-gadget CloudFlare blows hole in laws of Web physics with Go and Railgun http://arstechnica.com/information-technology/2013/02/cloudflare-blows-hole-in-laws-of-web-physics-with-go-and-railgun/ http://arstechnica.com/information-technology/2013/02/cloudf... dl.google.com now served by Go https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/BNUNbKSypE0 https://groups.google.com/forum/?fromgroups=#!topic/golang-n... Go At Conformal https://www.cyphertite.com/blog.php?/archives/7-Go-at-Conformal..html https://www.cyphertite.com/blog.php?/archives/7-Go-at-Confor... Go at Novartis https://plus.google.com/114945221884326152379/posts/d1SVaqkRyTL https://plus.google.com/114945221884326152379/posts/d1SVaqkR... Go at the BBC http://www.quora.com/Go-programming-language/Is-Google-Go-ready-for-production-use/answer/Kunal-Anand http://www.quora.com/Go-programming-language/Is-Google-Go-re... Go at SoundCloud http://backstage.soundcloud.com/2012/07/go-at-soundcloud/ http://backstage.soundcloud.com/2012/07/go-at-soundcloud/ Go at CloudFlare http://blog.cloudflare.com/go-at-cloudflare http://blog.cloudflare.com/go-at-cloudflare Go at Heroku http://blog.golang.org/2011/04/go-at-heroku.html http://blog.golang.org/2011/04/go-at-heroku.html Building StatHat with Go http://blog.golang.org/2011/12/building-stathat-with-go.html http://blog.golang.org/2011/12/building-stathat-with-go.html
- mseepgood 14y ago> Go is very D-like. I think it's very D-unlike. It's very small and simple.
- drivebyacct2 14y agoI can't really agree with a single word of this and I've been writing Go weekly for 8 months.
- VeejayRampay 14y agoHas a claim as coarse-grained as "There's no real reason to not write something in C" ever made any sense past the immediate attention-bait value? I mean, different languages have different use cases and you can't pretend to make a case for a language on your own perception of it, let's be serious a second.
- smegel 14y agoOf all the languages you compared to Go, only 1 has native green threads: erlang. So why didnt google just use erlang? Well Go solves lots of problems that erlang doesnt, and maybe they also didn't want an interpreted functional language with no variables.
- pkolaczk 14y agoI agree Go and D really can't find its niche. They both are very interesting languages, but is there any really impressive application where those languages would rock? Something that when asked for, the only obvious answer would be "use Go"? Being a better C or a better C++ is IMHO not enough. Want high performance and full control? Use C (or C++). Want your code to be easy to maintain by an average Joe? Use Java or C#. Want your code to be concise? Use Clojure. Want extreme typesafety? Use Haskell. Need to use both OOP and FP? Use Scala. What question to ask so the obvious answer would be "Use Go?"
- kyrias 14y ago"easy to maintain by an average Joe" and "Java" don't belong together
- coldtea 14y agoSeen any other language used and maintained by more average Joes? Because that's exactly one of the niches of Java -- enterprise programming by average Joes. It was even a stated design goal of the language back in the day.
- pjmlp 14y agoGo is C programming for the average Joe.
- polshaw 14y agoI kind of agree with you (being an 'average Joe'?), but surely Go offers some advantages over C even for a C programmer; faster to write and compile, more readable code, concurrency, memory safety.
- pjmlp 14y agoExcept those advantages were already possible back in 1978 with Modula-2, nothing new.
- trailfox 14y agoLack of exception handling is the biggest reason I haven't used Go for much. The other reasons are that it's just so plain/boring (yes, I know that's subjective), nothing about the syntax is interesting. Learning go is like eating cardboard. The other issues are that IDE support is very primitive and that Java and Scala are both faster and better supported in terms of tooling. Go seems rather nice, just very boring and not very compelling vs. many other tools.
- EdiX 14y ago> Lack of exception handling is the biggest reason I haven't used Go for much. Go does exception handling with panic, recover and its reflection syntax.
- trailfox 14y agoSo if I'm reading from a file I should use panic recover and not return code checking?? That's not what I've seen in the docs.
- jlgreco 14y agoYou seem to be missing the difference between "can you do it" and "should you do it". The reason that you should not is because doing so is not idiomatic Go. You are completely able to do so though.
- NateDad 14y agoUsing panic and recover is strongly discouraged, and in the rare cases where it makes the code significantly simpler, panics should never cross package boundaries (which is to say, you should never have a public API that can panic, unless you fully expect the panic to take down the process).
- EdiX 14y agoUsing panics for control flow or having panics cross library boundaries is strongly discouraged, otherwise they are fine. Go's own standard library uses them internally in several places. Even then discouraging panics is very different from not having them.