Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

El lenguaje Go 1.11 llega con nuevas características

La actualización a mitad de año del lenguaje Go tiene características experimentales como WebAssembly y un inicial soporte para módulos.

Go es un lenguaje de programación -dice la Wikipedia- concurrente y compilado, inspirado en la sintaxis de C. Ha sido desarrollado por Google. Sus diseñadores son Robert Griesemer, Rob Pike y Ken Thompson (uno de los creadores de Unix). Actualmente está disponible en formato binario para los sistemas operativos Windows, GNU/Linux, FreeBSD y Mac OS X, pudiendo también ser instalado en estos y en otros sistemas con el código fuente. Go es un lenguaje de programación compilado, concurrente, imperativo, estructurado, orientado a objetos —de una manera bastante especial— y con recolector de basura que de momento está soportado en diferentes tipos de sistemas UNIX, incluidos Linux, FreeBSD y Mac OS X. También está disponible en Plan 9, puesto que parte del compilador está basado en un trabajo previo sobre el sistema operativo Inferno. Las arquitecturas soportadas son i386, amd64 y ARM.

¡PELIGRO! Adware Doctor, una de las Apps más populares de iOS, eliminada por Spyware

Go es un trabajo de código abierto y tiene una buena comunidad de desarrolladores que colaboran con el proyecto que ya lleva más de 8 años. La idea es tener un lenguaje de programación de sistemas, el cual ha sido usado con éxito comercial incluso. En esta última versión, la 1.11, se ha portado lo que se llama WebAssembly, lo cual es aún experimental. Los programas que usan la nueva característica en Go compilan a un módulo único de WebAssembly que incluye las rutinas de tiempo de ejecución de Go, así como scheduling, recolector de basura, mapeo y otros temas esenciales de Go, resultando en un módulo de unos 2 MB (o 500K cuando se comprime), lo cual para los estándares actuales no es algo de qué debamos preocuparnos.

Los programas de Go también pueden ser llamados en Javascript usando un nuevo paquete experimental. WebAssembly es un formato binario de instrucciones para una máquina virtual basada en stack. Se ha diseñado como un objetivo portable para compilar lenguajes de alto nivel como C/C++ o Rust de forma que las apps puedan ponerse en los clientes web y en aplicaciones de servidores.

Go 1.11 añade también soporte preliminar a un nuevo concepto que han denominado “módulos”. En los términos de Go, hay una alternativa a GOPATH con soporte integrado para manejo de versiones y distribución de paquetes. Usando módulos, los desarrolladores no están confinados a trabajar dentro de GOPATH. Otras ventajas es que hay información sobre la dependencia de versiones y esto hace que los módulos compilados sean más confiables y reproducibles.

El soporte de módulos se considera experimental por el momento, pero podría cambiar de acuerdo a la respuesta que den los usuarios de Go 1.11. Los desarrolladores tienen otras herramientas planeadas. Y aunque los detalles del soporte a módulos pudiesen cambiar, los proyectos convertidos a módulos usando Go 1.11 continuarán trabajando en la versión 1.12 y posteriores.

Go es un lenguaje que vale la pena revisar. Está escrito por profesionales del cómputo que llevan toda una vida en el desarrollo de los lenguajes de programación. El hecho de que sea un sistema de código abierto da chance de ver además cómo se hacen las cosas. Desde luego leer el código fuente del mismo no es trivial, pero la cuestión es que dicho código está accesible para cuando decidamos estudiarlo.

Comentarios