7 de julio de 2010

print('¡Hola mundo!')

Bienvenidos al blog EduPython. Este es un espacio destinado a promover el uso del lenguaje Python para enseñar a resolver problemas.

En las universidades de México y gran parte del mundo, los maestros de los primeros cursos de programación nos hemos enfocado mucho a enseñar las idiosincrasias de lenguajes como Java o C++, pero poco a desarrollar la habilidad de resolver problemas. Esto es desafortunado, ya que los lenguajes se ponen de moda y luego unos años después son olvidados (¿alguien todavía usa o enseña Pascal?), pero la capacidad de resolución de problemas es una habilidad que sirve para toda la vida. Como educadores, debemos hacer lo que esté a nuestro alcance para remediar esta situación, y considero que usar el lenguaje Python es un paso importante en esta dirección. Y esta es la razón principal por la que me atrevo a asegurar lo anterior: Python impone una “baja carga cognitiva” en el estudiante. Esto significa que es relativamente fácil convertir a un programa las ideas necesarias para resolver un cierto problema.

Alan Kay, uno de los inventores de la programación orientada a objetos y del lenguaje Smalltalk, expuso este concepto muy claramente1:
Las cosas sencillas deben ser fáciles y las cosas difíciles deben ser posibles.
Veamos uno de los ejemplos más sencillos: el clásico programa que imprime ¡Hola mundo! en la pantalla. En Python se puede expresar en una sola línea de código:
print('¡Hola Mundo!')
En cambio en Java, el mismo programa es mucho más elaborado:
public class Hola {
   public static void main(String[] args) {
       System.out.println("¡Hola mundo!");
   }
}
Para un programa tan trivial, ¿realmente necesita un principiante saber qué es una clase, qué es un modificador de acceso público, qué es un arreglo de cadenas de caracteres, o dónde tienen que ir las llaves y los puntos y comas? Las veces que yo he tenido que enseñar Java en el primer semestre hago lo siguiente: les digo a mis alumnos que acepten este programa como “acto de fe”, y les prometo que todas las cosas se irán aclarando durante el transcurso del semestre. Y esto no es del todo cierto, ya que ni siquiera llegamos a cubrir lo que son los métodos estáticos.

La complejidad del código del lenguaje Java (o C++, C#, etc.) se puede justificar en el contexto de desarrollo de software a gran escala. Pero en programas pequeños, como los que hace un alumno que empieza a programar, tanto embrollo simplemente es contraproducente. Desde luego, los estudiantes de las carreras de TI deben conocer Java (o C++, C#, etc.) para ser competitivos en la industria, mas no necesitamos imponerles esta carga desde su primer curso. Si queremos que desarrollen la lógica para resolver problemas de programación, vale la pena considerar al menos lo que Python nos puede ofrecer.


Referencia:

1 http://en.wikiquote.org/wiki/Alan_Kay

1 comentario: