quapona® technologies Explores Go (Part 1)

Since quapona® technologies is constantly heading forward to explore the latest technologies trends, we’ve decided to share our knowledge with all the developers out there. As professional C/C++ developers operating in the field of embedded systems, we know what we are doing when developing in our environment of technology. This blog post is the beginning of a series about Google’s Go (also referenced as Golang or golang) programming language, which will document the know-how the quapona®techologies development team will acquire in the future. While operating in real business environments, we’ll provide unique insights in the way we are developing solutions using Go. The first part starts with a brief introduction, why we have chosen Go, followed by some of the basics like setting up the system. After everything is ready to go we will start talking about the more interesting things in the advanced articles.

The current project we are developing involves remote processing on a distributed server architecture with an unknown amount of incoming and outgoing data. We will present solutions how we build a micro service architecture using Go and the container technology from Docker. Furthermore, we will explain how to utilize Google’s Protocol Buffers and gRPC for network communication, how we deploy and maintain service container on a remote server and we will provide usefull tips and tricks to avoid common pitfalls we might stumble upon.

We choose you, Golang!

Knowing that there are many good solutions out there in the wild, the development team of quapona®technologies always searches for the latest technologies to use.

The starting point of the project was a very good one, because there was nothing set in stone. So, the team was in the perfect position to set everything up from scratch and to choose from the best and most promising technologies on the market.

Choosing the right programming language is one of the most important steps in the beginning of every new project. If you done it right, everything will be done in no time. If not, well, you will have a hard time.In this case it was a quite easy task choosing a new programming language. Most of the team members are experienced with C and C++ for many years and are very familiar with these languages. Because of this all-embracing use of C/C++, we decided us to use Go. The major reasons for our decision are as reasonable as simple.

C-like language

Static types

Pointers (!)

Build-in concurrency

Native C support

First Go is of the kind of a C-like language, which indeed coincides with the experience of the team. Static types and pointer (we love pointers) are making it easier to switch to a new language while bringing in the experience of the already learned ones. Far the best is the build-in solution for concurrency handling, which we will utilize and discuss in future articles in more detail. And last but not least, the native support of C code, which we will use to revive our proved and reliable code base written in C/C++.

As you can see, the gap between C/C++ and Go is a quite small one at the beginning. Thus, our team will be able to adapt the new language faster by using the known skills from the everyday business. Keeping in mind that Go and C/C++ aren’t the same languages nor they’re sharing the exact same feature set, we are looking forward to get used to the new language very quick.

The next articles in this series will be all about the basics of how our development environment has been set up and how we had structured the sources.

We hope you’ve enjoyed this first introduction.

If you have any comments or questions, please feel free to leave them in the comment area below.