Aprenda a codificar con Thonny, un IDE de Python para principiantes

Aprender a programar es difícil. Incluso cuando finalmente acierta con los dos puntos y los paréntesis, todavía existe una gran posibilidad de que el programa no haga lo que pretendía. Por lo general, esto significa que pasó por alto algo o entendió mal una construcción del lenguaje, y necesita ubicar el lugar en el código donde sus expectativas y la realidad divergen.

Los programadores suelen abordar esta situación con una herramienta llamada depurador, que permite ejecutar su programa paso a paso. Desafortunadamente, la mayoría de los depuradores están optimizados para uso profesional y asumen que el usuario ya conoce muy bien la semántica de las construcciones del lenguaje (por ejemplo, la llamada a una función).

Thonny es un IDE de Python para principiantes, desarrollado en Universidad de Tartu Estonia, que adopta un enfoque diferente ya que su depurador está diseñado específicamente para aprender y enseñar programación.

Aunque Thonny es adecuado incluso para principiantes, esta publicación está destinada a lectores que tienen al menos algo de experiencia con Python u otro lenguaje imperativo.

Empezando

Thonny está incluido en Fedora repositorios desde la versión 27. Instálelo con sudo dnf instale thonny o con una herramienta gráfica de su elección (como Software).

Al iniciar Thonny por primera vez, hace algunos preparativos y luego presenta un editor vacío y el shell de Python. Copie el siguiente texto del programa en el editor y guárdelo en un archivo (Ctrl+S).

                      n = 1
while n < 5:
    print(n * "*")
    n = n + 1
                    

Primero ejecutemos el programa de una sola vez. Para esto presione F5 en el teclado. Debería ver aparecer un triángulo hecho de puntos en el panel de shell.

Un programa simple en Thonny

¿Python simplemente analizó su código y entendió que quería imprimir un triángulo? ¡Vamos a averiguar!

Comience seleccionando “Variables” en el menú “Ver”. Esto abre una tabla que nos mostrará cómo Python gestiona las variables del programa. Ahora ejecute el programa en modo de depuración presionando Ctrl+F5 (o Ctrl+Shift+F5 en XFCE). En este modo, Thonny hace que Python haga una pausa antes de cada paso que da. Debería ver la primera línea del programa rodeada de un cuadro. Llamaremos a esto el foco e indica la parte del código que Python ejecutará a continuación.

Enfoque del depurador de Thonny

Enfoque del depurador de Thonny

El fragmento de código que ve en el cuadro de enfoque se llama instrucción de asignación. Para este tipo de declaración, se supone que Python evalúa la expresión de la derecha y almacena el valor con el nombre que se muestra a la izquierda. Presione F7 para dar el siguiente paso. Verá que Python se centró en la parte derecha de la declaración. En este caso, la expresión es realmente simple, pero para generalizar, Thonny presenta el cuadro de evaluación de expresiones, que permite convertir expresiones en valores. Presione F7 nuevamente para convertir el literal 1 en el valor 1. Ahora Python está listo para hacer la asignación real: presione F7 nuevamente y debería ver la variable n con el valor 1 aparecer en la tabla de variables.

Thonny con tabla de variables

Thonny con tabla de variables

Continúe presionando F7 y observe cómo Python avanza con pasos realmente pequeños. ¿Se ve como algo que entiende el propósito de su código o más como una máquina tonta que sigue reglas simples?

Llamadas de función

La llamada de función es un concepto de programación que a menudo causa mucha confusión a los principiantes. En la superficie no hay nada complicado: le das un nombre a un código y lo mencionas (llámalo) en otro lugar del código. Los depuradores tradicionales nos muestran que cuando entras en la llamada, el foco salta a la definición de la función (y luego vuelve mágicamente a la ubicación original). ¿Es toda la historia? ¿Necesitamos cuidarnos?

Resulta que el “modelo de salto” es suficiente solo con las funciones más simples. Comprender el paso de parámetros, las variables locales, la devolución y la recursividad se benefician de la noción de marco de pila. Afortunadamente, Thonny puede explicar este concepto de manera intuitiva sin esconder detalles importantes debajo de la alfombra.

Copie el siguiente programa recursivo en Thonny y ejecútelo en modo de depuración (Ctrl+F5 o Ctrl+Shift+F5).

                      
                        def
                      
                       factorial(n):
    
                      
                        if
                      
                       n == 0:
        return 1
    
                      
                        else
                      
                      :
        return factorial(n-1) * n

print(factorial(4))
                    

Presione F7 repetidamente hasta que vea la expresión factorial (4) en el cuadro de enfoque. Cuando da el siguiente paso, ve que Thonny abre una nueva ventana que contiene el código de función, otra tabla de variables y otro cuadro de enfoque (mueva la ventana para ver que el antiguo cuadro de enfoque todavía está allí).

Thonny recorriendo una función recursiva

Thonny recorriendo una función recursiva

Esta ventana representa un marco de pila, el área de trabajo para resolver una llamada de función. Varias ventanas de este tipo una encima de la otra se denominan pila de llamadas. Observe la relación entre el argumento 4 en el sitio de la llamada y la entrada n en la tabla de variables locales. Continúe avanzando con F7 y observe cómo se crean nuevas ventanas en cada llamada y se destruyen cuando se completa el código de función y cómo se reemplaza el sitio de la llamada por el valor devuelto.

Valores vs referencias

Ahora hagamos un experimento dentro del shell de Python. Comience escribiendo las declaraciones que se muestran en la captura de pantalla a continuación:

Concha Thonny que muestra mutación de lista

Concha Thonny que muestra mutación de lista

Como puede ver, agregamos a la lista b, pero la lista a también se actualizó. Es posible que sepa por qué sucedió esto, pero ¿cuál es la mejor manera de explicárselo a un principiante?

Cuando enseño listas a mis alumnos, les digo que he estado mintiendo sobre el modelo de memoria de Python. En realidad, no es tan simple como sugiere la tabla de variables. Les digo que reinicien el intérprete (el botón rojo en la barra de herramientas), seleccionen “Montón” en el menú “Ver” y vuelvan a hacer el mismo experimento. Si hace esto, verá que la tabla de variables ya no contiene los valores, en realidad viven en otra tabla llamada “Montón”. El papel de la tabla de variables es en realidad mapear los nombres de las variables a las direcciones (o ID-s) que se refieren a las filas en la tabla del montón. Como la asignación cambia solo la tabla de variables, la declaración b = a solo copia la referencia a la lista, no la lista en sí. Esto explica por qué vemos el cambio a través de ambas variables.

Thonny en modo montón

Thonny en modo montón

(¿Por qué pospongo decir la verdad sobre el modelo de memoria hasta el tema de las listas? ¿Python almacena las listas de manera diferente en comparación con los flotantes o las cadenas? ¡Continúe y use el modo heap de Thonny para averiguarlo! Cuénteme en los comentarios qué piensa !)

Si desea comprender el sistema de referencias más profundamente, copie el siguiente programa a Thonny y haga un pequeño paso (F7) a través de él con la tabla de montón abierta.

                      
                        def
                      
                       do_something(lst, x):
    lst.append(x)

a = [1,2,3]
n = 4
do_something(a, n)
print(a)
                    

Incluso si el “modo montón” nos muestra una imagen auténtica, es bastante incómodo de usar. Por esta razón, le recomiendo que ahora vuelva al modo normal (deseleccione “Montón” en el menú Ver), pero recuerde que el modelo real incluye variables, referencias y valores.

Conclusión

Las características que mencioné en esta publicación fueron la razón principal para crear Thonny. Es fácil formarse conceptos erróneos sobre las llamadas a funciones y las referencias, pero los depuradores tradicionales realmente no ayudan a reducir la confusión.

Además de estas características distintivas, Thonny ofrece otras herramientas para principiantes. Por favor, mire a su alrededor página de inicio de thonny ¡aprender más!

Related Posts