Our knowledge base for software, electronics and everything in between
In case you never heared Golang before, it is a staticly typed, compiled language, which is developed by google to reduce their need for C/C++ in web area. This language has some benefits over C/C++ besides seems to be true winner win I compared it to other programming languages that I've worked with, such as PHP, C# and Node.js
Golang can be compiled for major OS available out there, plus some microcontrollers using TinyGo and mobile applications, using Gomobile project. Today I am going to tell you the 8 major reasons we prefer go for our projects and clients.
When you compare Golang with Java and C++, you just realize there are much lesser features in the language, No OOP, and many flavors and options. In first glance all those tools seem to be handy, but for major use cases they are not needed and only tend to complicated source code of a project, specially if it was borrowed or it's a legacy code.
This means faster development, and easier for new developers to learn and join the project.
Hell yeah. When you are writting code in Node.js or Python, you always need the installation, dependency management and deploying issues because they are scripts.
A well written Golang application, can be compiled into binary files (exe on Windows!) and it would be expected to run for next few decases, without any changes.
When you write a node.js app, just in order to run it, you need to have somewhat serious mashine to run it, and right away gets a lot of memory and cpu usage even for a hello world app. Golang binaries for small web applications are around 10-30 MB in a single executable file.
Comparing this to a Java web application, which right away needs 4GB of ram to run, and constantly needs hardware upgrade and code maintenance while the server loads increases, might make you realize you could have better weekends writing those applications into something C-level performant.
Using golang you can create binary, which can both start a web server, as well as run in cli as a command line tool. In fact, major and long-lasting projects are simple executables, which provide command line interface to developers and include a help for each action.
In large projects which have a lot of calculations, Web server is only a layer that maps requests to these binary files. Mostly, these layers and separation is not designed due to convenience of MVC frameworks, and the software assumed completely a web flow instead of logic base and presentation layet.
Golang is a proper binary, you can sign it's binaries for Windows and MacOs without any problems. In fact, bundling a node.js app into an executable file and run it next to an Electron app, caused an MVP to fail in our past.
You can create different version of your application using targetting, which gives you the option not only to market for different people, but not to distribute code which is not needed for all clients.
In case of creating a well built binary, (for example our FireBack product) you can bundle those into many applications and distribute it several times.
Many people tend to prefer Python and Node.js because of their scripting simplicity, or re-use the knowledge in web development on the backend side. This tend to generate unportable projects, which usually have very short lifespan, and need constant maintanance. Learning Golang is not that hard, and you can create CLI apps and Web apps much easier than you think.