While JavaScript remains the most-used programming language among developers, Google’s Go language (sometimes referred to as Golang) has been steadily increasing in popularity since its public launch five years ago.
Go’s status as an up-and-coming language in the development market was confirmed in 2016 when it was named TIOBE’s programming language of the year. Many developers are now opting to familiarise themselves with Go as its features make it uniquely suited to fast-moving projects. Given this uptick in interest, it is becoming more important to understand the main differences between Go and industry-standard JavaScript frameworks. Currently, the widely-used Node.js is Go’s primary competitor for backend development.
In this post, we take a closer look at Node.js and Go in order to uncover the strengths and weaknesses of each language. (For further information on Go, check out our podcast with developer Mat Ryer – speaker, author and Go enthusiast – where he outlined how Go can offer significant advantages to modern businesses.)
What is Node.js?
Node.js is a platform for using JavaScript as the backend of your web application. In other words, it allows you to use the Web’s most popular language for an entire web application. This has led to Node.js becoming the fastest growing platform on the web, by a long way.
This has some big implications. For a business, an important factor in choosing what development tools to use is the number of skilled developers available. Practically every web developer has coded at least some JavaScript, and most have done lots. Finding a skilled JavaScript developer is relatively easy. Node.js also has some great performance features. It’s built on Chrome’s V8 engine, which compiles Javascript to native machine code making it lightning fast. Also, Node introduces things like the non-blocking event loop and the Node package manager. These things make server-side programming very easy for developers.
What is Golang?
According to the Go home page:
“Go is an open-source programming language that makes it easy to build simple, reliable, and efficient software”
Rather than being an evolutionary language, the creators have done a complete rethink of programming. They’ve gone back to the first principles of C and built from there. This is what gives Go its unique properties. The most important of these is a simple and effective way of dealing with concurrent programming properties. In addition, this novel programming approach allows for potentially huge performance improvements over other languages.
For this reason, some huge projects have now switched over to Go. Both Dropbox and Docker have now chosen Go to develop their massive, concurrent applications.
Concurrency and Scalability
This is where Go excels. The reason the teams at Docker, and Dropbox use Go is that they have very large applications that need things to be done in parallel. Go has a completely different approach to concurrent programming than other languages. It manages threads with things called ‘goroutines’ that handle communication in parallel very effectively. This means concurrent tasks that normally get very complicated, can be done simply and intuitively with Go.
Node.js is less elegant. Traditional concurrent programming in Javascript is done with event callbacks. This can get messy quickly. However, people are working on this problem with things like JS promises that will do the job in most cases.
Tools for developers
JavaScript is one of the most popular and well-established programming languages in the world. After all, that’s why Node.js is so attractive in the first place. There are so many tools for every possible application including libraries, platforms, examples and tutorials. If you need something done, finding the right tool for the job is easy. Go does have some nice libraries and packages to use, but it doesn’t look like it will catch up with Node.js anytime soon. As a developer, you’ll be doing a lot more of the programming groundwork. The Node.js community is highly interactive and far bigger than Go’s. It’s safe to say that Node.js isn’t going anywhere soon.
Learning Curve
Learning Node.js is easy for web developers. Even if you haven’t done much JavaScript, there are so many great resources to learn for free online. And, the Node.js event loop makes concurrent server programming quite easy. Deciding to use go will mean you have to learn an entirely new language and probably use JavaScript on the front-end. This is worth it for larger organizations that can afford the investment, and need the performance gains. But, if you’re not developing something like this, you might want to stick with what’s easy.
Best Practices and Conventions
Javascript is notorious for bad code and poor developer practices. This could be because:
A lot of Javascript developers are self-taught
A “that will do” attitude
Scalability issues with callbacks
This can be a problem for developers and those that hire developers. It’s hard to break old habits, and it’s hard to find developers with good habits. On the other hand, Go fundamentally encourages good programming practice. Google designed it so that large teams could work on large projects effectively and easily.
Finding Developers
Great Javascript developers – and even Node.js specialists – are easy to find (and therefore cheaper). At Venturi, we have a wealth of experience in sourcing top JavaScript developers to help with projects of any size. Go is much newer and has a tiny fraction of the developers. This means you probably don’t have a Go expert floating around your office. Finding a skilled developer will be more difficult and expensive. However, in the long run, the time invested in a highly elegant, scalable tool for your backend might just pay off.
Which is best?
This depends on a variety of factors such as:
Type of project
Budget
The current skill level of your developers
The size you intend to scale to in the future
Any skilled development team will know what languages and tools to use for a given project. The important thing is to define your requirements well. There are no silver bullets in software development. Every choice you make is a trade-off that will bring its own set of pros and cons. Discover why we’re different from other IT recruitment agencies.