lunes, 13 de junio de 2011

La Estética de Python

Hasta ahora, las pocas entradas de este blog han versado sobre aspectos técnicos de la programación en Python.  No es la idea de este blog orientarlo  exclusivamente a estos aspectos, pues sería muy árido.   Se podría decir que por esto he intercalado, casi de contrabando, algunas pinturas surrealistas aquí y allá, aunque al hacerlo, tampoco me he salido del aspecto técnico, pues el arte es en gran parte un asunto de técnica también y la programación es un arte.  Hay matemáticos que afirman que la buena matemática lo es también en un sentido estético- lo verdadero y trascendental tiene que ser hermoso.  Esto vale también para la programación, que también es una actividad matemática, si se quiere.   El buen código tiene que ser estéticamente agradable - esta es la premisa fundamental de Python.

  Mond Guter Dinge
Max Ernst

El código Python se caracteriza por la indentación- el uso de espacio en blanco al comienzo de una línea para indicar el nivel, bloque o estructura de control al cual corresponde esa línea.  Yo he usado la indentación en el código prácticamente desde que di mis primeros pasos con la programación estructurada en PASCAL.  Como ustedes sabrán, este lenguaje no obliga el programador a indentar, pero afortunadamente para mi, el libro con el cual aprendí PASCAL usaba esta convención de estilo.  Pronto me di cuenta de que esto era algo bueno porque el código era mucho más legible que el código en BASIC, lenguaje este con el que aprendí a programar.

En lenguajes más antiguos como FORTRAN, el espacio en blanco era importante para demarcar ciertas partes de una línea de código.  Concretamente, las primeras 5 columnas de la línea indicaban el número de línea (opcional), la sexta columna contenía una "C" si la línea era un comentario, etc., aunque no me acuerdo si era exactamente así y me da flojera buscarlo en google para verificar...  En el proceso de evolución de los lenguajes de programación, esta práctica fué abandonada a favor del uso de ciertas palabras reservadas para indicar el comienzo y el fin de un bloque de código en un programa (el begin y end en PASCAL).   Con el tiempo, lenguajes como C abreviaron esto aún más mediante el uso de braces (los signos de corchetes: {}).  De modo que algunos programadores consideraban el uso de la indentación de Python como un retroceso en la evolución de los lenguajes cuando este lenguaje fue creado.

En efecto, la misma sintaxis de Python obliga al uso de indentación- es un requisito, no una convención de estilo opcional.  ¿Y porqué importaría algo tan "frivolo" en la programación? En lo particular, en mi experiencia docente en cursos donde se utiliza la programación (he facilitado materias como "simulación y modelos", donde usamos extensivamente el lenguaje R, el cual por cierto no usa indentación), me he dado cuenta que un error de programación muy común para principiantes es el no cerrar una llave/corchete que se ha abierto, o cerrarla en el lugar incorrecto.  En Python, este tipo de error es imposible y este tipo de cosas hace la experiencia de aprender a programar mucho menos frustrante.  Al fin del día, se trata de reducir al máximo las cantidad de horas/programador necesarias para desarrollar un programa, y esto también es una premisa fundamental de Python.

¿Piensan los desarrolladores de Python ceder un poco con la indentación de Python e incorporar el uso de llaves (braces)?  Para responder esta pregunta, abra una consola de Python y teclee lo siguiente:

from __future__ import braces


No hay comentarios:

Publicar un comentario