¿Por qué no utilizar un enfoque de Rosetta Stone para enseñar programación?

tl; dr: el aprendizaje solo con el ejemplo requiere que los ejemplos se parezcan a algo familiar, lo que dificulta su uso para enseñar a los programadores principiantes.

Según entiendo el enfoque sugerido, tiene como objetivo simular el aprendizaje de idiomas por inmersión total, es decir, aproximar el efecto de aprendizaje de ir a un lugar donde no se usa ningún otro idioma, y ​​aprenderlo interactuando con el entorno. Cualquiera que lo haya intentado probablemente dará fe de que esta es una forma increíblemente efectiva de aprender idiomas naturales, ciertamente lo haré. Creo que hay dos cosas que evitan que esto sea una forma efectiva de instruir a los programadores.

Creo que parte de la razón por la que funciona tan rápido es que, como seres sociales, en cierta medida estamos naturalmente predispuestos a aprender idiomas de esa manera, es lo que hacen los niños para aprender su primer idioma. Mientras agita las manos y gesticula para explicar la intención detrás de una palabra que falta, la respuesta inmediata de los hablantes nativos le enseña no solo la palabra (al final), sino en el camino, un millón de pequeñas cosas sobre cómo se interpretan sus intentos y malinterpretado, porque el oyente participa activamente en querer entender lo que está tratando de comunicar. Las computadoras no hacen eso, y este es mi punto # 1 sobre por qué aprender un lenguaje de programación es diferente de aprender, por ejemplo, portugués o swahili, y puede no ser susceptible a los mismos métodos.

El otro punto es que cuando estás aprendiendo un idioma natural a través de un curso, ya conoces al menos uno de antes. Incluso en un entorno en el que no está permitido usarlo para un lenguaje básico con explicaciones, aún significa que está comenzando con una idea bastante clara de qué tipo de cosas puede decir la gente con los lenguajes naturales. Puede darse cuenta de que habrá palabras como “yo mismo”, “agua”, “indagación”, “propósito”, “significativo” y miles de otros conceptos con los que está familiarizado debido a que ya es un hablante fluido de su madre. lengua. Los programadores principiantes vienen con poca preparación en cuanto a lo que pueden decir, y tal vez incluso menos de lo que quieren decir. Simultáneamente con el aprendizaje del vocabulario, la sintaxis y la semántica de lo que escriben, también deben aprender qué es un montón, qué diferencia las listas enlazadas individualmente de las listas doblemente enlazadas, cómo construir un árbol, por qué es posible que desee atravesarlo en el postorder etc.

La pregunta publicada es doble: creo que es posible enseñarle a alguien a programar usando solo ejemplos, respuestas y recompensas. Alguien que nunca haya programado antes podría aprenderlo de esta manera, de hecho, creo que es posible enseñar programación entregando una computadora y un problema, y ​​golpeando a los estudiantes con un palo redondo hasta que se resuelva el problema. Las personas se adaptan increíblemente a sus condiciones.

El primero será un método más eficiente que el segundo, pero no creo que ninguno de ellos sea ideal, y esa es mi respuesta a ‘por qué no usar un enfoque de Rosetta Stone’. Tener un lenguaje de instrucción (natural) admite explicaciones que pueden conectar las abstracciones de la programación con conceptos que el estudiante ya conoce bien. Explicar una pila como un mazo de cartas enseña su función casi al instante, martillándola en casa mostrando dos funciones, una matriz dinámica y una variable de contador pueden permitir que esa implementación sea memorizada, pero deja cada intuición para su propósito como un ejercicio difícil para el lector.

En mi experiencia limitada, la herramienta más efectiva que he encontrado para mantener el valor de un auditorio comprometido con los recién llegados, es nunca perder de vista explicar para qué quieren usar el material enseñado en la práctica. A pesar de todas sus similitudes, los lenguajes de programación no son exactamente como los lenguajes naturales, por lo que si desea aprovechar nuestra fantástica capacidad innata para absorber la variedad natural de manera efectiva, realmente creo que necesita usar explicaciones de lenguaje natural para aprovecharla.

La programación es mucho más que “ingresar esto, generar aquello”. Entonces, aunque alguien literalmente podría aprender a programar de esa manera, no aprenderían a programar nada de importancia.

De la misma manera que seguir un conjunto de recetas no te convierte de repente en un chef. De hecho, estás cocinando y haciendo cosas similares a las que hacen los chefs, pero no merece ser llamado chef (con todo lo que ese título implica). Aparte de ser extremadamente rudimentario.

Esto funcionaría para mi, mi cerebro absorbe la información de una manera diferente. Sería genial para enseñar cosas como CSS o hojas de estilo en cascada para el desarrollo web, ya que las imágenes podrían mostrar la acción; movimiento; transición o color, etc. ect, o incluso animación de JavaScript dentro del contexto de una etiqueta HTML 5 Canvas.

Sé que mi respuesta no es tan profunda como algunas, solo quería decir que fue una buena idea para un disléxico / dispráxico que nunca se dará por vencido en la programación. Buena navidad a todos !!