Programación interactiva Go con Jupyter

Cesar Vega
5 min readJul 1, 2020

--

Este artículo es una traducción de un artículo publicado originalmente en inglés por Yu Watanabe en Medium. Por favor, visita el siguiente enlace y recomienda el artículo original si te gusta el contenido:

En los últimos años, el lenguaje de programación Go (golang) está creciendo en popularidad. Yo era un gran fan de Python y principalmente usé Python en mis proyectos de hobby hace tres años. Ahora, uso Go en lugar de Python porque puedo ser productivo con Go desde proyectos a pequeña escala por hobby, hasta proyectos a gran escala en una gran empresa.

En el mismo período, Python también está creciendo en popularidad a medida que el machine learning y la ciencia de datos se hicieron importantes. Hay muchas razones por las que se prefiere Python en ML. Una razón es que Python está diseñado para la escritura y evaluación de código interactivo. Otra razón importante es que hay una gran herramienta para la programación interactiva en Python. Jupyter Notebook.

Aunque ahora uso Go en muchos proyectos en los que hubiera usado Python antes, todavía necesito usar Python para machine learning y análisis de datos. La capacidad de programación interactiva y Jupyter Notebook en Python siguen siendo muy atractivas para mí. Estuve buscando un entorno Go Jupyter que realmente funcionara y revisé los Kernel Jupyter existentes. Pero no había tal kernel en el mundo. Algunos proyectos fueron terminados. Algunos de ellos son algo populares, pero no se ajustaban al uso real porque no soportan ni seguridad de tipo, ni cancelación de código, ni finalización de código, ni inspección, ni mostrar contenidos no textuales.

Por lo tanto, decidí desarrollar un nuevo entorno para ejecutar Go interactivamente en Jupyter Notebook desde cero. Hoy presento el software que creé y la nueva forma de escribir y ejecutar Go interactivamente como Python.

Homepage del proyecto en GitHub

Pruébalo desde los navegadores

Gracias a binder (mybinder.org), puede probar el entorno Go + Jupyter (lgo) en sus navegadores con contenedores temporales de docker sobre binder. ¡Abre tu Jupyter Notebook temporal desde el botón de arriba y disfruta de la ¡programación interactiva Go!

Características principales

  • Escribir y ejecutar Go (golang) interactivamente como Python.
  • Integración con Jupyter Notebook
  • Soporte completo de la especificación del lenguaje Go (golang). 100% compatible con gc (compilador go).
  • Completar, inspeccionar y formatear el código en los Jupyter Notebooks
  • Mostrar imágenes, HTML, JavaScript, SVG, etc…
  • modo REPL interactivo desde la consola
  • Los goroutines y los channels estan totalmente soportados

Instalación

Hay dos formas de instalar el entorno Go + Jupyter rápidamente en tu computadora.

Si quieres probar el entorno Go + Jupyter rápidamente en tu computadora, prueba primero la versión Docker. Si usas Linux y deseas integrar el entorno Jupyter con el entorno Go en tu computadora, por favor instálalo desde la fuente. La ejecución del código de lgo es lenta en go1.10 debido a la regresión con — buildmode=shared. Hasta que se solucione el error en go1.10, intente lgo con go1.9. Funciona bien con go1.9 y go1.8.

En Windows y Mac, utiliza la versión Docker porque lgo no es compatible con Windows y Mac de forma nativa. Puedes editar notebooks en Windows / Mac desde lgo ejecutándose en Docker.

Uso

Ejecute el comando jupyter notebook para iniciar Jupyter Notebook como de costumbre. Cuando cree un nuevo notebook, por favor selecciona Go (lgo) desde el menú. Una vez creado un nuevo notebook, puedes escribir y ejecutar Go interactivamente como en Python.

En lgo, puedes mostrar la documentación de las variables, funciones y tipos moviendo el cursor a los identificadores y pulsando Shift-Tab. Puedes completar el código en lgo pulsando Tab. Para mostrar datos no textuales, utiliza _ctx.Display como en este ejemplo.

Usar como un entorno REPL desde la consola

Puedes usar lgo como REPL desde la consola. Ejecuta jupyter console --kernel lgo después de instalar lgo. Por supuesto, puedes usar la completitud de código en este modo presionando Tab o Ctrl-I.

Comparación con un framework existente

Para aquellas personas que conocen otros kernel Jupyter de golang existentes, aquí está la tabla de comparación con los competidores. Lee esta sección en README.md para más detalles.

Aprende más

Visita la homepage del proyecto y lee las instrucciones en README.md. Además, puedes aprender lo que realmente podemos hacer con el entorno Go + Jupyter de estos ejemplos de notebooks. ¡Disfruta de la programación interactiva Go!

https://twitter.com/Inticaya

--

--

Cesar Vega

Systems Engineer, postgrade in Software Development, postgrade in Information Security