Programación Avanzada
Te damos la bienvenida al curso de Programación Avanzada del Instituto Balseiro. En este sitio encontrarás el material del curso (a veces en castellano, a veces en inglés). El único requisito es estar familiarizado previamente con algún lenguaje de programación.
El curso apunta a exponer al estudiante a un lenguaje de programación funcional. En esta versión del curso, se utiliza F#. Sin embargo, no se trata exclusivamente de un curso para aprender un lenguaje, ya que visitaremos otros aspectos de la programación que son relevantes y pueden practicarse con cualquier lenguaje. Tocaremos algunos temas de diseño de software y de técnicas de programación. Por otra parte, repasaremos fundamentos formales de la programación funcional, para poner en contexto este paradigma.
Aspectos prácticos
Links
La documentación del curso está acá.
Para empezar, podemos programar en F# en Fable Repl.
Git
Para participar activamente del curso, es necesario tener una cuenta en GitHub. Tanto la entrega de ejercicios como el feedback sobre los mismos se realizará en esa plataforma, utilizando la aplicación git
. Si bien el cursado de la materia requerirá sólo los comandos básicos, puede resultar útil tener más conocimiento
del tema. Acá se puede encontrar una guía completa sobre git
.
Una vez que se cree el usuario en GitHub, envíe esa información a flavio.colavecchia@ib.edu.ar así se le incluye en el curso.
Si no le gusta usar la terminal, puede descargarse GitHub Desktop. Veremos su uso en clase.
Editor
Para cualquier lenguaje moderno es necesario contar con un editor potente que permita manejar las distintas capacidades de edición actuales. Tanto Visual Studio Code como JetBrains Rider son los editores recomendados. Mientras que el primero ofrece un entorno local y una versión web que no requiere de instalación; el segundo es un editor pago, pero que puede usarse gratis para educación.
En el curso usaremos Notebooks, de modo tal que ser recomienda utilizar Visual Studio Code.
Textos
Eventualmente se pedirá la entrega de algún ejercicio escrito que no sea un programa. Para ello utilizamos Markdown que posee una sintaxis simple, aunque permite agregar ecuaciones
$$f(g(x)) = g(x)+1$$
que se ven así: \(f(g(x)) = g(x)+1.\)
Videos
En este momento del siglo XXI, no hay manera de escapar a la información que viene en videos. Aquí hay una lista de videos asociados a los temas de la materia.
Jupyter notebooks
Veremos esto a partir de la clase 1.
El curso está estructurado como una colección de Jupyter Notebooks Políglotas. Un Jupyter Notebook es una aplicación sencilla que permite ejecutar bloques de código en celdas, que pueden entrelazarse con texto, gráficos, matemáticas, etc. El cuaderno se conecta a un kernel que se encarga de ejecutar el código, y se ejecuta en un navegador web. El lenguaje más popular utilizado en los notebooks es Python, sin embargo, se pueden usar muchos lenguajes diferentes. Un cuaderno políglota incluye la posibilidad de ejecutar varios lenguajes, entre ellos F#.
Inicio rápido
Para ejecutar las lecciones tal como están, simplemente abre este repositorio en MyBinder:
Dale un poco de tiempo y esto abrirá los cuadernos en tu navegador web.
Abre el que prefieras, verifica que el Kernel
en el lado derecho esté correctamente seleccionado:
Detectará automáticamente .NET C#,
pero ese no es el lenguaje que estás buscando:
Y estás listo para comenzar.
Haz tu copia (Fork it)
Si quieres experimentar con las guías, hacer los ejercicios, etc., es mejor obtener tu propia copia de este repositorio haciendo fork.
Usando Binder para ejecutar tu repositorio
Una vez que hagas fork del repositorio, ve a MyBinder. Llegarás a esta página:
Copia la URL de tu repositorio bifurcado en el campo GitHub
, y puedes dejar en blanco los campos Git ref
y Path to a notebook
. Haz clic en launch
` y espera un momento hasta que MyBinder haga su magia.
Una vez abierto el Binder, haz clic en el directorio es
(en español) o en
(versión en inglés) en el panel izquierdo, y verás todos los cuadernos disponibles.
Sigue las instrucciones anteriores para seleccionar el kernel de F#.
Instalando el toolchain
Si bien en las primeras clases utilizaremos alguno de los entornos web para iniciarnos en la programación en F#, es conveniente ir acercándose al juego completo de herramientas. Para poder utilizar F# en Jupyter notebooks, seguir estas instrucciones para instalar Polyglot Notebooks.
Windows
Muy sencillo, las instrucciones están aquí.
Ubuntu 22.04
Para instalar el toolchain en ubuntu 22.04, es necesario seguir algunos pasos detalladamente.
- Remover versiones anteriores de .NET instaladas quizás desde los paquetes nativos de ubuntu.
- Como Polyglot Notebooks es compatible con .NET 8.0, que requiere ser instalada manualmente en esta versión de ubuntu.
# Update packages
sudo apt update
- Luego instalar el SDK con
sudo apt install dotnet-sdk-8.0
- Finalmente, abrir VSCode e instalar la extensión Polyglot Notebooks. La misma extensión instalará una versión compatible de .NET interactive, que provee los kernels de .NET para Jupyter.
Cronograma
- Intro a la programación funcional
- Nociones básicas de F#, inmutabilidad, tipos básicos.
- Ejemplos de funciones
- Composición
- Aplicación parcial