13 ms·
dl.google.com now served by Go
- haarts 14y agoI've been following Go rather closely lately and I noticed that these little announcements come regularly. This is clever marketing (mind share!) and one of the reasons why Go is going to win out over D et al. When was the last time you read something about D? (Perhaps I frequent the wrong watering holes.)
- EwanToo 14y agoIt certainly indicates that Go is the language you should probably be using on AppEngine, given that you pay for resource (CPU, memory, etc) usage, and Google themselves are optimising Go to minimise that same usage for their own systems.
- StavrosK 14y agoI tried that just today, but the most (only?) decent web framework for Go, Revel, doesn't work on GAE yet. Also, as I was looking, it became painfully obvious that I would be missing the entire Django ecosystem if I went with Go. I'll try again with something I don't intend to turn into a business. Writing various daemons, tools and helpers in Go has been great, though.
- jzelinskie 14y agoMaybe in some time more people who want a large web framework will be using Go, but right now the reason you don't see traction in that area is because there isn't a desire. I think if you squint your eyes while using the standard library's http templating and http libraries along with some popular libs like Gorilla's sessions and cookies, you'll swear you're using a framework. Of course, this isn't going to give you the same re-usability you get from a framework that's as compartmental as Django.
- StavrosK 14y agoThat's the impression I got from the IRC channel too. The equivalent of a microframework is definitely in the standard library, but big frameworks like Django just save you so much time...
- _ak 14y agoSo, what exactly is it that you're missing from net/http and Gorilla?
- grey-area 14y agoWhat's missing in Go/Gorilla for web dev? Well, it covers: Serving (great built-in server for net/http) Routing Sessions Context -- It's missing: Authorisation Authentication Parameter Validation/Checking Asset management Migrations Cleaner templating (I prefer mustache to the built-in go templates) HTML Helpers/View Helpers Form Helpers ORM or other persistence helpers (controversial I know) Possibly scaffolding would be nice too and a suggested project structure to encourage sharing -- So there are a few things which you'd generally expect in a web framework which aren't there yet. Of course some of the above list is subject to debate, some is available in revel, some it not everyone would agree is even necessary, but most other platforms in other languages have a bit more to help you, even if they are minimalist. Even just having an agreed-upon set of conventions and structure for web projects (a la rails), speeds up comprehension when looking at any large code-base. I'm quite confident Go will get there, and having tried it out am really impressed with the language and the culture, but it would be disingenuous to suggest it has everything you'd need to produce large web apps currently - at present you have to write your own code for quite a lot of the above.
- StavrosK 14y agoThe Django admin interface is indispensable, too. Plus, you have all the pluggable apps for everything you might need.
- grey-area 14y agoI do think this is both a strength and a weakness. Admin interfaces and plugins/apps are great to get you up and running fast (this is similar to the scaffolding point above), but they are also the part of any ecosystem which introduces subtle bugs and dependencies. By the time you get to crud admin and plugins, you're at the point where the benefits of the framework start to come with significant additional costs (in maintenance, flexibility, comprehension etc). A pre-built app or plugin gets you up and running quickly but when you start to modify it you really need to understand the entire app/plugin before you can do so efficiently. Often people feel this is as significant a roadblock as simply writing it from scratch in the first place. Any complex webapp is probably going to outgrow standard admin/scaffolding, and any complex usage is going to require modifications of things like plugins and gems, so while they're nice to have in an ecosystem I don't see them as essential. This is an area where django has more built-in that say rails though, and it'd be interesting to see a Golang framework trying to take the best ideas from all these other popular frameworks.
- mhd 14y agoI'd say we've got two different upgrade paths here. D is aimed squarely at the C++ crowd, so the biggest enemy it has right now is that C++11 is actually half-way decent. Go is a bit more difficult to pin down, demographic-wise, but I'd say it's a mix between C minimalists and Pythonistas and other scripters who want something faster but don't want to go with a JVM-language or go all the way down to bare metal. This target group as well as Google's pedigree is why you're reading a lot about it at web programmer's forums (like, well, this one), consisting mostly of people who wouldn't (and couldn't) touch C++ with a ten foot pole.
- cageface 14y agoMy interest in Go has a lot to do with static typing. Dynamic languages are great for brewing things up quickly but static typing is just far too useful for catching dumb bugs early and for enabling powerful tooling. Perhaps more sophisticated type systems like those found in Haskell are worth the extra effort but my money is on Go for its simplicity and pragmatism.
- sausagefeet 14y agoThis is why I use ocaml. The type system power to simplicity ratio beats out all other languages I've come across so far.
- agumonkey 14y agoFor what domain ? how is performance ? open question, I'd like to have data beside the languageshootout benchmark.
- sausagefeet 14y agoI do it mostly for networking programs using Jane st a sync. Raw performance is great, on the language shootout it is on par with Go and getting better. For me it has replaced almost every language I would use except for the situations I need C.
- 14y ago
- Jabbles 14y agoI haven't noticed these "little announcements" coming "regularly". Which have you noticed? Vitess, for YouTube, was announced on Feb 28th. I also disagree with the idea that this is "marketing". Google have made (and are continuing to make) Go as a replacement for the languages they currently use. They're scratching their own itch. Finally, I disagree that this is a major differentiator between Go and D. Neither of them push marketing, relying on the enthusiasm of their community to spread the language. They are completely different designs and have very different goals (as noted by others). I do not think that Go will win because of Google's ability to market it.
- mseepgood 14y ago> I also disagree with the idea that this is "marketing". Yes, it's more the opposite: they were constantly requested for proof of their dogfooding and they always replied that they can't due to "confidentiality reasons".
- Evbn 14y agoYeah, it is like Google has multiple personalities sometimes.
- haarts 14y agoI do believe marketing has something to do with it. I don't believe a random Google employee is allowed to disclose stuff about their infra permission is granted. This is not a bad thing mind you. Google is merely trying to win minds in the most friendly way possible. Neither did I said that this was a 'major' differentiator between Go and D. Just 'a' differentiator and not a major one at that. I have become slightly myopic with regard to the little announcements. I'm confusing it with announcements like Bitly's: http://word.bitly.com/post/29550171827/go-go-gadget http://word.bitly.com/post/29550171827/go-go-gadget or Cloudflare's: http://blog.cloudflare.com/cacheing-the-uncacheable-cloudflares-railgun-73454 http://blog.cloudflare.com/cacheing-the-uncacheable-cloudfla.... But the point still stands, I see more of these posts related to Go than posts related to D (or Clojure/Scala/Rust/...).
- 14y ago
- mseepgood 14y agoI personally prefer Go over D, because it seems that D has almost the same complexity as C++ (and I'm in the simplicity camp). It's not a coincidence, since C++ people like Alexandescu are on board of D and C people like Thompson and Pike on board of Go. It's a philosophical / world view thing.
- pjmlp 14y agoThis is why I moved from Go to D, as I am more the C++ type of developer. Still I wish all the best to Go team, as we really need to go away from VM languages and some day replace C and C++, be it in the form of Rust, D or Go.
- mercurial 14y agoI think it's more a question of Go fitting a need. It has a decent speed, not too much boilerplate, and built-in support for concurrency. Makes it a good fit for Python folks.
- sigzero 14y agoI don't think "D" ever hand the hype or mind share to become the next "big thing". Not by a long shot.
- dualogy 14y ago> This is clever marketing (mind share!) Or maybe gasp Go is just really good ;)
- dwwoelfel 14y agoWhen was the last time you read something about D? The creator just started a Kickstarter campaign for a D conference: http://www.kickstarter.com/projects/2083649206/the-d-programming-language-conference-2013-0 http://www.kickstarter.com/projects/2083649206/the-d-program... It's doing well.
- viscanti 14y agoI had a chance to hear one of the contributors to Golang give a talk about the state of the language at Google. It sounds like the team has actively shifted (for the time being) from developing the language to building things with the language. They want to get as much real-world experience as possible, to better direct the future of the language. Most of those projects are internal to Google and can't be disclosed, but the occasional project can. I don't see it as marketing, it's more of a natural byproduct of having the Go team building things with Go (right now) rather than building Go. It's an interesting strategy.
- sanatgersappa 14y agoAlways nice to see some real-world application of a promising technology.
- playingcolours 14y agoCan Go be a good language to implement NoSql database?
- jlouis 14y agoI would think so. It has many of the properties you would like in implementing a database system. First, the language is statically typed and executes surprisingly quickly. Second, it can handle high concurrency which is needed in a database since you will have many clients connection. Third, the libraries letting you interface with protobufs and HTTP provides two pretty simple ways to connect your Database interface to the rest of the world. The perhaps most glaring problem, compared to the world of Erlang where I come from, is the lack of built-in seamless distribution. Many NoSQL databases trades consistency for availability and more machines. You are on your own implementing this. Also, the lack of a ZooKeeper-like library may be something you will end up implementing. That, or perhaps the basis of the Dynamo paper.
- xal 14y agoZooKeeper in Go: https://github.com/ha/doozerd https://github.com/ha/doozerd
- azth 14y ago> I would think so. It has many of the properties you would like in implementing a database system. First, the language is statically typed and executes surprisingly quickly. Second, it can handle high concurrency which is needed in a database since you will have many clients connection. Third, the libraries letting you interface with protobufs and HTTP provides two pretty simple ways to connect your Database interface to the rest of the world. But that is not unique to Go, it may as well apply to Java, Scala, etc...
- robfig 14y agoLevelDB in Go: http://code.google.com/p/leveldb-go/ http://code.google.com/p/leveldb-go/ It provides in-memory and file-backed implementations.
- MatthewPhillips 14y ago> Why rewrite in Go? It all started back in April of this year, when I was running "apt-get update" at home and noticed that downloads from dl.google.com were stalling for no apparent reason. I asked about this on our internal Google+ and was put in touch with the right people. It turned out that the existing C++ dl.google.com service was no longer actively maintained (short of being kept alive) and that it relied on some assumptions about Google's internal architecture which were no longer true. This doesn't instill confidence in Go. That it is a success story with abandoned projects is not what we need to hear; we need to hear that Google+ runs on Go. Or at least something the size of Google Reader. When a startup is evaluating what language to build their stack on, dl.google.com is not what they're aiming for.
- dpcx 14y agoWhile true, the amount of traffic that dl.google.com handles is non-trivial. If Go can handle that, it can probably handle your startup.
- MatthewPhillips 14y agoApparently an unmaintained C++ app using deprecated libraries and making false assumptions about Google's internal architecture was able to handle it too, albeit with poor performance. So I disagree that this move says anything about Go's capabilities, positive or negative.
- Millennium 14y agoI'm inclined to agree that by itself, this doesn't say much about Go at all. That said, I'm not sure how much a non-open-source program can really do in terms of marketing Go or any other language. This isn't so much politics as logistics: you need to be able to see the difference in code to get a sense of the advantages or disadvantages of one language over another, and if the program isn't open-source you can't do that. The author can say it's "more readable" (and does, in fact), but that's not something that can be quantified, and so there's really nothing but one guy's opinion to go on.
- djhworld 14y agoCool. As a sidenote is there any way of viewing google group posts without logging into google? I'm at work at the moment and my google account keeps on getting logged out as cookies are deleted frequently.
- andyjohnson0 14y agoI can read posts without being logged into google. The settings for the group [1] indicate that its public, but only members can post. [1] https://groups.google.com/forum/?fromgroups=#!aboutgroup/golang-nuts https://groups.google.com/forum/?fromgroups=#!aboutgroup/gol...
- asdfaoeu 14y agoThis comes up every time someone links to Google. If you have any Google cookies it will make you log in. Open it up in an incognito window or something if you don't want to.
- signa11 14y ago<rant> this is weird, i had posted the same story approx 7 hours ago, which received 2 votes, now the same story, 5 hours later is on the front-page http://news.ycombinator.com/item?id=4700943 http://news.ycombinator.com/item?id=4700943
- 16s 14y agoLanguages such as Go would interest me more if they were not controlled by one company. I've had bad experiences with corporate languages in the past. This is one reason I'll stick with C++. It has an ISO standard and many different compilers from different companies. I feel more in control and less likely to be shafted by Google, Oracle, Microsoft or whoever owns the language de jour.
- dscrd 14y agoBy your argument, C++ is controlled by Bell Labs.
- icey 14y agoa) Go is open source b) Not sure why you've included Microsoft in your list. The C# specification has an ECMA and ISO standard.(ECMA-334 and ISO/IEC 23270:2006)
- 16s 14y agoJava is open source too and C# is not the only corporate language from MicroSoft.
- kinofcain 14y agoGo and the go std lib are licensed under a bsd license, which is a more liberal license than java and the jdk and would avoid things like the oracle lawsuit against android. So yes, just because it's open source doesn't mean much, but it's open source with a very liberal license, which does mean something.
- stephen 14y agoHuh; did the full switch over just happen? Out of the blue 1-2 days ago, a DTD hosted on dl.google.com (http://dl.google.com/gwt/DTD/xhtml.ent http://dl.google.com/gwt/DTD/xhtml.ent) started semi-randomly timing out and hanging Eclipse. (This was due to the Eclipse UI asking "Is this your XML file?" for every XML file in the project, for every plugin, and one of the plugins, IvyDE, ended up not having fetch-eternal-dtds turned off. What a silly default.)
- bradfitz 14y agoNo, it's been running for months.
- jff 14y ago"Uh oh, another story about success in Go, better post some FUD!" Nobody's yet come in to say how using Go on a 10-year-obsolete computer (32-bit PC) may have problems with garbage collection, pretty unusual for a Go post.
- knodi 14y agoI have been working with Go for about 6 months now and I'm in love with Go. I find it simple, easy and fun to write in.
- why-el 14y agoI dont know where you come from, language-wise, but do you think one can make a nice transition if they are used to Ruby and JS? I want to experiment building a simple web server and thought maybe I should use Go. Specifically, what was it that convinced you that Go is "fun to write in"? Thats mostly what I care about too.
- knodi 14y agoYes, I come from Ruby & JS world and before that I use to work with VB.net. I had not problems picking up Go. The hardest part of Go to understand was the implementation of interfaces. Best thing I like about Go is the error handling, its great for defensive programming (which help as I write a lot of service applications).
- grey-area 14y agoIf you're coming from Ruby, you'll feel right at home, perhaps less so if you're coming from JS. What I found surprising and fun about Go is just how similar it is to scripting languages in style, and how much baggage it drops from C (header files, explicit types, pointer arithmetic etc). The lack of header files, clear and simple syntax, minimal language core, and predictable standard library all combine to make it feel very like a compiled Ruby, though obviously there are differences. The main differences coming from a dynamic background are the type system, interfaces, imports and packages (no circular imports), and the lack of dynamic loading - everything is loaded at compile time. Interfaces feel a little like duck typing with checks on whether a type really does quack like a duck at compile time! If you mean writing a web app, it's not really as mature as other ecosystems in terms of support for this, but would be great for a smaller, minimal web-app, if you mean writing a web server from scratch, go is a great place to start, and even has a good example for you to look at in the built-in server: http://golang.org/src/pkg/net/http/server.go http://golang.org/src/pkg/net/http/server.go
- signa11 14y agoas another example of stuff in go, there is a window-manager called "wingo" that is still pretty alpha, but kinda-sorta-works https://github.com/BurntSushi/wingo https://github.com/BurntSushi/wingo
- burntsushi 14y ago> but kinda-sorta-works Hey man, I've been running it for at least week for day-to-day work and it hasn't crashed yet. :-) I'm quite pleased that most of the bugs reported so far are related to state transition bugs, which is the part of Wingo I'm least happy with. And this includes using completely untested libraries that implement the entire X client stack (from the wire to the screen) in pure Go. Which amounts to roughly 31,000 lines of code. N.B. I blame Go (mostly) for this state of affairs.