- En un curso de programación de 12 sesiones para estudiantes de secundaria, se eligió Forth, un lenguaje concatenativo basado en pila surgido en 1970, para enfocarse en conceptos básicos más que en la sintaxis
- Después de realizar directamente la estructura LIFO y las operaciones con platos de papel, se pasó a la computadora, para que los estudiantes entendieran con el cuerpo cómo funciona el intérprete de Forth
- Se usó Easy Forth, que no requiere instalación, y se propusieron como proyecto final dibujos, animaciones o juegos; los estudiantes cambiaron las reglas y los colores de Snake o completaron obras a nivel de píxel
- Forth tiene poca carga sintáctica, pero los principiantes tuvieron que manejar desde temprano estructuras de bajo nivel como la pila, y es posible que Scratch, con retroalimentación visual inmediata, hubiera sido mejor para un curso introductorio
- Más que un lenguaje específico, lo importante es un entorno donde se puedan ver resultados rápido y explorar por cuenta propia; cuanto mayor sea el riesgo de no aprender o no mantener habilidades por depender de los LLM, más necesaria será una educación centrada en las personas
Por qué elegir Forth
- En lugar de Python o Scratch, se eligió Forth, un lenguaje concatenativo basado en pila, para explorar una ruta educativa poco habitual
- Se quería evitar la carga de enseñar sintaxis para poder tratar conceptos básicos dentro del tiempo limitado del curso
- Python puede leerse como pseudocódigo para quien ya programa, pero para alguien que aprende por primera vez seguía siendo difícil de entender
- Los lenguajes candidatos fueron Forth y Haskell
- Forth resultaba atractivo porque ejecuta las instrucciones en el orden en que se escriben, así que, entendiendo la pila, ya se podían construir programas
- Haskell encajaba bien con las ideas de variables y funciones que se aprenden en matemáticas, y permitía evitar la confusión de la programación habitual que trata las variables como cajas que contienen valores
- Al final se eligió Forth por dos razones
- Era fácil de integrar en un entorno de aprendizaje personalizado
- Para la demostración final en clase, se consideró que la programación procedimental sería más fácil de entender que la programación funcional
- Usar un lenguaje poco conocido permitía que incluso los estudiantes con experiencia previa aprendieran algo nuevo, sin dejar de lado a los principiantes
Diseño del curso de 12 horas
- El curso se impartió una vez por semana, una hora por sesión, durante un total de 12 sesiones, y no se esperaba que los estudiantes hicieran muchas tareas fuera de clase
- El objetivo final era crear por cuenta propia un dibujo, una animación o un juego en el entorno de Forth
- Se quería que, incluso después de terminar el curso, quedara un resultado visible y conservable
- Se buscaba evitar la situación de sentir que se aprendió mucho contenido técnico pero no quedó nada tangible en las manos
- Como cada estudiante tenía un sistema operativo distinto y algunos equipos no permitían instalar software externo, el código debía poder ejecutarse en sus propias computadoras sin descargas ni instalación adicional
- Al principio se pensó en implementar Forth directamente en Rust e incrustarlo en el sitio web del curso con WASM, pero corregir los errores tomó más tiempo del esperado y se cambió el plan
- Se adoptó Easy Forth de Nick Morgan como currículo e intérprete, y se subieron a un portal en línea las diapositivas de cada sesión, el plan de clase y una copia de Easy Forth
Una clase que empezó desde el concepto de computadora
- En la primera sesión se comenzó con la historia de la computación y con qué es una computadora
- Se mostraron varios dispositivos, incluido un ábaco, y se preguntó si eran computadoras, para luego definir una computadora como “cualquier cosa que calcula números”
- Con esa definición, casi cualquier cosa podía ser una computadora, e incluso los propios estudiantes podían entrar en esa categoría
- Después de ampliar la idea previa que tenían sobre el alcance de una computadora, se presentó Forth, sus usos reales y sus aplicaciones embebidas
- Easy Forth asumía que el lector ya conocía al menos un lenguaje de programación y la estructura de datos de pila, pero los estudiantes no tenían ese conocimiento, por lo que hizo falta una explicación aparte
La pila de datos entendida con platos de papel
- Antes de usar la computadora, se visualizó con platos de papel la pila de datos que es la base de Forth
- Los números separados por espacios entran en la pila en el orden en que se escriben
- Si se ingresa
1 2 3y luego se imprime con. . ., los elementos salen empezando por el último que entró, dando3 2 1 - La pila es una estructura Last-In First-Out, que funciona en torno a poner elementos arriba con push y sacarlos desde arriba con pop
- Si se ingresa
- Cada estudiante recibió platos de papel para ejecutar directamente operaciones de Forth
- Al hacer push de un número, lo escribían en un plato y lo colocaban arriba
- Al sumar, sacaban los dos platos superiores, sumaban sus valores y colocaban un plato nuevo con el resultado escrito
8 6 +es una operación en la que se introducen dos valores, se suman y se coloca14en la pila2 3 *coloca en la pila el resultado de multiplicar ambos valores,6
- Repitiendo varias operaciones, los estudiantes asumieron directamente el papel del intérprete de Forth
- Después de entender que la computadora automatiza ese trabajo, se pasó al dispositivo real
Práctica con Easy Forth y proyecto final
- Cada semana se siguieron las lecciones de Easy Forth para explicar conceptos, resolver ejercicios y hacer preguntas y respuestas, y todo el proceso avanzó sin problemas especiales
- Para tener un proyecto final que mostrara lo aprendido dentro de las 12 horas totales, se aprovechó el framework gráfico de Easy Forth
- Así podían crear un dibujo, una animación o un juego
- Como tal vez no alcanzaría el tiempo para completar un juego nuevo, se les animó a modificar el juego Snake integrado para producir un resultado original
- El código del playground de Easy Forth se extrajo a una página aparte y se amplió para mostrar el código a un lado y un área gráfica grande al otro
- En la última clase, los estudiantes descubrieron rápidamente que con pequeños cambios en el código de Snake podían cambiar sus reglas y colores
- No estaban al nivel de hacer grandes refactorizaciones, pero ya se sentían lo bastante cómodos con Forth como para explorarlo y modificarlo sin miedo
- Se les mostró cómo dibujar objetos con los gráficos integrados y cómo crear nuevas palabras para trazar fácilmente figuras como líneas
- Todos los estudiantes eligieron hacer su propia obra, y la mayoría creó dibujos a nivel de píxel
- El entorno se mantuvo en línea por un tiempo para que, si querían, pudieran seguir experimentando y aprendiendo incluso después de terminado el curso
Lo aprendido al enseñar Forth
- Forth fue un lenguaje educativo interesante, pero no estaba claro que hubiera sido la mejor opción
- No tenía una sintaxis complicada, pero obligaba a los principiantes a pensar directamente en elementos del sistema que muchos programadores suelen dejar ocultos bajo capas de abstracción
- La pila es una estructura de datos básica de la informática, pero no necesariamente tiene que estar al frente de la enseñanza inicial
- La posibilidad de escribir código como una secuencia de palabras era poderosa, y otros lenguajes concatenativos con componentes de más alto nivel también podrían ser útiles en educación
- Lenguajes como Factor u otros enfoques completamente distintos también podrían ser candidatos
- Si se volviera a elegir, podría considerarse un medio centrado más en una retroalimentación visual clara e inmediata que en la estructura interna
- Scratch permite enseñar flujo de control, variables y funciones sin detalles de bajo nivel, además de mover sprites fácilmente
- El lenguaje de programación en sí no es tan importante, y aun en un curso corto los estudiantes pudieron aprender Forth de manera efectiva
- El paradigma que mejor le funciona a cada estudiante puede variar, por lo que es difícil ajustar el proceso de aprendizaje con total precisión
- Lo importante es un entorno en el que puedan ver resultados rápida e iterativamente y explorar de manera autodirigida
- Los estudiantes obtuvieron una experiencia introductoria de bajo nivel que les permitió comprender a fondo una estructura de datos fundamental de la informática
- Para quien impartió la clase, también fue una oportunidad de mejorar la metodología del mismo modo de práctica repetida que se pidió a los estudiantes
Aprendizaje centrado en las personas en la era de los LLM
- Cuanto más esté impulsada la programación por la automatización probabilística, más importante será enseñar a las personas a programar directamente
- Incluso quienes ya saben programar pueden ver deterioradas sus habilidades si dependen de los LLM, y quienes nunca aprendieron podrían no llegar a formar esas habilidades en absoluto
- También está aumentando el número de personas que, al intentar aprender una habilidad nueva, recurren a los LLM en lugar de materiales confiables
- Los LLM pueden ser inexactos, tener una tendencia a halagar al usuario y, en algunos casos, agravar seriamente trastornos mentales
- Para niños que están en la etapa de aprender a interactuar con el mundo, estas características son aún más peligrosas
- Debemos ofrecer un entorno centrado en las personas donde cualquiera, especialmente los niños, pueda aprender habilidades como la programación sin importar su contexto
- Hace falta que personas de distintos orígenes dediquen tiempo y energía a compartir conocimiento, y que también enseñen cómo obtener conocimiento adicional de forma segura
- Incluso sin ser docentes profesionales, hay que aprender a enseñar y crear espacios donde el conocimiento fluya libremente entre personas
1 comentarios
Comentarios en Lobste.rs
Easy Forth parece un buen recurso, y recomiendo que todo programador invierta aunque sea 10 minutos en probar Forth. Es un lenguaje muy simple de aprender, pero a la vez familiar y capaz de sacudir tu forma de pensar; además, es fácil de implementar cuando necesitas crear rápidamente un lenguaje de alto nivel desde cero.
DOES>no lo son.Implementar Forth fue divertido, pero mientras más código escribía, menos me gustaba. Por palabras de ruido como
DUP,ROTySWAP, se vuelve difícil seguir el flujo, y además tiende a fomentar el uso de variables globales, algo que no prefiero.https://archive.ph/0ZOVa