1. Smalltalk
Diseñado originalmente al menos en parte como una forma para que los niños usen computadoras para aprender. La sintaxis es lo suficientemente simple como para describirla en un párrafo. Al igual que LOGO, ejemplifica el principio de "barrera de entrada baja, techo alto".
Smalltalk es un lenguaje OO puro en el sentido de que "todo es un objeto".
También enseña muchas técnicas funcionales, particularmente en su API de recopilación: encadenamiento de mensajes, funciones de orden superior, asignación, reducción, etc.
La comunidad Squeak es vibrante y acogedora. También verá muchas discusiones sobre técnicas avanzadas: al igual que la comunidad lisp, hay muchos Smalltalkers con mucha experiencia en la lista de correo dispuestos a compartir sus conocimientos. (No hace daño que la comunidad Squeak tenga una gran subpoblación de educadores profesionales). También hay otra lista para principiantes.
2. PROLOG
Un lenguaje de programación lógica que le dará una visión muy diferente de la computación a casi cualquier otro lenguaje. Prolog también es altamente declarativo (pero no completamente: el !
operador or cut puede tener un efecto semántico significativo en un predicado).
3. Lisp común
Sustituya el esquema aquí si lo desea. Common Lisp es compatible con múltiples paradigmas, especialmente OO y funcional. También tiene una larga historia (Lisp es el segundo idioma más antiguo aún utilizado: solo el más antiguo de FORTRAN).
4. Haskell
(Advertencia: Acabo de empezar a aprenderlo). Probablemente el lenguaje funcional más puro del planeta. Tiene un sistema de tipo estático muy avanzado. Existen prácticos libros de introducción .
5. C o Delphi
Necesita saber cómo funcionan las computadoras. Necesita saber cómo funcionan realmente la memoria y la CPU. Ambos son tradicionalmente "cercanos al metal" y tienen comunidades que alientan a pensar en cómo se compila su lenguaje para la asamblea.
¿Por qué esta orden?
Smalltalk es muy fácil de aprender, por lo que puede comenzar a concentrarse rápidamente en resolver problemas en lugar de luchar contra un compilador ("barrera de entrada baja"). Una vez que comience a programar, tampoco hay un límite artificial sobre lo que puede hacer: "techo alto".
Una vez que tenga una idea justa de cómo funciona OO (y, con la condición de que haya MUCHAS interpretaciones diferentes de lo que significa "OO", es justo decir que OO domina el mercado), pasar a Prolog asegura que no comience pensando que OO es la única forma. Prolog es muy diferente a la mayoría de los idiomas y estirará sus músculos mentales para que no empiece a pensar que lo sabe todo.
Common Lisp, a su vez, es el lenguaje de un adulto. Tiene un estándar maduro, ha sido líder en diseño de idiomas durante décadas (junto con Smalltalk): ¿todas esas nuevas y elegantes características que acaba de adquirir su idioma favorito? Las posibilidades son las ideas incubadas en Lisp o Smalltalk. Common Lisp también es un poco vergonzoso, y encontrarás verrugas donde quiera que vayas.
Haskell es el cuarto en la lista porque (me dicen: recién comencé a aprenderlo) su pureza significa que algunas cosas muy comunes (como E / S) son más difíciles de hacer que en lenguajes menos puramente funcionales. La gente de Haskell también usa algunas terminologías bastante exóticas (palabras como "catamorfismo", por ejemplo), y probablemente estaría mejor con algo de experiencia en programación en su haber antes de abordarlo. (Pero debo repetir, ¡acabo de empezar a aprenderlo! ¡Toma esta opinión con una pizca de sal!)
¿Y por qué C / Delphi duran? Porque a menos que trabaje en sistemas embebidos, realmente no debería tener que aprender programación pensando que la gestión manual de la memoria es todo lo que hay. La recolección de basura funcionó lo suficientemente bien como para una máquina de nivel 1980. ¡Tu teléfono es tan poderoso!
Finalmente, no he puesto a Erlang en la lista anterior, aunque realmente debería hacerlo.