¿Por qué algunas escuelas no enseñan idiomas / marcos como Python o Ruby on Rails? ¿Deberían ellos?

Mencionó Python y Ruby en su pregunta, por lo que supongo que se pregunta por qué los lenguajes dinámicos generalmente no se enseñan en colegios y universidades. (si eso es lo que quieres decir con ‘escuelas’).

Para ser honesto: no tengo una buena respuesta. Cuando miras el TIOBE
El Índice de la comunidad de programación puede ver que, si bien los lenguajes de tipo estático ocupan los primeros lugares, PHP, Python, Perl, Javascript y Ruby han ocupado los rangos medios durante muchos años. Entonces, obviamente, hay un lugar para los lenguajes dinámicos en el mundo. Ousterhout argumentó el caso de los lenguajes de secuencias de comandos en 1998 [1].

Pero mi impresión es que en 2012 la mayoría de los programas de CS comienzan con Java o C / C ++; con una minoría haciendo primero Haskell u otros lenguajes funcionales. Vea también la discusión ‘Primer año de lenguajes de programación de informática’ en Stackoverflow.

Soy de una generación que típicamente aprendió uno de los lenguajes dinámicos BASIC o LOGO como su primer idioma. Entonces, me parece natural enseñar primero la programación con un lenguaje dinámico, y solo pasar a las complejidades de los tipos y la memoria después de dominar los conceptos básicos de la programación.

Ahora las buenas noticias: hay personas que usan lenguajes dinámicos:
Zelle ha estado presionando por Python como primer idioma desde al menos 1999 [2]. Guzdial estableció ‘Media Computation’ con Python como CS1 en Georgia Tech [3] y estudió los efectos [4]. Harward ofrece
CS50 con C, PHP y JavaScript más SQL, CSS y HTML (aunque todavía comienzan con C).

Cuando se trata de marcos como Ruby on Rails: enseñamos Ruby on Rails en nuestro programa BSc MultiMediaTechnology [5] en la Universidad de Salzburgo de Scinece Aplicado. Encontré otro programa en el que se enseña rubí sobre rieles: Ciencias de la computación [6] en la Universidad de Aberdeen. (Si conoce a otros: ¡dígamelo!)

Ahora a la segunda parte de la pregunta: Sí, deberían. Los lenguajes dinámicos son herramientas importantes del mundo real, especialmente en el desarrollo web. Son buenos primeros idiomas, porque le permiten aprender sobre algoritmos y estructuras de datos sin distraerse con sistemas de tipos demasiado complejos.

1) Ousterhout, John (marzo de 1998). “Scripting: programación de nivel superior para el siglo XXI”. IEEE Computer magazine .

2) Zelle, JM (marzo de 1999), ” Python como lengua materna ” Actas de la 13ª Conferencia Anual de Computación del Medio Oeste.

3) Guzdial, (2004) ‘Introducción a la computación y programación en Python, Un enfoque multimedia, 2 / E.Pearson education.

4) vea la lista de referencias de su artículo de wikipedia http://en.wikipedia.org/wiki/Mar…

5) http://multimediatechnology.at/i…

6) http://www.abdn.ac.uk/ncs/comput…

MIT enseña Python ( http://ocw.mit.edu/courses/elect …), aunque no Django o cualquier marco de Python … Al final del día, los marcos no requieren saber nada más allá del lenguaje, por lo que es mejor dedicar tiempo universitario a conceptos realmente diferentes (compiladores, sistemas operativos, gráficos, etc.).

Aunque inicialmente pensé que enseñar marcos como Ruby on Rails, etc. es una muy mala idea en las universidades, pensándolo bien, probablemente tengan mucho valor.

En primer lugar, enseñan conceptos básicos de programación rápidamente. Si no aprendiste nada más, tendrías una habilidad útil y ganarías algo de perspectiva.

En segundo lugar, estos marcos son profundos en conceptos como la metaprogramación. Pelando hacia atrás las capas, se puede enseñar a los estudiantes cómo estos conceptos de nivel superior potencian los marcos.

En tercer lugar, la discusión podría evolucionar a cuestiones como las limitaciones de un marco o un lenguaje. En este punto, uno puede introducir ideas como continuaciones, varios estilos asincrónicos, programación funcional.

De hecho, es probable que se cree un marco web educativo. Al igual que el esquema se utiliza con fines de instrucción, se puede armar un marco de programación que tenga todos los elementos CS para que cubran el programa de manera coherente.