Curso Nbdev
Introducción

Desarrollo de software a través de la programación literal – Curso nbdev

Invalid Date

Curso (Tema 1 todo)

¿ Qué es Nbdev ?

Nbdev es un ambiente de programación para el desarrollo de software en Python el cual esta basado en el concepto de programación literal (literal programing) de Donald E. Knuth

Literate programming is a methodology that combines a programming language with a documentation language, thereby making programs more robust, more portable, more easily maintained, and arguably more fun to write than programs that are written only in a high-level language. The main idea is to treat a program as a piece of literature, addressed to human beings rather than to a computer.1

¿ Qué es Nbdev ?

Nbdev es un ambiente de programación para el desarrollo de software en Python el cual esta basado en el concepto de programación literal (literal programing) de Donald E. Knuth

Programación literal es una metodología que combina un lenguaje de programación con un lenguaje de documentación, haciendo los programas más robustos, más portables, más fáciles de mantener y discutiblemente más divertidos de escribir que programas escritos en un lenguaje de programación de alto nivel. La idea principal es tratar a un programa como una pieza de literatura dirigido a un humano en vez de a una computadora. 1

¿ Cuál es la diferencia ?

Nbdev utiliza un jupyter notebooks para generar tanto el código de la biblioteca como la documentación de la misma.

Permite

  • Construir código a partir de Notebooks de Jupyter permitiendo que el desarrollo del software sea similar a contar una historia.
  • Generar documentación usando las propiedades de Markdown y Latex integradas en Jupyter y de fácil mantenimiento usando Quarto.
  • Publicación de la documentación (A través de GitHub Pages)
  • Integración continua a través de GitHub Actions permitiendo generar pruebas para mantener y validar las utilidades del código.
  • Publicas paquetes a PYPI y conda.

Adicionalmente

  • Generar pruebas del código esenciales para el mantenimiento del paquete.
  • Mantener notebooks limpios (Limpios de metadata y quedendonos sólo con la parte legible para los humanos).
  • Muchos más!!!

Instalación rápida

Se puede instalar a través de pip usando:

pip install nbdev

o instalar con conda:

conda install -c fastai nbdev

Si se utiliza conda para hacer uso de nbdev, es necesario que este instalado dentro del mismo ambiente de Python que se utiliza para hacer uso de Jupyter y del proyecto.

¿ Cómo usar nbdev ?

El desarrollo de nbdev esta ligado a su uso con herramientas software especificas. Por tal motivo la forma más sencilla de hacer uso de nbdev es utilizar dichas herramientas de software.

Herramientas ligadas a nbdev:

  • Python (Python o conda)
  • Manejador de paquetes de Python (pip o conda)
  • Jupyter Notebooks
  • Quarto
  • Github
  • nbdev

¿ Cómo funciona nbdev ?

La idea central es poder hacer todo como una historia, hacer el desarrollo de una idea, pasarla a código, ver que funcione, hacer pruebas , exportar el código, hacer la documentacion, etc. Todo dentro de un mismo notebook.

Al tener todo dentro de un mismo notebook nos permite que todo sea más simple.

  • Se evita la repetición de código pues nombres de parámetros, constantes, typos, etc.
  • Se simplifica la generación de ejemplos, pues si el ejemplo ya se encuentra dentro de un notebook el desarrollador no necesitará copiarlos y poner estos dentro de una documentación de forma manual.
  • Se enriquecen los ejemplos y la documentación pues al hacer uso de los notebooks de Jupyter podemos hacer gráficas, imágenes, y ejemplos interactivos.
  • Para los usuarios de la biblioteca o módulo que se desarrolla pueden reproducir de forma sencilla los ejemplos y resultados.

¿ Cómo funciona nbdev en su segunda versión ?

En sus origenes nbdev hacia uso de los notebook de Jupyter para hacer todo el desarrollo, a partir de su segunda versión se recomienda el uso de Quarto. Quarto nos permite usar los notebooks con la diferencia que a partir de un mismo notebook podemos generar distintos tipos de documentos como HTML, PDF, MS word, Markdown, presentaciones, etc. Uno de los formatos que podemos generar es el de un notebook de Jupyter, por tal motivo los desarrolladores de nbdev decidieron hacer uso de Quarto en vez de generar todo un nuevo ecosistema.

¿ Cómo funciona nbdev en los notebooks ?

Usando simples directrices dentro de los notebooks y sus celdas nos permite: * Crear la documentación * Exportar fragmentos de código para la creación de codigo fuente. * Ejecución de código para pruebas. * Visibilidad y comportamiento de celdas. * Manejo de variables internas. * etc.

Haciendo uso de lo anterior nos permite generar tutoriales para mosrtrar el uso del desarrollo.