Saltar al contenido
Go

¿Qué es Golang y por qué debes aprenderlo?

abril 21, 2022

Golang está desarrollado por Google, por grandes y respetados ingenieros, esto ya da mucha seguridad, pero además, grandes empresas, con millones de usuarios al rededor del mundo están usando Go en sus sistemas.

Go, mejor conocido como Golang para los amigos, es un lenguaje de programación que nació en el regazo de Google. En los últimos años se ha convertido en una excelente (en serio, EXCELENTE) opción para realizar proyectos que requieren alta demanda de usuarios, Go lo soporta muy bien gracias a su super poder. Aquí te lo cuento.

Inicios de Golang

En el año 2077, dos programadores de alta gama como Ken Thompson y Rob Pike, presentaron en Google sus ideas para desarrollar un lenguaje de programación sencillo que pudiera suportar gran cantidad de usuarios y tuviera carácterísticas de alto nivel y todo el poder de los lenguajes de bajo nivel. Eran los inicios de Go (en la comunidad se le llama Golang para hacer referencia al lenguaje, lastimosamente Go es una palabra muy genérica en inglés).

Google dio luz verde al proyecto y en 2011 vio la luz al Open Source, Golang con su versión 1.0 y un año después la primer mejora (1.1) estos primeros años, un lenguaje tan joven demostró ser poderoso y llamó la atención de mucha gente importante en el sector. Con el tiempo, Go ha ido creciendo y mejorando y comunidad aumentando, al punto de crear todo un ecosistema de herramientas a su alrededor que lo hacen cada vez más atractivo.

¿Qué hace tan especial a Golang?

Go tiene muchas cosas interesantes, desde su filosofía hasta su ejecución. Si es tu primera vez programando, posiblemente no tengas muchos problemas, pero si eres alguien que tiene experiencia usando Javascript por ejemplo, sufrirás mucho al principio, acostumbrándote a la forma tan estricta de trabajar.

Para que te hagas una idea, el compilador no te permite ejecutar el proyecto completo si tienes una variable declarada que no estás utilizando en tu código. Algo tan sencillo como declarar una variable que nunca usas puede causar que tu proyecto entero no funcione. Esto en cualquier otro lenguaje es impensable, a lo mucho pueden llegar a darte una pequeña advertencia en el editor de código, pero poco más.

En Golang hay una forma de hacer las cosas, UNA, esto hace que sea sencillo de aprender (en cuanto a sintaxis) y permite hacer muchas cosas con solo unos cuantos bloques. Por ejemplo, olvídate de azucar sintáctico de los numerosos métodos de los array. En Go hay una forma de recorrer un array, con un for, y ya.

En un principio parece que esto es un problema, pero con el tiempo te das cuenta que tienes super claro lo que debes hacer y que todos en tu equipo entienden claramente como funciona un bloque de código con una vista rápida. Parece que escribes más código, pero no es cierto, sencillamente tienes el control total del código, estos métodos que mencioné antes ejecutan código por debajo, que muchas veces no ayudan a la optimización.

Pero bien, este artículo se llama «Razones para aprender Golang«, así que dejemos de divagar y empecemos a enumerar estas razones que creo son las más relevantes por las cuales debes aprender Golang este año.

1. Subirte a hombros de gigantes

Como ya mencioné, Golang está desarrollado por Google, por grandes y respetados ingenieros, esto ya da mucha seguridad, pero además, grandes empresas, con millones de usuarios al rededor del mundo están usando Go en sus sistemas y otras se están migrando.

Empresa que utilizan Golang

Golang, por su naturaleza, permite una gran cantidad de usuario atacando el backend de forma simultanea, usuarios para los que Go asigna una pequeña fracción de memoria en una subrutina que requeire solo unos cuandos kb de memoria. En otros lenguajes muy aficientes requiere hasta 1MB de de memoria.

En una prueba personal que realicé, una iteración de varios millones de operaciones en Node Js le llevó 7 segundos realizarla, en Go le llevó apenas 2 segundos. La diferencia es relevante si hablamos de que solo se usó un hilo de ejecución y no Go rutines. Por cierto, ese es el siguiente punto.

2. Go Rutines

Go es un lenguaje que nació con la intención de atender a millones de personas concurrentemente. Así que Golang es un lenguaje concurrente. La característica principal de Golang (a mi parecer) es la capacidad que tiene de convertir cualquier función en una hilo diferente de la forma más sencilla que puedes imaginar, poniendo una palabra al principio del llamado de la función.

Solo tienes que colocar la palabra «Go» al inicio del llamado de la función para que se asigne un hilo de ejecución completamente diferente, dejando disponible el hilo principal para seguir atendiendo otras peticiones. Esta concurrencia que es tan natural en Golang, es muy dificil de lograr con otros lenguajes como Java, C++ o Javacript (que por cierto es sincrono, pero puede aprecer asíncrono haciendo llamados a funciones específicas, pero sigue siendo síncrono).

Hablar sobre las Go Rutines da para otro artículo completo, incluso quizá para un libro entero. A pesar de ser muy sencillas de llamar, debes tener encuenta que ese proceso de está llevando a cabo en otro hilo de ejecución completamente diferente al de tu aplicación principal, esto tiene su complejidad y hay que aprender estratégias para que no se salga de control, por suerte Go ya tiene todas las herramientas que necesitas.

3. Una aplicación compilada

Este punto es un poco obvio, sin embargo al trabajar especialmente en Web, muchas veces no somos concientes del poder que tienen lo lengujes compilados. Estamos acostumbrados a trabajar con lenguajes que se compilan en tiempo de ejecución. Históricamente hemos utilizado lenguajes interpretados en las apliaciones web, PHP, Javascript con NodeJS, estos siempre han sido los reyes.

Estos lenguajes dan muchas facilidades y mucha rapidez a la hora de querer realizar cambios en el servidor o en los clientes de nuestras apliaciones. Pero lo hacen sacrificando algo muy importante, la optimización y la velocidad de ejecución.

Un lenguaje compilado hace todas las validades necesarias en tiempo de compilación, es decir mientras se está generando el build para producción. Una vez compilado, corre prácticamente en lenguaje máquina. Esto permite que sea mucho más rápido que cualquier lenguaje interpretado o de scripting.

Go no es el único lenguaje compilado que puedes usar en tus aplicaciones, pero ha demostrado dar mejores resultados que muchos otros.

4. Un lenguaje muy bien pagado

Si eres programador y amas tu profesión de seguro este punto no te interesa, sabemos que lo haces por amor al arte. Pero considero que es importante que sepas que el desarrollo de aplicaciones con Golang es de las mejores pagadas del sector.

Las aplicaciones con Golang son muy eficientes y por lo general son usadas en proyecto que tienen millones de usuario y por lo tanto en empresas que tienen suficientes recursos y que necesitan optimizar la máximo sus sistemas. Esto hace que los desarrollores profesionales que manejan Golang, son muy bien remunerados.

Hay muchas otras cosas que decir, pero creo que ya es sufienciete por hoy. Te invito a que des tus primeros pasos en Golang y que veas por ti mismo las ventajas que tiene, a decir verdad es una sensación diferente y una emperiencia que abre tu mente. Características como herencia implícita, manejo de errores manual, apuntadores, etc. son cosas que al principio te rompen la cabeza, pero luego no puede vivir sin ellas.