Pregunta fascinante; Me gusta su énfasis en criterios objetivos. Queremos que los estudiantes de primer año aprendan:
conceptos de programación : el primer lenguaje de programación debe admitir: llamadas de función, iteración, recursión
ideas fundamentales : el primer lenguaje de programación debe admitir matrices (para los primeros pasos en una introducción suave sobre cómo funciona realmente la memoria y cómo funcionan los punteros)
habilidades prácticas de programación : cómo usar el depurador, cómo usar el generador de perfiles, cómo resolver problemas grandes (un lenguaje de alto nivel), cómo armar sistemas grandes, cómo desglosar problemas (descomposición de problemas), cómo evitar escribir código complicado, cómo comunicar a los humanos la intención detrás de una serie (a menudo críptica) de declaraciones ejecutables.
el hecho de que existen bibliotecas preescritas para cosas como sort () y cómo usarlas, es decir, el hecho de que no es necesario escribir todo desde cero.
Otros criterios para un primer idioma :
interpretado (la retroalimentación rápida ayuda al proceso de aprendizaje).
Un entorno interactivo que acelera el aprendizaje, las pruebas y la depuración.
el código fuente de alta calidad está disponible para que los estudiantes lo lean en ese idioma
"fácil de leer", "sintaxis que se acerca al lenguaje natural" (para que sea más fácil leer y calificar el código fuente)
portátil (se ejecuta en Mac OS, Windows, Unix). Al menos una implementación de software libre del lenguaje.
rápido para enseñar, "pocos problemas", por ejemplo, "[I] t puede ser más rápido enseñar primero a los principiantes Python y luego Java, en lugar de Java como primer OOPL". - "Comparación de lenguajes de programación orientados a objetos" y TelescopeRule
Matthias Felleisen desarrolló un lenguaje de programación con mensajes de error adaptados a un público principiante. Él enfatiza que la elección particular del idioma no es tan importante como enseñar una buena metodología de diseño. De hecho, ve el primer curso de CS como una clase de Artes Liberales, que enseña pensamiento crítico, resolución de problemas y atención al detalle.
criterios para un segundo lenguaje de programación
Cosas que queremos que los estudiantes aprendan, pero tal vez esto pueda esperar al segundo lenguaje de programación:
un lenguaje "relevante" que no es "demasiado esotérico"; algo "popular en la industria"
Teoría de la complejidad: cómo reconocer tareas que son imposibles con la tecnología actual.
cosas de nivel superior: cómo elegir la herramienta adecuada para el trabajo , cómo usar un compilador, estructuras, programación orientada a objetos, programación funcional, programación lógica, diseño del compilador, funciones de composición y manipulación (en el sentido de Lisp / ML), programación concurrente y distribuida,
cosas de bajo nivel: aritmética de punteros, arquitectura informática. administración de memoria, marcos de pila, programación de ensamblaje, arquitectura de la máquina, controladores de dispositivos y diseño del sistema operativo (para que la máquina "no parezca una caja negra aterradora que no puedan penetrar")
EDITAR: Me parece decepcionante que publicar un resumen de algo que escribí, en colaboración con muchos otros, "no sea una publicación legal".
Así que agrego una cita más formal a mi enlace informal anterior, intentando cumplir con el uso justo y otros problemas de derechos de autor de wiki.
Esta respuesta es un resumen del primer idioma de primer año (Anon 2011) en el Portland Pattern Repository.
(Anon 2011) Muchos autores anónimos y varios otros. "Primer idioma de Freshmans". Depósito de patrones de Portland. 27 de septiembre de 2011. http://c2.com/cgi/wiki?FreshmansFirstLanguage .