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.
- ¿Deberían usarse las novelas de Hilary Mantel para enseñar a los estudiantes de historia sobre Enrique VIII?
- ¿Cómo se debe enseñar un curso básico de programación básica?
- ¿Cuál es el mejor programa de ortografía para adultos de habla inglesa no nativos?
- ¿Cómo tratan los profesores y profesores con los estudiantes que no les gustan?
- ¿Cuál es el mejor programa de enseñanza para ingresar después de graduarse de la universidad y por qué?
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.