¿Por qué el lenguaje de programación Go?
Nacimiento
Go, también conocido como Golang, es un lenguaje de programación de “código abierto” nacido dentro de Google en 2007, y que vio la luz como un proyecto interno en su primer versión en 2009. Fue dado a conocer a fines del 2012 en su versión 1.0, y mantuvo su API prácticamente sin modificaciones. Su última versión en 2016 es la 1.6.
Motivación
Go nace en Google para resolver una serie de problemas en el desarrollo de software de “backend”, en especial la lentitud y la torpeza a la hora de programar en C y C++, muy utilizados dentro de Google, pero al mismo tiempo manteniendo la eficiencia de estos lenguajes.
Go es un lenguaje multiproposito pero su “sweet spot” esta en software de backend altamente escalable y concurrente.
Objetivos principales
- Simple, simple, simple. Menos es más.
- Fácil de leer. Los ingenieros de desarrollo pasan mucho tiempo leyendo software de otras personas.
- Concurrente (soporte multi-core y asincrónico).
- Compilación extremadamente rápida.
- Compilado a código nativo.
- Veloz y con un bajo uso de memoria.
¿Proyectos o compañías utilizando Go?
YouTube, dl.google.com, Blogger, Google Code, Google Fiber
Docker
Facebook Parse
DropBox
CockroachDB
Mercado Libre
Síntesis del lenguaje
- Es divertido crear piezas de software en Go.
- Se siente como un lenguaje dinámico al mejor estilo Python.
- Posee inferencia de tipos.
- Sin embargo es fuertemente tipado.
- Sintaxis similar a C.
- Perfomance cercana a C.
- Compilación extremadamente rápida.
- Muy bajo uso de memoria.
- Garbage Collector.
- Alta concurrencia. Asincrónico.
- Multi-Core
- Excelentes herramientas “out of the box” para testing, análisis de perfomance, análisis de memoria, code coverage, etc.
- Herramientas a la Unix.
- Excelentes librerías.
- Web Server autocontenido y muy performante.
- Permite compilar para Android y iOS. (si, leiste bien). Excelente para hacer librerías.
Hola Mundo
Hola Mundo Web
Cada rosa tiene su espina
Por supuesto que siempre hay algo que no nos gusta:
- No posee generics, excepto para arrays, mapas y “slices” (arrays con esteroides).
- No tiene una librería realmente completa de estructuras de datos o colecciones.
- El manejo de errores es controversial.
- El manejo de dependencias, o el nulo manejo de las mismas, es más que controversial.
Resumiendo
Go promete mucho. Nos permite realizar pequeños scripts y correrlos de manera dinámica o crear software de un tamaño considerable, complejo y compilado a código nativo. Es rápido crear software en Go, es divertido, y es altamente performante (¿qué más se puede pedir? :) )
Pero, como siempre, debemos entender que es una herramienta más dentro de nuestro arsenal de desarrollo de software.
No dejes de seguirnos
Meetup: http://www.meetup.com/Golang-Argentina/
Facebook: https://www.facebook.com/golangar/
Twitter: @golangar