18 agosto 2013

Como aprende a hablar un niño



Pasé de largo, estoy tan entusiasmado con lo de los cursos online de Udemy que me puse a areglar y subir el curso de Visual Basic Para Aplicaciones. Mi idea es que aprender un lenguaje de programacion es el mismo proceso mental que el de aprender cualquier lenguaje natural, es decir es lo mismo que cuando un bebe aprende a hablar.

Casi nadie se da cuenta lo maravilloso que es el proceso de aprender a hablar, es el logro intelectual más importante y seguramente el mas difícil de nuestra vida, todos los que hemos tratado de aprender un idiona extranjero sabemos los millones de sutilezas que existen en cada lenguaje natural, partiendo por el vocabulario. Dicen que hay que memorizar unas tres mil palabras para hablar un idioma en su nivel más básico y para hablar correctamente hay que tener decenas de miles de palabras en la memoria.

Lo asombroso es que un nño demora uno o dos años en aprender a expresarse correctamente, dominando incluso cosas tan complicadas como el doble sentido, las bromas y todas esas sutiles ambiguedades que muchos nunca llegamos a dominar en un idioma que no es el nativo- ¿Como lo hace un niño para aprender a hablar tan rápidamente? La creencia popular dice que tiene el cerebro "más despierto" o "más sensible" yo lo dudo, creo que los niños aprenden a hablar gracias a que nadie les enseña.

 Imaginen que los niños tuviesen que ir a la escuela a partir de los seis meses de vida y que la escuela especialistas pedagogos se encargaran de enseñarles a hablar con distintas metodologias, apuesto que llegarian a los seis años sin ser capaces de expresarse.

Claro, porque la metodologia lógica sería que memorizaran cierta cantidad de palabras cada día y después aprendieran las leyes de la gramática y sintaxis para poder unirlas con propiedad. Asi podrian pasar varios años antes de sr capaces de entablar una miserable conversación, porque el aprendizaje real rara vez es lógico o secuencial.

Aprendemos copiando, modificando y repitiendo, esa es la manera natural que tenemos de aprender, en grandes bloques de informacion desordenada -como las estupideces que le hablan los padres a los bebes. De esa forma el cerebro va armando patrones que poco a poco se van conectando, en teoría sería mucho más logico aprender de manera secuencial y ordenada: primero las palabras y luego las reglas que las unen, pero no es asi como funciona nuestro cerebro. El cerebro aprende a saltos "gleich alles suzammen" como escribió Mozart, "todo junto, de una sola vez".

El drama es que no es asi como enseñan ni como miden la capacidad de aprendizaje en las escuelas y universidades, por eso gran parte de lo que nos dicen en aulas se nos olvida a los quince minutos. La educacion formal debe ser uno de los procesos más ineficientes y antinaturales que existen.

Pensaba en todo esto a propósito de mi curso sobre VBA. La mayoría de los cursos para aprender un lenguaje de programación son horribles, empiezan con una maraña de definiciones y memorización de reglas que no sabemos para que diablos sirven y muchas veces nunca llegamos a saber. Yo quisiera enseñar tal como aprenden a hablar los niños: copiando y equivocándose, sin esfuerzo ni necesidad de memorizar, solo copiar, modificar, equivocarse, corregir y así sucesivamente. Claro que esa es mi idea, pero vaya a saber uno si la estoy aplicando de la manera correcta. En fin, cuando publique el curso se verá.

11 comentarios:

  1. Para eso no eran malos los primeros tiempos, cuando nos asombrábamos de diez sentencias en Basic que pedían dos números y nos devolvía la suma de ambos.
    Podíamos hacer ejercicios muy sencillos con eso y aprender la mecánica.
    Veo a un "nativo digital" como mi hijo, que programa un pequeño universo en su videojuego, y me imagino que no se rebajaría a escribir línea por línea una rutina que termine cargando unos cuantos datos, los archive, los devuelva cuando se lo pedimos, etc...
    Necesitarán cada vez más módulos que hagan tareas completas por ellos. Y por cierto, yo me preocupé muchos años por la cosa "física" de la computadora: el disco, etc... El grabado real de los datos. A ellos no les importa un bledo donde "están" los datos, como viajan. Lo aceptan tan natural como la lluvia.

    ResponderBorrar
  2. Ah Ulschmidt, los viejos tercios nos acordamos todavía cuando habían restricciones de memoria y 16 kilobytes era espacio más que suficiente para guardar programas y datos. Existe un movimiento de fanáticos en desarrollar aplicaciones en espacios de memoria que hoy se consideran imposibles.

    Pero toda moneda tiene dos caras, aunque hemos perdido control sobre los detalles, con todas esas capas de abstracción que hoy existen entre el programador y la máquina podemos hacer cosas que nunca antes soñamos. Yo me acuerdo que tenía una colección de ventanas programadas en QBasic para MS-DOS y después Windows apareció para simplificar todo eso, los programas hoy son mejores y dan más espacio a la creatividad desde que nos quitaron la necesidad de preocuparnos de los detalles mecánicos.

    Hoy se pueden programar juegos en los teléfonos y tablets Android sin escribir ni una línea de código solamente haciendo el diseño en alto nivel, creo que a los programadores les ha ampliado mucho el campo para "customizar" aplicaciones. Los siuticos le llaman "integración de la tecnología" yo creo que para allá va el futuro de la programación y serán las personas corrientes, no especialistas, los que integren dejando las aplicaciones mayores para grandes y aburridos equipos de trabajo que hacen el trabajo sucio.

    ResponderBorrar
  3. La programacion al hueso va quedando reducida a aplicaciones de tiempo real, microcontroladores y dsp.

    A todo esto

    leyest esto... casi palabra por palabra se las podemos aplicar a la gente de chile

    http://www.libremercado.com/2013-02-10/mauricio-rojas-europa-del-sur-y-el-desarrollo-67354/

    ResponderBorrar
  4. Claro Nervio, cuando los problemas son más o menos simples no hay problema en programar a nivel de máquina (y no me refiero a simples en el sentído de fáciles, sino de la cantidad de código que requieren).

    Muy bueno el artículo de Mauricio Rojas, ese tiene experiencia de primera mano.

    ResponderBorrar
  5. Cuando estudié en la Universidad y en primer año tuve que hacer el ramo de programación en C lo encontré atroz de aprender. Tanto que desinscribí el ramo y luego tomé programación en Pascal, que reprobé porque no me interesaba. Al final aprobé por segunda vez con un profesor que se dedicaba más a enseñar como se hacían los algoritmos con ejemplos concretos. Después cuando forzosamente tuve que aprender a programar en Matlab, en un semestre aprendí más de programación haciendo algoritmos yo mismo a prueba y error que lo que trataron de enseñarme en un pizarrón. Después al final los algoritmos ya me salían solos, como quien se abrocha los zapatos como si fuera acto reflejo.

    ResponderBorrar
  6. Claro Renzo, lo que cuentas muestra la relación con los lenguajes naturales, más que un conocimiento es una habilidad que nunca más se te olvida y después ves todas las cosas desde el enfoque del programador. Yo pasé como 10 años sin programar una sola línea y de un día para otro pasé a hacer uno de los mejores programas de mi vida y después a supervisar un proyecto de computación grande y muy complejo, ¡no se me había olvidado nada!, es como cuando aprendes a hablar.

    El C, C++ y su abuelo Pascal son difíciles de aprender justamente porque son muy estructurados, sirven para programadores que trabajan en galeras en grandes proyectos sin saber lo que hace el del lado. Curiosamente son mucho más sencillos de usar una vez que los aprendes, pero son básicamente inútiles para que un solo programador haga un sistema completo, por eso me cargan.

    ResponderBorrar
  7. Justamente asi es Tomás. Cuando tuve que hacer mis primeros algoritmos en Matlab, que tiene un lenguaje parecido a C, la sufrí bastante ya que solo habia aprobado programación en Pascal y los algoritmos de las pruebas y de clases eran más simples. Después de a poco a pura práctica le agarre el hilo y el gusto a la programación y terminaba haciendo casi todos los algoritmos con puros ciclos WHILE y con condicionantes IF-ELSE. Incluso una vez las vi negras durante todo un fin de semana resolviendo un ejercicio de interpolación Spline que no era nada de fácil. Había que usar funciones anidadas dentro del código principal y me costó un mundo dar con la tecla hasta que me salió. Fue el código programado que más me costó escribir. Todos los otros al final eran papita pal' loro

    ResponderBorrar
  8. Mathlab es el típica muestra de para donde van los lenguajes, customización a las necesidades con lenguajes de muy alto nivel pero flexibles, Visual Basic fue el primero en esa idea, creo que fue un tipo de apellido Cooper que lo inventó, genial, tiene fácil 20 años y sigue siendo estándar para aplicaciones comerciales y front-ends

    ResponderBorrar
  9. El artículo de Mauricio Rojas que menciona Nervio es característico de él . Le da a los países del sur de Europa con un caño, básicamente tratándolos de ignorantes y haraganes. Suele ser muy crítico del proceso argentino también, de hecho publicó un libro que se llama algo así como "Argentina, breve historia de un largo fracaso" donde en esencia nos describe como un caso perdido irremediable. Fue record de venta de su editorial varias semanas aquí porque mucha gente opina lo mismo.
    Volviéndo a los lenguajes: Hay profesionales que dependen de un sistema para casi todo y casi toda su vida. Hay software de arquitectura que dibujan, calculan, presupuestan. Hay paquetes para contadores que están más actualizados en cuestiones legales y normativas que sus operadores. El otro día fui a ver un agrimensor: su vida depende de un sólo programa de dibujo, cálculo, inscripción legal, etc...
    Quiero decir, si los programadores van a lo customizado, los profesionales que usan los programas sin tener casi idea de cómo funcionan parecen derivar a ser unos data-entry de sus software. Habrá notado que mucha gente, ante una consulta de tipo legal, normativo, lógica, operativa, intenta con el programa de gestión y si no puede dice "NO debe ser posible, porque no me deja hacerlo", o si. El tipo no va buscar un libro, ni llama para consultar a nadie, ni piensa. Si el programa se lo permite, debe ser posible, si no nada.

    ResponderBorrar
  10. Yo veo mi sobrino.. no tiene ni 4 años y ya me saca las llaves del auto y lo prende solo.

    ResponderBorrar
  11. Espérate que empiece a manejar con la caña nomás !!!

    ResponderBorrar

"Send me a postcard, drop me a line
Stating point of view
Indicate precisely what you mean to say
Yours sincerely, wasting away
Give me your answer, fill in a form
Mine for evermore
Will you still need me, will you still feed me
When I'm sixty-four"