

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

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&#x27;m curious as to whether things will be different with Go.
======
staunch
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/](http://robfig.github.io/revel/)

2\. [https://github.com/coopernurse/gorp](https://github.com/coopernurse/gorp)

------
wmf
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.

~~~
workhere-io
When you say app logic written in JS, are you talking about the client-side
stuff like e.g. AngularJS?

~~~
sharmi
I believe he means server-side, like node.js

~~~
wmf
Both. These "sides" are being blurred. As advanced as Angular is, I see it as
an intermediate step towards Derby/Meteor.

------
jayflux
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.

~~~
coolsunglasses
You get the same performance out of writing your web services/apps in a higher
level language like Clojure anyway.

~~~
swah
For some reason many folks want distance from anything JVM related.

------
hkarthik
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.

~~~
crypto5
I think you can import libraries directly from github, google code, bitbucket,
launchpad. Does it cover your needs?

~~~
hkarthik
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.

------
jacobquick
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).

