7 ms·
Go at Google [video]
- hugopeixoto 14y agoYou can just check the slides here: http://talks.golang.org/2012/splash.slide http://talks.golang.org/2012/splash.slide I read them a couple of weeks ago when I decided to take a look at Go, and they were really helpful and eye opening to the problems it is trying to solve.
- mseepgood 14y agoOr the article: http://talks.golang.org/2012/splash.article http://talks.golang.org/2012/splash.article
- coldtea 14y ago>Rob Pike explains how Google designed Go to address major development issues they encounter while using other languages: long build times, poor dependency management, lack of robustness, etc. So not exactly "Go at Google" (which is meant to give the impression this is all about how Google uses Go), but more like "How Go was initially thought out and built by a team at Google as a side project" or "How the team that built Go hopes to 'sell it' to Google".
- DanielRibeiro 14y agoAbout 30 mins into the presentation, Rob Pike does give a few examples of real Go usage inside Google. In the end he even mentions a few products that use it, like Youtube and dl.google.com
- Maxious 14y agoNot to mention Google Public DNS http://wilmer.gaa.st/blog/archives/58-Google-Public-DNS.html#c165 http://wilmer.gaa.st/blog/archives/58-Google-Public-DNS.html...
- rossj 14y ago"While BIND (written in C) can only serve 1000 queries per second on an old 486, the Go rewrite can serve all DNS queries in the world" Maybe I mis-read it, but that comment comes across as a little sarcastic. Hope I'm wrong.
- Evbn 14y agoIf I were charitable, I would say that the Go version supports horozontal scaling and external caching and queue buffers in a way that the BIND does not.
- coldtea 14y agoThose have been the 2 major products that use it for like 2 years. One is a database load balancer (in YT), not the most essential or irreplaceable piece of infrastructure (ie. they can write it in another language whenever they want if the need arises without messing other stuff) and the other is a services that was not updated anymore, and was left to die, before someone from the Go team asked and re-wrote it in Go. It's not even the full download service, just a part of it IIRC.
- Evbn 14y agoTo be clear: a broken product that was actively annoying users and that no one knew how or had energy to fix, got fixed by a Go dev, and you are saying that is NOT a point in Go's favor? Maybe if Reader were written in Go, it wouldn't have been killed.
- coldtea 14y ago>To be clear: a broken product that was actively annoying users and that no one knew how or had energy to fix, got fixed by a Go dev, and you are saying that is NOT a point in Go's favor? Sure is a point in Go's favor. It means it can be used to solve an actual problem in a large company. But what I'm saying is it's not that big of a deal as it may seem to some: it's not like they used Go in some highly critical for them infrastructure or important new project. On the contrary: they used it at so low a priority project, that it was abandoned and left to rot before somebody volunteered (was not even asked!) to do the rewrite. (And, no, it was not abandoned because it's C++ codebase meant it could not be fixed -- after all it could be redone from scratch in C++ or Java, as it was redone from scratch in Go. It was merely due to neglect). So, my point it, this story is not a "investing internally in the language big time" thing, but rather baby steps.
- Evbn 14y agoYou say the big company is not investing in a big way, I see a small team of revolutionaries rescuing a behemoth from crushing itself under its own weight. :-)
- oinksoft 14y agoThis is the summary at the top of the page: Rob Pike explains how Google designed Go to address major development issues they encounter while using other languages: long build times, poor dependency management, lack of robustness, etc. In any case, Google is heavily invested in Go. There's no need to "sell it."
- deleted 14y ago[deleted]
- deleted 14y ago[deleted]
- laureny 14y ago> In any case, Google is heavily invested in Go. There is very little evidence of that. The language is a few years old now and the only presentations are coming not even from random Google employees but exclusively Go team members. If Rob Pike wasn't involved in this language, it would be completely invisible. So, there's not a lot of concrete evidence that Go has made any inroads inside Google against Java and C++ and from what I can see, the language is hardly every used outside Google as well.
- voidlogic 14y agoI would like to see more internal Google stats as well but- "and from what I can see, the language is hardly every used outside Google as well." 3 Months ago Go was more popular on github by number of unique committers than Lua, Clojure, Haskell, Erlang, D, OCaml, Lisp/Scheme, Rust, Delphi, Prolog, F#, Ada etc [1]. Surely you consider some of those languages as being relevant? That is not a perfect metric, but those stats don't fit your narrative of Go being unused very well. 1: https://gist.github.com/igrigorik/4440674 https://gist.github.com/igrigorik/4440674
- pjmlp 14y agoI doubt GitHub reaches at all 1% of the code developed in all companies in the world.
- shurcooL 14y agoGoing through this, I now realize one of the significant reasons I took such a big liking to Go. They realize [1] how important it is to make it easy not just for a programmer to work with the language, but also for writing tools that work with the language. And this happens to be very important for what I do. [2] [1] http://talks.golang.org/2012/splash.slide#34 http://talks.golang.org/2012/splash.slide#34 [2] https://github.com/shurcooL/Conception#conception https://github.com/shurcooL/Conception#conception
- laureny 14y ago> but also for writing tools that work with the language. What I've seen from go's tooling today: a very crude debugger and zero IDE support. The bar for "good tooling" in 2013 is quite a bit higher than it was in 1999.
- coolsunglasses 14y agoIDE support comes in the form of the gocode daemon. Works fine with Emacs, Vim, Eclipse, etc. There's a Golang-specific IDE but it isn't very fancy. Most people just use the Gocode daemon with their editor of choice.
- brianpgordon 14y ago> The dependencies have to be a true tree. Surely he means DAG?
- drzommer 14y agoDaily post on go. Go and its advertisement campaign have something in common: lack of subtlety. I will eat my hat if tomorrow I don't see another go post.
- waterlesscloud 14y agoWeird isn't it? Posts on a new-ish, interesting programming language on a site frequented by a large number of programmers with a penchant for new, interesting languages.
- cgcardona 14y agoThe most suprising part to me is that it doesn't support inheritance. I'm currently reading 'Object Oriented Design with Applications' by Grady Booch [1] and I noticed the following in the section 'Object Oriented Programming' > …object-oriented programming (1) uses objects, not algorithms, as its fundamental logical building blocks; (2) each object is an instance of some class; and (3) classes are related to one another via inheritance relationships. > …By this definition, some languages are object-oriented, and some are not. Stroustrup suggests that "if the term 'object-oriented language' means anything, it must mean a language that has mechanisms that support the object-oriented style of programming well. A language supports a programming style well if it provides facilities that make it convenient to use that style. A language does not support a technique if it takes exceptional effort or skill to write such programs; in that case, the language merely enables programmers to use the techniques" >…if a language does not provide direct support for inheritance, then it is not object-oriented. Cardelli and Wegner distinguish such languages by calling them object-based rather than object-oriented. Per this definition I wonder if Go might not be better labeled 'object-based.' [1] http://www.amazon.com/gp/search?index=books&linkCode=qs&keywords=0805300910 http://www.amazon.com/gp/search?index=books&linkCode=qs&...
- codygman 14y agoDefine "direct support" for inheritance. IMO, a symbol named inherit doesn't have to exist for there to be inheritance. Here is a blog post answering your exact questions: http://areyoufuckingcoding.me/2012/07/25/object-desoriented-language/ http://areyoufuckingcoding.me/2012/07/25/object-desoriented-... Here are examples of inheritance in Go: http://golangtutorials.blogspot.com/2011/06/inheritance-and-subclassing-in-go-or.html http://golangtutorials.blogspot.com/2011/06/inheritance-and-... http://diveintogo.blogspot.com/2010/03/classic-inheritance-in-go-lang.html http://diveintogo.blogspot.com/2010/03/classic-inheritance-i...
- shared4you 14y agoI come from C++ background, so by "direct support", I think he means a language construct that clearly shows the inheritance relationship, as in Java: public class MountainBike extends Bicycle or C++: class MountainBike: public Bicycle From those links, it looks like in Go, you use an anonymous struct inside a normal class. I would call it "aggregation" or "containment" (or implicit delegation), not inheritance. It suggests "has-a" relationship rather than an "is-a" relationship. The Go's "syntax" for inheritance (if you can call that) is ambiguous, unlike C++ or Java.