News for hackers. Stuff that matters.
Re:Go as an alternative to Node.js for Very Fast Servers by alec on Friday February 22, 2013 @01:03PM (#5265580)
What about Go makes it easy to manage and refactor large codebases? I don't do much Java, but whenever I've watched someone use Eclipse for refactoring, I question why I'm still using vim, because it is just magic and does everything for you.
Re:Go as an alternative to Node.js for Very Fast Servers by chimeracoder on Friday February 22, 2013 @01:17PM (#5265665)
I should probably write a blog post about this, because it's a combination of a number of things. Primarily, the compiler is incredibly strict and opinionated, so it's impossible to make certain small errors like assigning to lvalues that are never used, importing packages that are never used, etc.

Secondarily, gofmt makes code very standardized and easy to skim. It takes Python's 'only one (obvious) way to do it' one or two steps further, by forcing everyone to to write their code the same way. This makes refactoring a lot easier because you don't need to read as much code each time in order to understand what's going on (or at least, you can mentally parse it much faster).

Finally, the context-free grammar combined with a strong, static type system means that migrating code from an old (incompatible) version of Go to the most recent one can be done painlessly with the 'go fix' tool. This isn't your py2to3 tool - this accepts valid (old) Go code as input and reliably produces valid (up-to-date) Go code as the output.

That last bit isn't actually used in refactoring manually, but I make note of it because very few languages give you anything close to this level of reliability with code modification, which speaks volumes about the design of the language's grammar.

Re:Go as an alternative to Node.js for Very Fast Servers by crypto5 on Friday February 22, 2013 @03:07PM (#5266441)
But go ecosystem still doesn't have anything even close to refactoring abilities of Java/C# IDEs. Say, move Java class which is in use in 100s places from one package to another is just few mouse clicks in Eclipse and a lot of pain in case of Go.
Re:Go as an alternative to Node.js for Very Fast Servers by 4ad on Friday February 22, 2013 @03:21PM (#5266527)
Not really. Go comes with code rewriting tools, unsurprisingly since they were used to update the standard library and 3rd party code when the language changed before Go 1.

I don't want to use a language that doesn't come with a parser in the standard library anymore.

Re:Go as an alternative to Node.js for Very Fast Servers by crypto5 on Friday February 22, 2013 @03:27PM (#5266561)
So, is it possible to move/rename class/method/field smoothly using those tools? Extract code block to new method?
Re:Go as an alternative to Node.js for Very Fast Servers by zemo on Friday February 22, 2013 @04:57PM (#5267150)
the gofmt tool has a replacement feature:

`gofmt -r 'InitialName -> FinalName'`

Re:Go as an alternative to Node.js for Very Fast Servers by crypto5 on Friday February 22, 2013 @06:09PM (#5267540)
Documentation looks quite incomplete(http://golang.org/cmd/gofmt/). Will it change all imports and usages of class/method/field? Will it resolve all signature polymorphic calls?