Published on
May 4, 2020

¿Por qué aprender Go(lang)?

Authors
  • tanx
    Name
    Tania Zúñiga
    tanx
    @tanx

En este post te voy a dar 5 razones por las que deberías aprender Golang.

Go es un high-level language y un compiled language. En general los lenguajes compilados son más rápidos que los interpretados, hablaremos más a fondo de eso en otro momento. Pero, Go es tiene lo bueno de ambos, de los lenguajes compilados e interpretados. Es decir, es un lenguaje compilado, pero con algunas buenas características del lenguaje interpretado, en especifico el garbage collection.

go_lang1

En otro lenguajes de programación que se ejecutan rápido como Go (compilados), no hay recolector de basura. Esta es una característica realmente util ya que hace lagestión automática de memoria. Los que programen en C sabrán que la gestión manual de la memoria es difícil y puede ser un dolor de cabeza al inicio.

Cabe destacar que aun teniendo un recolector de basura eficiente, puede que se alenté un poquito la ejecución. Pero oye, es un precio bajo por tener esa gran ventaja de un recolección automática de basura. No se puede tener todo en está vida.

Go hace mucho más simple la implementación orientada a objetos que otros lenguajes como C++. Esto lo veras como ventaja o desventaja dependiendo tus necesidades.

  • En Go no existe el termino class sino que usa structs con métodos asociados.
  • No hay herencia, ni constructors, ni generics.

Eso lo hace fácil de codificar pero también puedes verlo como una desventaja. Si dichas (des)características no te gustan. Te dejare como se ve una simple clase persona en Go y en C++.

// Clase persona en Go
package persona

import "fmt"

type Persona struct {  
    Nombre string
    Edad int
}

func (e Persona) Saludar() { 
    // método saludar
    fmt.Printf("Hola soy %s tengo %d años\n", e.Nombre, e.Edad)
}
// Clase persona en C++ 
#include <iostream>
class Persona
{
// variables y métodos
public:
	Persona();
	std::string nombre;
    std::string apellido;
	int edad;
};

// Constructor
Person::Persona(){
	// Iniciar variables...
}

void Persona::saludar(){
	// método saludar
	cout << "Hola soy " << nombre << " tengo " << edad <<" años";
}

Ten en mente que Go es diferente. Tiene objetos pero es diferente de la implementación tradicional orientada a objetos.

La programación concurrente en muchas ocasiones se dificulta por la implementación del acceso correcto a las variables compartidas. Go fomenta un enfoque distinto:

Do not communicate by sharing memory; instead, share memory by communicating.
No te comuniques compartiendo memoria, en cambio, comparte memoria comunicándote.

Básicamente Go tiene concurrency primitives integradas en el lenguaje e implementadas de manera eficiente.

Palabras clave:

  • Goroutines: representan concurrent tasks.
  • Channels: se usa para comunicarse entre tasks.
  • Select: habilita la sincronización entre tasks.

Gordon, el Gopher(aun que a mi me parece más un hamster), es la mascota azul de Golang y es muy tierno.

go_lang2

Estoy jugando, regresemos a lo serio. Según la Developer Survey Results 2019, Go es el tercer lenguaje más buscado. Lo que significa que los desarrolladores que aún no lo usan dicen que quieren aprenderlo. Y si eso no es suficiente, también esta en el tercer puesto de los mejor pagados 🤑 a nivel global.

¿Conoces alguna otra razón para aprender a usar Golang? Dejala en los comentarios. Ojala alguna de estás razones te haya sido util y te anime a probar Golang aluna vez. Total, nunca está de más aprender cosas (tecnologías) nuevas.