Why make isomorphic web apps with Go?

JavaScript has been the most popular option to create truly isomorphic web applications. Now, a new option exists in Isomorphic Go.

Go is a modern programming language that's designed to be relevant in an age of multi-core processors and distributed systems. Unlike Node.js, back-end web server instances implemented in Go, are multi-threaded, using cheap, lightweight threads known as goroutines. Go's powerful concurrency constructs allow you to avoid callback hell, enabling you to create code that is more maintainable.

"If you're building a server, I can't imagine using anything other than Go." — Ryan Dahl, Creator of Node.js

Go is a statically typed language unlike popular scripting languages such as JavaScript, Python, Ruby, and PHP. As a statically typed language, Go comes with the advantage that many problems can be discovered at compile time. The language also comes with type inference capabilities, giving Go the feel of a dynamic programming language along with the added benefit of type safety.

Go includes many features that allow developers to be highly productive. Go has a simple and terse syntax which promotes readability and maintainability. Go has an implicit build system, that automates dependency analysis, which eliminates the need to manually create and maintain build files. Go comes with a robust standard library, providing a lot of useful functionality, right out of the box.

Having a single, unified Go codebase, eliminates the mental context-shifts that come with juggling between two different programming languages on the back-end (Go, PHP, Java, Python, Ruby, etc) and the front-end (JavaScript). Isomorphic Go makes it possible to share parts of the application codebase, between the client and the server, allowing you to reuse code and avoid repetition.