

Replacing Ruby on Rails Part 2 – Amazing Tooling - zgryw
http://madebymany.com/blog/replacing-rails-part-2-amazing-tooling

======
jpgvm
I don't see how Go makes a good replacement for Rails.

It's insufficiently high-level IMO.

I would consider C# and it's ASP.NET a good replacement. Or Scala's Play, or
Java's Spring. But probably not anything implemented in Go.

There are good reasons for this. Go lacks generics and has to use reflection
as a crutch to match Rails for flexibility.

C# ASP.NET MVC on the other hand I think is probably the best match, in fact I
think it actually might be superior to Rails in many ways.

Namely, like Go it is statically typed. However unlike Go it has powerful
polymorphic capabilities in the form of interfaces and generics. Go can only
have generic data structures built into the language, they can not be built as
libraries. C# however has all of it's collections implemented as library code
(though they may be in the std lib like System.Collections).

One might argue Go has great concurrency support, however C# has just as good
concurrency support if not better. C# supports async/await, Task based
concurrency, native threads, various thread pool implementations etc. It's
primary web framework ASP.NET MVC is fully concurrency aware and uses a M:N
request to thread model making use of async IO.

The tooling is even better than Go, Visual Studio and Resharper might cost
money but they are worth what they cost. Gofmt is great, but VS/Resharper can
automatically format C# code. VS can also connect to running processes and
interactively debug them, even remotely. There are tools for decompiling and
working with the bytecode format (MSIL). There are great profilers and
monitoring systems that run on the runtime (AppDynamics is great).

Most of this is true of the Java runtime and Spring/Play also. I am just less
familiar with them.

The point is Go is not great for this in it's current form, there are better
alternatives.

