GDG Rome Devfest 2014 - An introduction to Go by Alessandro Mancini (8th January 2015)
(This post is part of a serie on GDG Rome DevFest 2014)
Agatino Grillo: Hi Alessandro. Can you introduce yourself?
Alessandro Mancini: I am a software developer with several years of experience in military defense area, particularly focused in Human-Machine interface system, Real-Time radar system, Object Oriented application using C/C++ and Java.
I am an active member of Google Developers Group - Lazio/Abruzzo (GDG lab) since the summer of 2013.
I am a Go enthusiast and an Android developer and a speaker in several IT conferences.
Beside this geek/nerd things, my interests are music (I am a very expert and enthusiast of many genres of music and spend hours of my days listen good albums) and I try sometimes to snowboard.
Agatino Grillo: You get a talk at Rome Google Developer Group (GDG) Fest on 8th November 2014 in a code-lab dedicated to Go language. What about it?
Alessandro Mancini: GDG DevFest’s codelabs are hands-on lab sessions to allow attendees to learn Google technologies by practical examples from experts sharing their knowledge and passion. Rome Devefest 2014 was hosted by Rome University TRE. The full agenda of Rome Devefest 2014 is available here. I was the speaker of GO codelab that was a sort of “introduction of Go language”: why adopt it, its advantages against other programming languages, etcetera. You can find the slides here with the code examples I proposed.
Agatino Grillo: Okay let’s start from basics. What is Go? Why another web programming language?
Alessandro Mancini: Go language (better known as Go lang or just GO) was conceived in 2007 by Google to solve some of the problems born by the interconnection of modern software infrastructures: multicore processors, networked systems, massive computation clusters, and the continuous update of web programs. Go was designed and developed to improve productivity in this complex environment. Its better-known aspects are built-in concurrency and garbage collection but Go has other important features: a rigorous dependency management, adaptability of software architecture as systems grow, robustness across the boundaries between components.
The article "Go at Google" discusses the background and motivation behind the design of the Go language, as well as providing more details.
Agatino Grillo: That means Go is the best choice only for construction of system software on multicore machines?
Alessandro Mancini: Absolutely no. Go is efficient, scalable, and productive in every architectures and some programmers find it fun to work in. The goals of the Go project were to eliminate the slowness and clumsiness of software development and thereby to make the process more productive and scalable. The language was designed by and for people who write and read and debug and maintain large software systems.
Agatino Grillo: What are the most important characteristics of Golang?
Alessandro Mancini: To summarize Golang is
- lightweight, avoids unnecessary repetition
- statically typed
- object oriented, but not in the usual way
- concurrent, in a way that keeps you sane
- designed for working programmers
Agatino Grillo: What does it mean “Object Oriented, but not in the usual way”?
Alessandro Mancini: Golang requires a different way to think about Object Oriented Programming. Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy. The concept of “interface” in Go provides a different approach that is more easy to use and in some ways more general. There are also ways to embed types in other types to provide something analogous - but not identical - to subclassing. Moreover, methods in Go are more general than in C++ or Java: they can be defined for any sort of data, even built-in types such as plain, “unboxed” integers. They are not restricted to structs (classes).
Go has types and values rather than classes and objects.
Go doesn’t fit the typical schema of other OOP language but it provides many of the same features, in a different way:
- methods on any type we define, with no boxing or unboxing
- automatic message delegation via embedding
- polymorphism via interfaces
- namespacing via exports.
There is no inheritance in Go and so you have to realize OO design in terms of composition.
Agatino Grillo: Your suggestions on getting started with Golang?
Alessandro Mancini: At Google I/O 2012 the Google Developers team launched the Google Developers Academy, a program that provides training materials on Google technologies. Go is one of those technologies. A good point to start is for example: “Getting Started with Go, App Engine and Google+ API” an introduction to writing web applications in Go updated on September 2014. It demonstrates how to build and deploy App Engine applications and make calls to the Google+ API using the Google APIs Go Client. This is a great entry point for Go programmers to get started with Google’s developer ecosystem.
After going through basic materials the second step for acquiring knowledge in Go is to get started writing code solving actual problems. And of course joining Go community https://groups.google.com/forum/#!forum/golang-nuts . There are a lot of gophers eager to help you improve your skills.
Agatino Grillo: Alessandro you’re a member of the Google Developer Group Rome. What’s the tech scene in Rome? What about Golang spread in Italy?
Alessandro Mancini: The tech scene in Rome is growing up thanks to developer groups like GDG Roma and GolangIt http://www.meetup.com/golangit/ which have a key role in bringing innovation and tech knowledge into the programmers communities. In Italy in the last years there has been a relevant growth of tech events as well as tech communities.
Agatino Grillo: Thanks Alessandro
Alessandro Mancini: Thank you
How to contact Alessandro Mancini
- Email: email@example.com
- Google+: https://plus.google.com/+AlessandroMancini13
- LinkedIn: https://www.linkedin.com/in/aleman79
- Twitter: https://twitter.com/nichel @nichel
- GitHub: https://github.com/nichel?tab=repositories
- Slides http://shar.es/1HwZz5
- A Tour of Go by Russ Cox (video http://youtu.be/ytEkHepK08c and transcript http://research.swtch.com/gotour)
- The Go Programming Language http://golang.org/help/
- GO - Frequently Asked Questions (FAQ) http://golang.org/doc/faq
- The Go+ community https://plus.google.com/communities/114112804251407510571
- The Go Programming Language at Google+ https://plus.google.com/101406623878176903605/posts
- Twitter: @golang at Twitter http://twitter.com/golang
- Interactive GoLang http://play.golang.org
- GO by examples http://gobyexample.com
- Towards Web 3.0, an interview with Roberto Navigli and Daniele Vannella (9th January 2014)
- GDG Rome Devfest 2014 - An introduction to Go by Alessandro Mancini (8th January 2015)
- Rome Dev Fest 2014: Android TV & Chromecast, a conversation with Matteo Bonifazi and Alessandro Martellucci (2nd January 2015)
- “Let’s expose Rome” with a Cloud Cult Platform: a conversation with Camelia Boban and Simone Pulcini about semantic web (15th December 2014)
- Il lavoro al tempo del web - Intervista a Massimo Chiriatti (24 novembre 2014)
- Storia: progettare esperienze multimediali immersive - intervista a Darius Arya, archeologo multi-piattaforma (18 novembre 2014)
- Let’s develop immersive multimedia experiences about history - Interview with Darius Arya “multi-platform” archaeologist (18th November 2014)
- Costruiamo insieme una storia immersiva – intervista a Serena Zonca (12 novembre 2014)
- Google: DevFest Roma 2014 (Università Roma TRE, 8 novembre 2014)