Hacer algo o aprender algo nuevo debe hacerse de manera secuencial, para que pueda comprender el núcleo y de manera profunda …
Así es como lo haría:
- Python (o Ruby o Lua): Un lenguaje interpretado, sin tipos, puede hacer cosas en unas pocas líneas. Gran biblioteca (Python es mejor para esto, supongo). Puedes profundizar en los algoritmos porque no hay distracciones. No es necesaria ninguna compilación, solo corre. Además de eso, con Python, usted enseña de manera implícita un buen estilo, ya que la sangría en Python es obligatoria. También puede enseñar Orientación a objetos (en Lua hay más problemas). El propósito aquí es divertirse mucho y mostrar al alumno lo que se puede hacer.
- C ++ (o quizás Java): Un lenguaje rápido y escrito. Si necesitas Orientación a Objetos, entonces ya conoces algunos conceptos. La idea principal es “traducir” lo que hiciste en Python y hacerlo con las nuevas restricciones (principalmente tipos). Ahora, si tiene los conceptos correctos, agregar tipos no es un problema de este tipo. El siguiente paso es pensar en un nivel más bajo (Java no ayuda aquí) y enseñar bien los punteros. Con esto me refiero a explicar sobre el espacio de direcciones, la CPU, el SO, un poco para que pueda comenzar a ver debajo de su programa. Un lenguaje compilado introduce la distinción entre interpretación y compilación, muy útil para explicar qué es el lenguaje de máquina, etc., y así aprender otro lenguaje como HTML, JavaScript y muchos otros.