Querido Ndugu,

Imagina que te digo que en italiano “¡Hola mundo!” se dice “Ciao mondo!”. O que en latín es “Ave mvnde!”. O que en turco es “Merhaba Dünya!”. O que en bosnio es “Zdravo Svijete!”. ¿Dirías entonces que ya sabes italiano, latín, turco o bosnio?.

Bueno, pues resulta que en el mundo de la programación, un poco sí pasa eso. Cuando uno empieza a aprender un lenguaje de programación nuevo, casi invariablemente, su primer programa es uno que simplemente muestra por pantalla la famosa frase “¡Hola mundo!”. Y con eso, hasta el infinito y más allá.

¿Se puede ser más optimista? Por un lado, tenemos una aplicación con un estado de ánimo envidiable que nada más nacer, feliz, saluda al mundo. Por otro lado, tenemos al programador que, al ver ese ataque de felicidad, llega a pensar que lo difícil ya está hecho, que si es capaz de tener un programa funcionando, puede hacer cualquier cosa.

Hay incluso recopilaciones del famoso programita en un montón de lenguajes distintos (por ejemplo aquí o aquí, este último incluso con la frase traducida a 63 lenguajes “humanos”). A modo de “piedra Rosseta”, estas recopilaciones parecen querer conservar para la posteridad todos esos lenguajes para que, en el hipotético caso de nuestra completa destrucción, alguien pueda ser capaz de averiguar, gracias a las equivalencias, lo que hace todo nuestro software.

¡Pues no! ¡Todo eso no es cierto! ¡Dejémonos de optimismos!

Si sabes decir “hola”, no significa que sepas decir “adiós” o “hasta luego”, y mucho menos “pienso luego existo” o “el hombre está condenado a ser libre”. No.

Si eres capaz de decir “hola”, tienes la demostración del caso base. Pero aquí no hay paso inductivo. No hay “siguiente programa”. Ni siguiente del siguiente. No puedes demostrar que eres capaz de pasar de un programa N dado al siguiente. No. Nunca llegarás al infinito por esa vía.

Ya sufrieron de ese mismo optimismo intentado demostrar el teorema de Fermat. Si resulta que la ecuación cn = an + bn no tiene soluciones no triviales para n > 2, basta con demostrarlo para n = 3, y luego ser capaz de ir de n a n+1. No funcionó. Así no era. Nunca llegarías al infinito de esa forma.

Por eso, desde aquí, grito al viento. ¡Estudiantes, si habéis entendido el if, aún no sabéis programar!. ¡Programadores, si habéis conseguido crear una tabla en una base de datos SQL Server, no significa que sepáis bases de datos! ¡Jefes, si vuestros empleados han creado un módulo en Dot Net Nuke, no significa que sean capaces de hacer un portal a tu gusto!

Saber echar cosas en una sartén no significa que sepas hacer paella.

Una Respuesta a “El optimismo de los programadores”

  1. Amén :)

    Lo curioso es que no creo que haya programa, por sofisticado que sea, que pueda servir como prueba de “haber aprendido un lenguaje de programación”… y como demuestras tú de vez en cuando con tus post… ni los que creemos saber programar en C++ realmente sabemos C++ al nivel que se puede saber ;)

© 2011 Teclarios Suffusion theme by Sayontan Sinha