6 ms·
Off all the top performers, Go seems to be the only sane choice to write a web app. Moreover it is at the sweet spot; expressive, flexible, simple, super perfor
by reactor 13y ago
Off all the top performers, Go seems to be the only sane choice to write a web app. Moreover it is at the sweet spot; expressive, flexible, simple, super performant, good community etc. I think it is convincing enough for me to give Go a serious look for our new app.
- gtaylor 13y agoAs someone who is also really enjoying Go, I think you need to add a huge, gigantic disclaimer before making a statement like this: Go's ecosystem of web development packages is in its infancy. You're not going to find any super-well-documented, super mature/stable web frameworks (thought a few are showing great promise). and some of the individual components (for example, Gorilla) are looking very good, but still have some more cooking to do. I love the language, but let's not get too carried away until the ecosystem grows. The reality is, if you're going to use Go for web dev, you're going to need to be prepared to do a whole lot of things on your own.
- reactor 13y agoI've read about the limitation of Go in terms of third party libs, but I believe it is only temporary. I had a glance at the std libs, looks really good for a new language. Our new app doesn't require all the bells and whistles of a full fledged framework.
- voidlogic 13y ago>>I've read about the limitation of Go in terms of third party libs Must not be looking on github... Yes its new, but in a majority of cases I have not had any trouble finding third party libraries and the std ones are wide and excellent.
- mrtksn 13y agohow easy is to use GO with other frameworks, let's say PHP? Would it be possible to write an application that uses PHP for some tasks, so you can benefit from the speed of GO and the the maturity of PHP?
- camus 13y agoYou'll be better off writing raw PHP without classes than using Go. Go performances are raw Go. As soon as you add any framework to the party , the perfs are falling. see the gorilla test which is a Go framework.
- nickpresta 13y agoWhere are the Gorilla benchmarks? I only see raw Go for all 4 benchmarks.
- carbocation 13y agoGorilla is a toolkit, not a framework. It's nice, but it doesn't do all that much beyond the standard library. To me, Go+Gorilla vs raw Go is not similar to, say, a PHP framework vs raw PHP.
- nickpresta 13y ago(I know what Gorilla is, I've contributed to it :D) The OP, to which I was replying, said: "see the gorilla test which is a Go framework." I asked about the Gorilla benchmark itself, since OP seemed to say that adding something like Gorilla would slow down the Go benchmarks, which I don't agree with.
- carbocation 13y agoI accidentally replied to the wrong comment; this was intended to be a reply to the parent of your post. But I also didn't realize that that person was saying that there was a gorilla test, so now I'm mostly confused.
- landr0id 13y agoWhile we're on the subject... Has anyone tried out Revel[.]? If so, what are your thoughts on it? [.] https://github.com/robfig/revel https://github.com/robfig/revel
- zenlikethat 13y ago(Disclaimer: I'm pretty new to Go). I tried Revel out a little while ago, and found it awesome at first. It felt like it could have the potential to dramatically speed up the development of Go web apps. I like the server and hotswapping features a lot, for instance. But at the moment unfortunately I don't think it's very mature. Support for interacting with the DB, arguably the most important part of a web application, is pretty lacking IMO for something that otherwise wants to be an end-to-end solution. In one of the examples I noticed that all kinds of interaction with the DB was being done in the Controller, not the Model. Which just seems wrong to me (at first I thought it was a "Play" framework thing, since Revel is modeled on that, but Play uses Hibernate for an ORM in its models). Also, you'll have to roll your own support for interacting with the DB using, say, gorp: https://github.com/coopernurse/gorp https://github.com/coopernurse/gorp That being said, robfig seems like a really cool dude, and he was responsive on github when I needed some help. The documentation is pretty great too.
- landr0id 13y agoI've been meaning to get one of the examples setup and just play around with it. To be perfectly honest I'm relatively new to the world of databases and such (I've been using RoR for some projects if that explains why), so tackling that gorp will be another awesome learning experience. Thanks!
- egeozcan 13y agoif nobody gets carried away, how will the ecosystem grow? =) also, could you please link to those few promising go frameworks?
- papsosouid 13y agoHow is go a sane choice and scala isn't?
- trailfox 13y agoAssumptions and personal bias/preference it seems...
- reactor 13y agoTo be honest, I kinda don't like Scala, its too much to grok. I always believe language is something not worth fighting for, but solutions are. (I'm aware, it's just about me, YMMV).
- papsosouid 13y agoWhen you make a statement like "the only sane choice", people tend to expect actual reasoning behind it. Your post would have been more accurate as just "I like go".
- thrownaway2424 13y agoI take it you didn't switch the graphs to the latency view.
- DennisP 13y agoBecause of your comment I checked the latency view and found Go doing quite well, sometimes in the second or third spot. Perhaps I'm missing your point?
- thrownaway2424 13y agoWell, in the database access test with multiple queries, Go has an outrageous max latency of 19 seconds, and a stddev of 3x the mean, which is terrible.
- JulienSchmidt 13y agoThis is probably caused by running all the queries in their own goroutine (if you don't know what this is just think of it as a thread - but much cheaper). This causes the queries to be handled in more or less random order. We'll fix this for Round 5 ;-)
- thrownaway2424 13y agoYou think so? I think it is probably cases by Go's single threaded stop the world garbage collector.
- DennisP 13y agoGuess we'll find out in Round 5!
- IanChiles 13y agoAfter seeing this, and having been a long time Sinatra devotee (I thought Sinatra was pretty fast until I saw these benchmarks), I'm considering picking up Go or Lua (OpenResty) at some point in the future. I'm blown away by the speed differences.
- trailfox 13y agoYou'd probably be better of with Scalatra then...
- IanChiles 13y agoScalatra looks pretty neat as well - might need to give it a try as well.
- njharman 13y agoHave you ever deployed a Sinatra (or any) project that failed cause it was too slow / could not scale? Avoiding preoptimization applies just as much to frameworks.
- IanChiles 13y agoNot at all. It's just that if there's a faster way to do it, I might as well pick it up for future projects.
- trailfox 13y ago>Off all the top performers, Go seems to be the only sane choice to write a web app How so? There's Clojure, Scala and others perfectly good choices on the list. The max latency for Go is also very high compared to most others.
- reactor 13y agoWhen you have a choice of Simple vs Complex (not complicate), Native vs Virtual but comparable in terms of maturity and expressiveness, which one you pick, honestly?
- trailfox 13y agoHonestly, Scala is far more expressive than Go and much more mature. Scala is more complex, but it's never really been an issue for me or my fellow devs. I'm not sure that "Native" vs "virtual" is a valid point of comparison. Scala uses the JVM which has a highly advanced JIT compiler.
- ricardobeat 13y agoCheck this out: http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=go&data=u32 http://benchmarksgame.alioth.debian.org/u32/benchmark.php?te... Javascript is also expressive, flexible, super performant and has the best and fastest-growing community around.
- cmircea 13y agoI'm very curious how C# would compare on the .NET and Mono stacks.