83 votes

Common Lisp ou Scheme?

Qui recommanderiez-vous à l'apprentissage, CL ou un Schéma? Quels sont les avantages et les inconvénients de chacun, par rapport à l'autre?

55voto

Vinko Vrsalovic Points 116138

À partir d'une section de l'introduction de Pratiques Common Lisp (excellente ressource pour apprendre common lisp, par la voie):

Si vous avez utilisé Lisp dans le passé, vous peuvent avoir des idées sur ce que "Lisp" est qui ont peu à voir avec la Commune Lisp. Tout en Common Lisp supplanté la plupart des dialectes, il est descendu depuis, il n'est pas le seul restant Lisp le dialecte, et selon l'endroit et l' lorsque vous avez été exposé à Lisp, vous pouvez très bien ont appris l'un de ces d'autres dialectes.

Autres que la Common Lisp, l'un usage général dialecte Lisp a encore une communauté active est Régime. Common Lisp emprunté quelques les caractéristiques importantes de Régime, mais jamais eu l'intention de le remplacer.

Conçu à l'origine au M. I. T., où il a été rapidement mis à l'utiliser comme un langue d'enseignement pour les étudiants de premier cycle les cours d'informatique, Schéma a toujours été destiné à un autre langue de niche de Common Lisp. Dans en particulier, le Schéma, les designers ont axée sur le maintien de la base de la langue aussi petit et aussi simple que possible. Cela a des avantages évidents pour un l'enseignement de la langue et aussi pour langage de programmation chercheurs qui comme pour être en mesure de prouver formellement choses à propos des langues.

Il a également l'avantage de le faire relativement facile à comprendre l' toute la langue, comme spécifié dans le standard. Mais, il le fait au prix de l'omission de nombreuses fonctions utiles qui sont normalisées en Common Lisp. Individuel du programme mises en œuvre peuvent fournir ces fonctionnalités dans de mise en œuvre de manière spécifique, mais leur omission de la norme fait il est plus difficile à écrire portable Régime code que de l'écrire portable Commune Code Lisp.

Schéma souligne également une fonctionnelle le style de programmation et l'utilisation de la récursivité beaucoup plus que la Common Lisp n'. Si vous avez étudié Lisp dans un collège et sont repartis avec l'impression que il n'était qu'un langage académique avec aucune application réelle, les chances sont vous avez appris Régime. Ce n'est pas à dire c'est particulièrement juste la caractérisation de Régime, mais c'est encore moins applicable à la Common Lisp, qui a été expressément conçu pour être un dans le monde réel génie de la langue, plutôt qu'une théorie "pure" de la langue.

Si vous avez appris Régime, vous devriez sachez également qu'un certain nombre de subtils les différences entre le Régime et les Communes Lisp peut vous passionner. Ces les différences sont aussi à la base de plusieurs vivaces guerres de religion entre les têtes brûlées dans la Commune Lisp et Scheme communautés. Je vais essayer certains des plus des différences importantes au fur et à mesure.

Deux autres dialectes Lisp encore dans l'utilisation généralisée sont Elisp, l' langage d'extension pour Emacs l'éditeur, et Autolisp, l'extension la langue pour le logiciel Autodesk AutoCAD la conception assistée par ordinateur de l'outil. Bien que il est possible que plusieurs lignes de Elisp et Autolisp ont été écrits que de toute autre dialecte de Lisp, ni ne peut être utilisé en dehors de leurs pays d'accueil de l'application, et les deux sont tout à fait à l'ancienne Lisps comparativement au Régime ou de la Commune Lisp. Si vous avez utilisé l'un de ces dialectes, préparez-vous à sauter dans le Lisp machine de temps et d'avancer de plusieurs décennies.

49voto

Pablo Points 44881

Ni: Clojure. Honnêtement, après de nombreuses années de se taper la tête avec les deux Régime et Common Lisp interminable liste de mises en œuvre et les particularités, je suis heureux bidouiller sur Clojure.

Je sais que c'pas vraiment une réponse à votre question, mais en tant que votre demande d'avis, je vais vous donner la mienne (et je souhaite que quelqu'un m'a dit cela lors de l'avant).

38voto

Maxim Ananyev Points 615

Schéma a un gros avantage: SICP conférences qui sont disponibles sur l'internet. C'est un grand plaisir de les suivre avec un interprète à bord.

L'avantage de Common Lisp est plus ou moins standard un ensemble de bibliothèques.

Donc, si vous voulez faire dans le monde réel développement, pensez à C. Lisp. Si vous voulez apprentissage et de plaisir, utilisez Régime.

26voto

Kyle Cronin Points 35834

Comme un Intrigant, je trouve qu'il est difficile de travailler avec Common Lisp quand je dois le faire. La plupart de tiges d'avoir à séparer l'espace de noms de fonction et la variable d'espace de noms. Cela conduit à deux façons de définir des trucs et deux laissez-comme les syntaxes de temporaire de définition. Il y a aussi le fait que le Common Lisp ne fournit pas d'accès explicite à la poursuite et, par conséquent, si vous voulez faire quelque chose qui implique la sauvegarde et la restauration de l'état que vous avez à garder une trace de la main.

Il y a une bonne fonctionnalité sur Common Lisp - le système de macro est beaucoup plus facile à utiliser que le Système (pour lequel je n'ai pas encore pleinement maître). Paul Graham est de travailler sur un dialecte de Lisp appelé Arc qui combine l'unité de Régime et la facilité de la CL macro système. C'est une ébauche pour l'instant, mais il a de grandes promesses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X