1. Smalltalk
Projetado originalmente, pelo menos em parte, como uma maneira de as crianças usarem computadores para aprender. A sintaxe é simples o suficiente para descrever em um parágrafo. Como o LOGO, exemplifica o princípio "baixa barreira à entrada, teto alto".
Smalltalk é uma linguagem OO pura no sentido de que "tudo é um objeto".
Ele também ensina muitas técnicas funcionais, particularmente em sua API Collection: encadear mensagens, funções de ordem superior, mapear, reduzir e assim por diante.
A comunidade Squeak é vibrante e acolhedora. Você também verá muitas discussões sobre técnicas avançadas: assim como a comunidade lisp, há muitos Smalltalkers muito experientes na lista de e-mails dispostos a compartilhar seus conhecimentos. (Não faz mal que a comunidade Squeak tenha uma grande subpopulação de educadores profissionais.) Há também outra lista para iniciantes.
2. PROLOG
Uma linguagem de programação lógica que lhe dará uma visão muito diferente da computação em relação a qualquer outra linguagem. Prolog também é altamente declarativo (mas não completamente): o !
operador ou cut pode ter um efeito semântico significativo em um predicado).
3. Lisp comum
Substitua o esquema aqui, se quiser. O Lisp comum suporta múltiplos paradigmas, especialmente OO e funcionais. Ele também tem uma longa história (o Lisp é a segunda linguagem ainda mais usada: apenas a mais antiga do FORTRAN).
4. Haskell
(Advertência: eu apenas comecei a aprender.) Provavelmente a linguagem funcional mais pura do planeta. Possui um sistema de tipo estático muito avançado. Existem livros de introdução úteis .
5. C ou Delphi
Você precisa saber como os computadores funcionam. Você precisa saber como a memória e a CPU realmente funcionam. Ambos são tradicionalmente "próximos do metal" e têm comunidades que incentivam o pensamento de como sua linguagem é compilada para montagem.
Por que essa ordem?
O Smalltalk é muito fácil de aprender, para que você possa começar a se concentrar rapidamente na solução de problemas, em vez de combater um compilador ("baixa barreira à entrada"). Depois de iniciar a programação, também não há limite artificial para o que você pode fazer - "teto alto".
Depois de ter uma idéia justa de como o OO funciona (e - com a condição de que MUITOS entendimentos diferentes do que "OO" significa - é justo dizer que o OO domina o mercado), migrar para o Prolog garante que você não comece pensando que OO é o único caminho. O prólogo é muito diferente da maioria dos idiomas e alonga seus músculos mentais para que você não comece a pensar que sabe tudo.
Lisp comum, por sua vez, é a linguagem de um adulto. Ele tem um padrão maduro, lidera o design de idiomas há décadas (junto com o Smalltalk) - todos esses novos recursos sofisticados que seu idioma favorito acabou de adquirir? As chances são as idéias incubadas no Lisp ou no Smalltalk. O Lisp comum também é um pouco complicado, e você encontrará verrugas em todos os lugares.
O quarto de Haskell está na lista porque (me disseram: eu apenas comecei a aprender) sua pureza significa que algumas coisas muito comuns (como E / S) são mais difíceis de fazer do que em linguagens menos puramente funcionais. O pessoal da Haskell também usa algumas terminologias bastante exóticas (palavras como "catamorfismo", por exemplo), e você provavelmente se sairia melhor com alguma experiência em programação antes de abordá-la. (Mas devo reiterar, eu apenas comecei a aprender! Tome essa opinião com uma pitada de sal!)
E por que C / Delphi durou? Porque, a menos que você trabalhe em sistemas embarcados, não precisará aprender programação, pensando que o gerenciamento manual de memória é tudo o que existe. A coleta de lixo funcionou bem o suficiente para uma máquina de nível dos anos 80. Seu telefone é tão poderoso!
Finalmente, eu não coloquei Erlang na lista acima, mesmo que eu realmente devesse.