1. Smalltalk
Progettato originariamente almeno in parte come metodo per insegnare ai bambini a usare il computer. La sintassi è abbastanza semplice da descrivere in un paragrafo. Esso, come il LOGO, esemplifica il principio di "barriera bassa all'entrata, soffitto alto"
Smalltalk è un puro linguaggio OO nel senso che "tutto è un oggetto".
Insegna anche molte tecniche funzionali, in particolare nella sua API Collection: concatenare messaggi, funzioni di ordine superiore, mappare, ridurre e così via.
La Squeak community è vivace e accogliente. Vedrai anche molte discussioni sulle tecniche avanzate: molto simile alla comunità Lisp, ci sono molti Smalltalker molto esperti su mailing list disposti a condividere le loro conoscenze. (Non fa male che la comunità di Squeak abbia una grande sotto-popolazione di educatori professionisti.) C'è anche altro elenca per i principianti.
2. PROLOG
Un linguaggio di programmazione logica che ti darà una visione del calcolo molto diversa da qualsiasi altra lingua. Anche Prolog è molto dichiarativo (ma non completamente: il !
o l'operatore di taglio può avere un significativo effetto semantico su un predicato).
3. Common Lisp
Schema sostitutivo qui se ti piace. Common Lisp supporta diversi paradigmi, in particolare OO e funzionali. Ha anche una lunga storia (il Lisp è la seconda lingua ancora più usata ancora: solo i vecchi di FORTRAN).
4. Haskell
(Caveat: ho appena iniziato ad impararlo). Probabilmente il linguaggio funzionale più puro del pianeta. Ha un sistema di tipo statico molto avanzato. Sono disponibili intro libri .
5. C o Delphi
Devi sapere come funzionano i computer. Hai bisogno di sapere come funzionano effettivamente la memoria e la CPU. Entrambi sono tradizionalmente "vicini al metallo" e hanno comunità che incoraggiano a pensare a come il loro linguaggio viene compilato per l'assemblaggio.
Perché questo ordine?
Smalltalk è molto facile da imparare, quindi puoi iniziare rapidamente a concentrarti sulla risoluzione dei problemi piuttosto che combattere un compilatore ("barriera bassa per entrare"). Una volta che inizi a programmare, non ci sono limiti artificiali su ciò che puoi fare: "soffitto alto".
Una volta che hai una buona idea di come funziona OO (e - a condizione che ci siano MOLTE diverse interpretazioni su cosa significhi "OO" - è giusto dire che OO domina il mercato), passare a Prolog ti assicura che tu non iniziare a pensare che OO sia l'unico modo. Prolog è molto diverso dalla maggior parte delle lingue e stirerà i tuoi muscoli mentali in modo da non iniziare a pensare di sapere tutto.
Il Common Lisp, a sua volta, è un linguaggio per adulti. Ha uno standard maturo, è stato leader del design linguistico per decenni (insieme a Smalltalk) - tutte quelle nuove fantasiose funzionalità che hai appena acquisito nella tua lingua preferita? Le probabilità sono le idee incubate in Lisp o Smalltalk. Il Common Lisp è anche un po 'verrucoso, e troverai malignità ovunque tu vada.
Haskell è il quarto della lista perché (mi hanno detto: ho appena iniziato a impararlo) la sua purezza significa che alcune cose molto comuni (come I / O) sono più difficili da fare rispetto a linguaggi meno puramente funzionali. Gli Haskell usano anche delle terminologie abbastanza esotiche (parole come "catamorfismo", per esempio), e probabilmente starai meglio con qualche esperienza di programmazione sotto la cintura prima di affrontarla. (Ma devo ripetere, ho appena iniziato ad impararlo! Prendi questa opinione con un pizzico di sale!)
E perché C / Delphi dura? Perché, a meno che tu non lavori nei sistemi embedded, non dovresti davvero imparare a pensare alla programmazione che la gestione della memoria manuale è tutto lì. La raccolta dei rifiuti ha funzionato abbastanza bene per una macchina di livello anni '80. Il tuo telefono è così potente!
Infine, non ho inserito Erlang nell'elenco precedente anche se dovrei davvero.