I recently discovered Go, and so far it is awesome! I am a C++ developer by day and an aspiring cloud developer by night (I am using the the term cloud to refer to the backend services that power today’s mobile and web applications). Developing with C++ in the highly secure environment that I do, I feel very isolated from the exciting world of cloud development. My main development computer doesn’t even have access to the internet (frightening, I know). It is a long paperwork filled process to bring in any tools, frameworks or libraries for use in our products. Needless to say developing at my day job is far from the fast paced flexible world today’s cloud developers enjoy.
I may not be able to join in the fun at my day job, but there is nothing stopping me from experimenting the latest and greatest technologies for projects at home. This brings me to today’s topic, the Go language. Go was created out of the frustration#History”) of working with the complex C++ language. Like C/C++, Go is statically typed and compiles down to a native static binary file. That’s about as far as the similarities go (see what I did there…). I’m not going to go into details comparing the languages since they are being used to solve different problems, but I find Go’s simplicity absolutely refreshing.
I plan to use Go for writing RESTful web services for mobile applications and single page javascript web applications. Splitting up the backend end service as a RESTful API gives you the flexibility to completely decouple the main logic from the UI. I have wrote a web application in PHP once only to realize that the server side generated HTML meant I had to reimplement all of the logic in an API in order to port it over to an iPhone app. I decided it would be easier to just start with an API that any front end UI can access.
I hope to start working on a new project using Go soon and will post any interesting tips and tricks I find. In the coming weeks I plan to do detailed comparisons of some of the popular Go frameworks out there. The first order of business will be finding a great http router and middleware manager.