Je me demandais quelles fonctionnalités uniques je peux apprendre de Scheme qui pourraient m'aider à devenir un meilleur programmeur?
J'ai beaucoup d'expérience dans les langues traditionnelles et je cherche à élargir mes horizons et à en apprendre davantage sur les aspects fonctionnels qui manquent dans d'autres langues. Je connais les fermetures de javascript, les expressions lambda de C #, et je me demandais ce que je peux me concentrer sur ce qui manque dans d'autres langues? Mis à part la syntaxe Lisp, je me sens comme ce que j'ai vu jusqu'à présent que j'ai déjà rencontré dans d'autres langues.
Qu'est-ce qui est unique à Scheme / Lisp et qui m'apprendra quelque chose de nouveau?
functional-programming
lisp
scheme
Bunglestink
la source
la source
Réponses:
Peut-être la caractéristique la plus importante de définition de Lisp est "Code as Data." Vous n'obtiendrez pas cette expérience de la même manière avec une autre langue. En C #, l'analogue le plus proche est les arbres d'expression.
C'est cette qualité qui fait de Lisp un excellent langage d'analyse. C'est aussi la qualité qui a poussé Paul Graham à dire à propos de Lisp: "Ce qui est inhabituel à propos de Lisp - en fait, la qualité qui définit Lisp - c'est qu'il peut être écrit en lui-même." Bien que les compilateurs auto-hébergés ne soient pas nouveaux, aucun langage ne le fait aussi élégamment que Lisp.
La métaprogrammation (quelque chose dans laquelle Lisp excelle également) est également une chose intéressante à apprendre.
Battre les moyennes par Paul Graham
http://www.paulgraham.com/avg.html
la source
Oui, cela vous aidera à penser de manière récursive. Je l'ai étudié (schéma) pendant environ un mois dans un cours de langage de programmation et cela m'a aidé à faire évoluer ma façon de penser et à résoudre des problèmes de programmation.
Il est toujours utile d'essayer d'autres paradigmes de programmation; vous revenez ensuite rafraîchi dans le monde OO avec de nouvelles idées.
Pas la syntaxe, mais le raisonnement, c'est un excellent exercice cérébral. Hormis la récursivité et l'utilisation intéressante des listes, il n'y a pas grand-chose d'autre à mon humble avis, mais cela en vaut la peine.
la source
Suite :
puis essayez d'implémenter l'opérateur ambigu de McCarthy :
la source
Je peux penser à ce qui suit:
Je pense également que les langues lisp devraient être géniales pour définir des langues spécifiques au domaine (DSL). C'est quelque chose que vous voudrez peut-être lire si vous ne le savez pas déjà.
la source