Comme mon premier langage de programmation, j'ai décidé d'apprendre Haskell. Je suis une philosophie analytique majeur, et Haskell m'a permis de rapidement et correctement, créer des programmes d'intérêt, par exemple, de capteurs pour le langage naturel de l'analyse, des démonstrateurs et des interprètes. Bien que je ne l'ai été de programmation pour deux mois et demi, j'ai trouvé Haskell de la sémantique et de la syntaxe beaucoup plus facile à apprendre que le plus traditionnel des langages impératifs, et se sentent à l'aise (maintenant) avec la majorité de ses constructions.
La programmation Haskell est comme la sorcellerie, cependant, et j'aimerais élargir mes connaissances de la programmation. Je voudrais choisir un nouveau langage à apprendre, mais je n'ai pas assez de temps pour ramasser un arbitraire de la langue, de la déposer, et répétez. J'ai donc pensé que je voudrais poser la question ici, ainsi que plusieurs dispositions sur le type de langue, je suis à la recherche d'. Certains sont subjectifs, certains sont destinés à faciliter la transition de Haskell.
- Forte type de système. Une de mes parties préférées de la programmation Haskell est écrit à ce type de déclarations. Cela permet de structurer mes pensées sur les différentes fonctions et leur relation à l'ensemble du programme. Il fait également de manière informelle raisonnement au sujet de l'exactitude de mon programme plus facile. Je suis préoccupé par la justesse, pas l'efficacité.
- L'accent sur la récursivité plutôt que d'itération. J'utilise itératif constructions en Haskell, mais de les mettre en œuvre de manière récursive. Cependant, il est beaucoup plus facile de comprendre la structure d'une fonction récursive qu'une complexe procédure itérative, en particulier lors de l'utilisation de combinators et fonctions d'ordre supérieur, comme les cartes, les plis et les lier.
- Enrichissant d'apprendre. Haskell est un enrichissant la langue de travail. C'est un peu comme la lecture de Kant. Mon expérience de plusieurs années avec C, cependant, ne l'était pas. Je ne suis pas à la recherche de C. de La langue doit appliquer une conceptuellement intéressant de paradigme, qui, à mon entièrement l'avis subjectif, le C-aime pas.
De pesée les réponses: ce sont des notes de cours. Je voudrais juste répondre à tout le monde qui a donné bien formé réponses. Vous avez été très utile.
1) Plusieurs réponses indiquent qu'une forte, typé statiquement langue en insistant sur la récursivité signifie un autre langage fonctionnel. Alors que je veux continuer à travailler fortement avec Haskell, camccann et larsmans souligné à juste titre qu'une autre langue serait "faciliter la transition de trop." Ces commentaires ont été très utiles, car je ne suis pas à la recherche d'écrire en Caml, Haskell! De la preuve des assistants, le Coq et Agda à la fois l'air intéressant. En particulier, le Coq serait de fournir une solide introduction à une logique formelle et de la théorie des types. J'ai passé un peu de temps avec le premier ordre de prédicat et de la logique modale (Mendellsohn, Enderton, certains de Service), alors je serais probablement avoir beaucoup de plaisir avec Coq.
2) d'Autres privilégiée Lisp (Common Lisp, Scheme et Clojure). De ce que je comprends, tant en Common Lisp et Scheme ont une excellente introduction (Sur le langage Lisp et Motivé Intrigant, SICP). Le matériau en SICP me fait pencher vers le Schéma. En particulier, le Régime par le biais de SICP couvrirait une autre stratégie d'évaluation, la mise en œuvre de la paresse, et une chance de se concentrer sur des sujets comme les continuations, les interprètes, le calcul symbolique, et ainsi de suite. Enfin, comme d'autres l'ont souligné, Lisp de traitement de code/données entièrement nouvelles. Donc, je me penche fortement vers l'option (2), un Lisp.
3) La Troisième, Prolog. Prologue a une richesse de matériel intéressant, et son principal domaine est exactement celui que je suis intéressé. Il a une syntaxe simple et facile à lire. Je ne peux pas commenter plus pour le moment, mais après la lecture d'un survol de Prolog et l'écrémage quelques éléments introductifs, il les rangs (2). Et il semble comme le Prologue de la mandature est toujours être piraté en Haskell!
4) les principaux langages, Python semble le plus intéressant. Tim Yates rend les langues sembler très attrayant. Apparemment, le Python est souvent enseigné en première année de CS majors; donc c'est soit sur le plan conceptuel riche ou la plus facile à apprendre. Je devrais faire plus de recherche.
Merci à tous pour vos recommandations! Il ressemble à un Lisp (Régime, Clojure), Prolog, ou un assistant de preuve comme Coq ou Agda sont les principales langues recommandé.