Enseño hebreo, pero también soy competente en programación. Hay muchas coincidencias en las habilidades requeridas para la programación y el aprendizaje de idiomas, pero aún son muy diferentes.
Aprender un idioma, además de abrir al aprendiz a una nueva cultura (probablemente la razón más importante para aprender un idioma), puede enseñar cómo los sistemas pueden evolucionar y cómo se ven los sistemas evolucionados (a diferencia de los sistemas diseñados). Debido a que los lenguajes están formados por miles de años de historia, cualquier lenguaje humano es mucho más complejo y expresivo que cualquier lenguaje de programación. La gramática, la sintaxis y el vocabulario de cualquier lenguaje humano son mucho más grandes y más difíciles de dominar que los modismos de cualquier lenguaje de programación (incluso perl: D). Puede aprender un lenguaje de programación de arriba a abajo en cuestión de semanas (o días, con experiencia previa en programación), pero incluso el lenguaje humano más sencillo requiere años de estudio fuera de un estudio intensivo o un contexto de inmersión.
Las lenguas humanas también son mucho más abstractas y ambiguas. En un lenguaje de programación, una declaración tiene un solo significado para la computadora. Nunca hay ambigüedad. La computadora nunca tiene que decidir qué significa un comando. Hay algunos idiomas, como Perl, donde el contexto importa para la interpretación de una expresión determinada (Perl fue diseñado por un lingüista), aunque a veces se considera un defecto de diseño. Aún así, dentro del contexto, no es ambiguo para la computadora lo que significa la declaración. Solo puede significar una cosa. Contrasta esto con el lenguaje humano, donde casi cualquier expresión o palabra (o construcción sintáctica o forma morfológica) puede tener múltiples significados. El contexto generalmente deja claro el significado, pero la ambigüedad todavía abunda, por no decir nada del subtexto. Hay una sutileza en el lenguaje humano que es imposible, e incluso sería indeseable en un lenguaje de programación.
Al mismo tiempo, aprender un idioma extranjero no enseña lo que podría ser aprender un lenguaje de programación. La programación enseña lo que se supone que deben enseñar las matemáticas, pero a menudo no lo hace. Nos dicen que estudiamos álgebra o cálculo para aprender a resolver problemas, pero la mayoría de las personas aprenden a memorizar fórmulas que luego olvidarán. Los problemas de la historia, por supuesto, enseñan a resolver problemas.
La programación de computadoras es toda una historia de problemas. Tiene un conjunto finito de herramientas que se pueden componer infinitamente para aplicar a problemas complejos. La programación también enseña diseño y estrategia, hasta cierto punto. Resolver problemas difíciles requiere previsión y metodología. Las lenguas humanas como campos de estudio no están equipadas para enseñar esto.
Sin embargo, y lo digo como profesor de idiomas, creo que es más importante para los estudiantes aprender los rudimentos de la programación que para ellos aprender un idioma extranjero. Creo que las habilidades que enseña son más valiosas. En un mundo en el que cada vez más interactuamos con máquinas y programas de computadora afectan todos los aspectos de nuestras vidas, para bien o para mal, no creo que nadie deba ignorar cómo funciona esta tecnología. Cuando la gente ignora la programación, obtienes … bueno, ¡obtienes el Congreso de los Estados Unidos!
El aprendizaje de idiomas también es importante. Debería tener algunos créditos para graduarse, pero creo que la programación de computadoras debería integrarse profundamente en el plan de estudios de matemáticas, comenzando en la escuela primaria y continuando a lo largo.