Era "C" una vez

Cuando yo era estudiante y cuando fui profesor de Lenguajes de Programación en la universidad, el lenguaje que se usaba (y se usa hasta hoy) para introducir a los alumnos a la programación era C.

Ahora bien, hoy en día en el año 2016, ya no tengo tanta certeza de que esa sea la mejor opción. Es decir, en nuestros tiempos modernos ¿es realmente C el mejor lenguaje para aprender y para enseñar a un alumno a programar?

Para responder a esta pregunta, para mí hay que analizar qué es realmente lo más importante aprender cuando uno está dando sus primeros pasos como programador. ¿Es comprender cómo funciona la memoria y el procesador? ¿O es solucionar problemas de forma dinámica y usando para ello una computadora?

En mis primeros años de enseñanza de C yo estaba fielmente convencido de que lo más importante era entender la memoria, y por eso C era una excelente opción para aprender a programar. Después de más años bajo el cinturón de estar enseñando gente a programar, me estoy dando cuenta de que la situación actual demanda otro tipo de lenguaje.

Hoy en dia lo más importante es solucionar problemas de la forma más rápida posible, pensando acerca del dominio del problema y que la herramienta sea eso, una herramienta, y no algo más de lo que tengas que estar preocupándote.

Entonces, para dar los primeros pasos programando, hay que darle al alumno una herramienta sencilla que le permita comunicarse con la PC de una manera directa y obtener la respuesta que está buscando, sin tener que atravesar por tantos dolores de cabezas.

Para esto hoy en día tenemos una amplia gama de opciones geniales como JavaScript, Python, Ruby, etc. El lenguaje te tiene que permitir tener el trabajo hecho con relativamente poco esfuerzo. De lo contrario puede llegar a ser muy frustrante para el alumno. Se van a sorprender lo fácil que es para algunos jóvenes frustrarse con la programación, incluso aquellos que tienen mucho potencial y son inteligentes.

Desde la perspectiva de la didáctica, también usar otros lenguajes más dinámicos simplifican mucha explicación, y al mismo tiempo marea mucho menos al alumno. Como esta respuesta que da Pablo Santa Cruz en Quora, donde explica lo conveniente que es usar un lenguaje como Python y así evitar explicar muchas complejidades que no aportan mucho en etapas tempranas del aprendizaje del alumno.

Con todo esto por supuesto no estoy diciendo que aprender un lenguaje como C, no sea importante... ¡lo es! Y tremendamente importante. Pero la idea primordial es primero ser buenos solucionadores de problemas y luego como segundo paso, volvernos tan efectivos como podamos en ese menester. Y para eso obviamente no hay mejor opción que el glorioso lenguaje C :-).