Ask HN: Will Go become a popular web development language?

11 points by workhere-io ↗ HN
Go is fast, but also somewhat more low-level than e.g. Python and Ruby. Those of you who have tried out Revel, web.go, etc., do you think that Go has a big future in web development, or will it be a niche language? Go gets a lot of attention here on HN, but so do other languages that have never gained a large following in the web sphere (e.g. Erlang and Haskell), and I'm curious as to whether things will be different with Go.

14 comments

[ 3.9 ms ] story [ 37.2 ms ] thread
I agree that Go is lower level and most Web apps won't care about the extra performance it provides. I could imagine lower-level services (memcache, databases, MQs, etc.) being written in Go and app logic being written in JS.
When you say app logic written in JS, are you talking about the client-side stuff like e.g. AngularJS?
I believe he means server-side, like node.js
Both. These "sides" are being blurred. As advanced as Angular is, I see it as an intermediate step towards Derby/Meteor.
Go is still missing a key component needed to make it a real breakout language for web application backends: a central repository for open source libraries.

The mainstream web development languages like Python, Ruby, and Javascript have this via PyPi, Gems, and NPM respectively.

There are some efforts to make this happen like Go Nuts, but nothing with serious traction yet. I think it's just a matter of time though.

I think you can import libraries directly from github, google code, bitbucket, launchpad. Does it cover your needs?
I think part of the issue is the lack of a central directory for libraries, making casual discovery difficult.
It's difficult to discover libraries, and we need a good delivery system for linking shipped binaries from these sources.

The next step would be true dependency management to manage version dependencies between multiple libraries.

Right now with both of these missing from Go, it's effectively two steps behind the mainstream languages.

It's not unsurmountable for early adopters and alpha geeks, but to break out into the mainstream these things are needed.

I believe so. Revel[1] is a great example of what's possible with Go. It's got a ways to go, but it's already quite pleasurable to use and quite competitive with Django/Flask/Rails/Mojolicious, etc. The biggest weakness right now is the lack of a real ORM. Gorp[2] is a decent abstraction, but it's not nearly as nice as something like DBIx::Class or SQLAlchemy.

I find Go more pleasurable to program in than Python, but less pleasurable than Ruby or Perl. You're in a straitjacket, but it's a very simple and clean straitjacket. Python always feels like I'm giving up expressiveness in exchange for very little. Well written Perl or Ruby is just as readable to me, and much more pleasing to my brain.

The performance of Go web apps is rarely necessary, but it does open up possibilities for certain HTTP services that would otherwise not make sense, or would have to be done in a mess of non-blocking event-based callbacks.

It doesn't hurt that it's just plain fun to write really high performance programs in a language that isn't tedious.

1. http://robfig.github.io/revel/

2. https://github.com/coopernurse/gorp

Maybe, but I don't think that's what Rob Pike envisaged when designed Go. It looks to me like Go was aiming for low level use. It seems odd that we're trying to use it for web development, its like making web frameworks in C; possible sure but not the best/easiest tool for the job.

I'm not hating, I'm just pointing out the fact we should use the right tools rather than shoe horn something in that's new.

I think Rob Pike was trying to make a language to build web services. Pike, Griesemer and Thompson are all at Google, you know, where they're kind of nuts about the web. :)
You get the same performance out of writing your web services/apps in a higher level language like Clojure anyway.
For some reason many folks want distance from anything JVM related.
Go is going to become very popular for network services other than http. It is likely to be used by anyone who gets really sick of bind or postfix and decides to make their own network daemon. Additionally it will probably be used for high volume commercial network applications like mmo backend servers, because those devs are c++ guys and go will seem like a goddamned miracle to them.

It has some promise for the client end but the killer apps will probably come server-side, and full-service apache-style http has already been handled (and re-handled in tomcat and nginx).