Hablemos un poco mas de Golang
La comunidad de Go recomienda llamar a "go" como "golang" para la publicación de información, porque al momento de realizar una búsqueda en internet referente al lenguaje con la palabra "go" es un poco dificultoso encontrar resultados que te lleven al lenguaje de programación go, dicho lo anterior para cualquier tipo de búsqueda usar la palabra "golang" que ademas se esta usando en este documento.
El lenguaje de programación Go es un proyecto de código abierto que hace que los programadores sean más productivos.
Go es expresivo, conciso, limpio y eficiente.
Sus mecanismos de concurrencia facilitan la escritura de programas que aprovechan al máximo las máquinas multicore y en red, mientras que su nuevo tipo de sistema permite la construcción de programas flexibles y modulares.
Go compila rápidamente al código de la máquina pero tiene la conveniencia de recolección de basura y el poder de la reflexión en tiempo de ejecución.
Es un lenguaje rápido, escrito de forma estática y compilado que se siente como un lenguaje interpretado de forma dinámica.
Características
- Usa una sintaxis parecida a C por lo que los programadores que hayan usado dicho lenguaje se sienten muy cómodos con él.
- Utiliza tipado estático (statically typed) y es tan eficiente como C.
- Tiene muchas características y facilidad de lenguajes dinámicos como Python.
- Aun siendo un lenguaje diseñado para la programación de sistemas, provee un recolector de basura , reflexión y otras capacidades de alto nivel que lo convierten en un lenguaje muy potente.
- Go admite el paradigma de programación orientado a objetos , pero a diferencia de los lenguajes de programación mas populares no dispone de herencia de tipos y tampoco de palabras claves que denoten claramente que soporta este paradigma. Otro detalle que puede resultar confuso es que la definición de un tipo ("clase") se realiza por medio de declaraciones separadas (interfaces, structs, embedded values). Go permite el uso de delegación (a través de embedded values) y polimorfismo (por medio de interfaces).
- Compila un gran proyecto en pocos segundos.
- Proporciona un modelo de desarrollo de software con el que es fácil razonar, evitando la mayoría de problemas asociados con archivos de cabecera al estilo C.
- Diseñado para computadoras multi core.
Excepciones
Go no tiene excepciones. Los creadores del lenguaje dan varios motivos para que esto sea así. Uno de ellos es que añadir una capa de excepciones añade una complejidad innecesaria al lenguaje y al entorno de ejecución. Por definición deberían de ser excepcionales pero al final se acaban usando como controladores del flujo de la aplicación y dejan de tener nada de excepcional. Según los creadores, las excepciones tienen que ser realmente excepcionales y el uso que se le da mayoritariamente no justifica su existencia.
Innovación
Durante muchos años, los desarrolladores han tenido que elegir entre lenguajes de programación de tipado estático compilados, por regla general, bastante complejos pero que proveen grandes características relacionadas con la optimización y el rendimiento y lenguajes de tipado dinámico interpretados con características de mucho más alto nivel que hacían su aprendizaje, uso y sintaxis más sencilla y por tanto divertido programar en ellos, eso si, sacrificando rendimiento y control.
Go mezcla lo mejor de ambos mundos y nos aporta una sintaxis sencilla, clara y divertida junto a la potencia que nos ofrece un lenguaje fuertemente tipado y compilado incorporando además características de alto nivel que facilitan el uso del lenguaje por los desarrolladores.
Programación orientada a objetos
Para algunos autores, la herencia o las clases no son conceptos esenciales para la paradigma de POO, sino más bien un medio de implementación. Existen desde hace tiempo lenguajes orientados a objetos que no admiten clases, sino que se basan en prototipos, como Javascript o Self. Según declaraciones de Alan Kay, creador de Smalltalk, lo esencial del paradigma es el paso de mensajes.
Go tiene tipos y métodos y permite un estilo de programación orientado a objetos, pero no admite construir jerarquías, es decir, no admite la herencia, que para otros autores sí es un mecanismo esencial de la POO. En Go, el concepto de “interfaz“ es similar al usado en Java: cualquier objeto (value) que cumpla el contrato especificado por una interfaz (sin necesidad de una declaración explícita) obtiene ese tipo. También existen formas de embeber tipos dentro de otros tipos para obtener algo análogo a las subclases. Los métodos de Go son más generales que los de C++ o Java, pueden ser definidos para cualquier tipo de datos no sólo para los registros.