Comment dois-je commencer avec Lisp? [fermé]


48

Je programme depuis des années, en parcourant diverses versions de Blub (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby sans ordre particulier de "Blub-ness") et j'aimerais apprendre Zézayer. Cependant, j'ai beaucoup d'intertia avec peu de temps (famille, travail à temps plein, etc.) et un bonheur confortable avec mon Blub actuel (Java).

Donc ma question est la suivante, étant donné que je suis quelqu'un qui aimerait vraiment apprendre Lisp, quelles seraient les premières étapes pour obtenir un bon résultat démontrant la supériorité de Lisp dans le développement Web ? Peut-être que je manque le point, mais c'est comme ça que je verrais initialement l'application de mes connaissances Lisp.

Je pense "utilise le dialecte A, utilise l'IDE B, suis les instructions de la page C, interroge ton bon sens après que des monades aient utilisé le conseiller D". J'aimerais simplement savoir ce que les gens ici considèrent comme un ensemble optimal de valeurs pour A, B, C et peut-être D. De même qu'une discussion sur le mérite relatif d'apprendre un langage aussi puissant par opposition à, par exemple, devenir un Rails expert.

Juste pour ajouter des détails, je développerai sur MacOS (ou une machine virtuelle Linux) - aucune approche basée sur Windows ne sera nécessaire, merci.

Notes pour ceux qui parcourent juste par

Je vais laisser cette question ouverte pendant un moment afin de pouvoir commenter les suggestions après les avoir explorées. Si vous passez par là et sentez que vous avez quelque chose à ajouter, veuillez le faire. Je serais ravi de recevoir vos commentaires.

Liens intéressants

En supposant que vous arriviez chez Lisp à partir d'un environnement Java, cet ensemble de liens vous permettra de démarrer rapidement.

  1. Utilisation du plugin La Clojure d'Intellij pour intégrer Lisp ( vidéocast )
  2. Lisp pour le Web
  3. Version en ligne de Practical Common Lisp (a / s Frank Shearar)
  4. Land of Lisp est un (+ (+ very quirky) game based)moyen d'entrer , mais rend le tout si simple
  5. Installez Clojure et Sublime 2 sur MacOS, un excellent guide de démarrage
  6. Regardez le livre Clojure in Action . Travaillé pour moi

1
En lisant "ANSI Common Lisp" et "On Lisp" de Paul Graham.
Duros

2
On Lisp Rocks (je n'ai pas lu ANSI Common Lisp), mais en tant que livre d' introduction , Practical Common Lisp> On Lisp. OMI, au moins. (J'ai d'abord lu On Lisp, mais c'est PCL qui m'a permis d'entrer dans la CL.)
Frank Shearar

Je dois dire que je suis heureux de lire PCL en ce moment. D'excellentes notes de bas de page sur l'histoire de la langue donnent vraiment une idée de la communauté
Gary Rowe

1
Ma première introduction à Lisps visionnait la fameuse structure et interprétation des programmes informatiques. Ensuite, j'ai regardé Clojure pour les programmeurs Java de Rich Hickey. Je recommanderais ces vidéos comme une bonne introduction.
WuHoUnited

Réponses:


18

Ceci va probablement à l’encontre des recommandations de la plupart des gens, mais évitez d’abord Emacs, à moins que vous ne le sachiez déjà. Surtout si vous êtes habitué aux éditeurs / éditeurs modernes.

Je parle d'expérience; J'ai essayé de commencer avec Emacs, mais le fait d'apprendre le langage ET l'éditeur en même temps m'a beaucoup frustré (d'autant plus qu'Emacs est si différent des autres outils). J'ai finalement commencé à utiliser PLT Scheme (maintenant Racket), qui est livré avec un IDE multiplate-forme relativement simple, un référentiel de paquets centralisé et des documents fabuleux (y compris un didacticiel intermédiaire spécifiquement conçu pour le développement Web ). Après avoir maîtrisé Lisp, je suis retourné à Emacs, en prenant EL / CL via Practical Common Lisp et Xah's Elisp Guide.. De manière générale, à mon avis, vous devez connaître un Lisp avant de pouvoir utiliser Emacs de manière efficace, et vous devez connaître Emacs pour être très efficace avec CL / Elisp. Cela signifie que vous pouvez soit choisir Scheme, soit apprendre Common Lisp par l’intermédiaire d’un autre éditeur (LispWorks personnel, probablement).

Si vous connaissez déjà Emacs, alors oui, Elisp est l'étape naturelle (bien que la façon dont vous apprécierez l'utilisation d'Emacs sans savoir qu'Elisp est au-dessus de moi me dépasse).

YMMV bien sûr, c'est ce que j'ai trouvé aidé.

Puisque votre blub actuel est Java, vous pourriez probablement faire beaucoup de kilométrage avec Clojure , Armed Bear ou Kawa . Je n'ai jamais essayé moi-même, je ne suis pas un gars de Java, mais Clojure est particulièrement recommandé par les autres Lispers que je connais. Il semble que la possibilité de conserver votre VM et votre IDE actuels puisse vous aider dans le processus d’apprentissage.


J'avais déjà une connaissance de base d'emacs quand j'ai commencé. Emacs a une courbe d'apprentissage très raide!
Frank Shearar,

+1 parce que mes expériences précédentes avec Emacs ont été moins que merveilleuses (cela ne m'empêche pas de vouloir le savoir et d'avoir Lisp intégré - comme Thorbjorn l'a souligné - signifie que je peux utiliser mes connaissances de Lisp dans mon travail quotidien)
Gary Rowe

3
@ Thorbjørn Ravn Andersen - Est-ce que. Deux fois. Je me suis toujours retrouvé constamment à utiliser des raccourcis CUA (qui sont désactivés par défaut dans Emacs). Le pire était de fermer mon éditeur avec une coupure accidentelle + copie prévue ( C-x C-c). J'adore Emacs à la mort, et à peu près en direct maintenant, mais réalise que dans un premier temps , vous êtes à des années de combat de la mémoire musculaire vous dire C-sest Savepas Searchet Undoest C-z. Je ne recommanderai pas ce genre de frustration à quelqu'un dont l'intention est d'apprendre Lisp. Apprenez d'abord la langue, réalisez que vous l'aimez, puis commencez à vous battre avec un objectif clair en tête.
Inaimathi

1
@ Inaima, bien que le prix de revient soit élevé, et que les liaisons Emacs sont antérieures à CUA, donc reprocher à IBM :) De plus, Ctrl-C + Ctrl-v n'est pas CUA :)

1
@ Geoffrey van Wyk - Le PLT est un bon début, mais il y a certaines limites que vous rencontrez après un certain temps qui m'ont amené à passer à CL / Emacs une fois que j'ai eu mes marques. YMMV. J'ai rédigé un article il y a quelque temps sur les détails qui vous intéressent langnostic.blogspot.com/2010/09/… En ce qui concerne la question sur LispWorks; Je dois croire qu'ils ciblent de grandes équipes (où l'entreprise achète les outils) ou des consultants (qui font généralement assez pour que le prix soit justifié). Je ne sais pas comment ça va se passer pour eux, mais ce n'est pas l'approche que j'aurais choisie.
Inaimathi

10

Eh bien, vous pouvez frapper deux oiseaux en lisant SICP : l’un apprend le LISP (le système est un dialecte du Lisp) et l’autre est un excellent aperçu de la façon de programmer.


1
+1 pour le lien - une analyse rapide semble montrer que c'est très détaillé mais aussi plutôt sec (lire académique) dans son approche. Je suis un grand fan de "la voix des experts" lors de la lecture d'un texte, mais cela semble être une bonne référence globale.
Gary Rowe

10

Conrad Barski propose un excellent didacticiel appelé Casting SPELs in Lisp (SPEL est son acronyme pour macros). Il s’agit de créer un jeu simple du type aventure et d’entrer directement dans les macros Lisp. Il a également travaillé sur un livre d'introduction qui est maintenant disponible à l'adresse suivante:

Apprenez à programmer Lisp, un jeu à la fois .

Et, de la table des matières:

  • Créez votre propre serveur Web et utilisez-le pour jouer à des jeux sur navigateur

Cependant, je ne sais pas ce que cela implique pour le développement Web (comme dans les pages HTML) utilisant Lisp. :)

Mise à jour - Je vois quelqu'un qui a mentionné le livre "Structure et interprétation des programmes informatiques", qui m'a rappelé que le MIT avait mis en ligne l' ensemble des conférences vidéo du SICP de Hal Abelson et Gerald Jay Sussman . Vous avez peut-être trouvé le livre sec, mais les conférences sont excellentes. Bien qu'ils soient basés sur Scheme, ils maîtrisent toujours très bien les concepts de base de Lisp. Ça vaut le coup de télécharger et de regarder.


8

Pour une bonne introduction à la langue, lisez Practical Common Lisp de Peter Seibel . Le livre est excellent.

Configurer emacs et SLIME peut être délicat pour un débutant, son ampleur variant en fonction de votre système d'exploitation. Comme d'habitude, Windows a le bâton court, mais les gens ont fait le difficile et l'ont écrit (SBCL, Emacs, SLIME).

Une fois que cela est fait, Planet Lisp a référencé un article décrivant récemment comment configurer Hunchentoot et nginx.

Spécifique au système d’exploitation: MCLIDE peut être un bon point de départ. Je l'ai installé, mais je n'ai pas encore eu l'occasion de l'utiliser. Je ne peux donc rien dire d'utile à ce sujet. Cela semble certainement intéressant!

Edit: Eclipse a aussi le plugin Cusp .


6

Déjà beaucoup de bonnes réponses, mais en supposant que vous souhaitiez vous immerger dans le développement Web avec un Lisp, j'ai quelques idées de plus.

Clojure est le premier Lisp que je connaisse à disposer d'excellents frameworks Web full-stack prêts pour le prime time.

  • Noir est un framework web solide avec routage, templates, etc., similaire à Sinatra mais un peu plus riche en fonctionnalités. Il utilise Ring, qui est fondamentalement l'équivalent de Rack in Ruby de Clojure.
  • Korma est une bibliothèque d'abstraction SQL très bien couplée à Noir.
  • Pinot est un framework côté client entièrement écrit en ClojureScript, qui nous amène à:
  • Clojurescript est un compilateur pour Clojure qui cible Javascript.

Si vous ne l'aviez pas remarqué, je viens de couvrir toute la pile Web et tout est écrit en Clojure.

Je trouve que Clojure est un peu plus facile à utiliser que Common Lisp, avec un support de jeu de fonctionnalités / bibliothèque bien meilleur que celui de Scheme.

Si vous venez d'un environnement Java, cela présente l'avantage supplémentaire de fonctionner sur la machine virtuelle, ce qui vous donne accès à l'intégralité de la stdlib Java quand vous en avez besoin.

La documentation disponible est un travail en cours, de même que les cadres eux-mêmes. Mais il y a un très bon tutoriel ici.

En ce qui concerne les éditeurs, si vous êtes à l'aise avec vim, vous pouvez utiliser vim avec SLIMV. Si vous aimez emacs, emacs / SLIME vous convient. Clojure (ou c'est ce que l'on me dit) supporte assez bien Eclipse et NetBeans, mais j'utilise généralement TextMate (bien que Sublime Text 2 devienne rapidement mon éditeur de choix). Je sais que je passe à côté d'une petite magie Lisp n'utilisant pas un environnement plus intégré, mais je suis heureux de pouvoir appuyer sur ⌘-Tab pour permuter entre mon éditeur et REPL; Votre kilométrage peut varier.

Si vous voulez qu'un livre vous aide à démarrer, je vous recommande de programmer Clojure de Stuart Halloway et Aaron Bedra. La 2e édition vient de sortir de PragProg , elle est donc à jour.

Bonne lecture!


Vous pourriez vouloir ajouter Leiningen
Gary Rowe le

5

Un autre commentateur , Inaimathi , a recommandé ce livre il y a quelques jours: The Little Schemer

Je l'ai reçu aujourd'hui et je peux dire, en tant que personne possédant une bibliothèque très volumineuse de livres de programmation acquise au fil de nombreuses années, que je n'ai peut-être lu qu'un chapitre, mais que j'aurai certainement besoin d'une version reliée de ce livre. Il se lit comme le Tao Te Ching, beaucoup de petits bouts de sagesse divine concernant la langue. On peut dire Scheme, mais il s’appelait à l’origine "The Little LISPer", les langues au niveau discuté sont suffisamment similaires pour être enseignées comme telles.

Ce n'est pas un texte avancé, mais une mission qui consiste à inculquer les principes de la langue et à quoi sert-il, comment penser de la sorte. Je crois que ce serait une excellente entrée en matière pour LISP.

NB La matrice de compétences des programmeurs mentionne en fait ce livre au dernier niveau de compétence à rechercher. (voir section livres)


4

Un très bel endroit pour commencer à utiliser Lisp est à l'intérieur de l'éditeur Emacs, où il peut être utilisé pour redéfinir à peu près n'importe quoi. Vous voulez que la clé 'e' insère l'heure, il vous suffit d'écrire un petit extrait Lisp pour générer la chaîne et la lier à la clé e. Terminé.

Cela vous permettra également d’UTILISER réellement ce que vous apprenez au quotidien, si vous utilisez un éditeur ordinaire au cours de la journée.


+1 pour le conseil "utilisez ce que vous apprenez". Je suis un membre d'Intellij pour le travail journalier, mais je pourrais peut-être me permettre de maîtriser emacs dans notre environnement logiciel très restreint.
Gary Rowe

3

Si vous développez sur un Mac, essayez Clozure CL . Il est livré avec un environnement de développement intégré (IDE) doté de frappes compatibles Emacs. Il existe également une passerelle vers Objective C pour vous permettre d'écrire des applications Cocoa.

En outre, j'ai lu Practical Common Lisp, mais j'ai trouvé que Successful Lisp était également utile.

Enfin, un peu de patience de votre part sera récompensé. La productivité et les victoires mineures vont arriver assez rapidement, mais la grande victoire peut prendre un certain temps.


2

J'ai un exemplaire de ANSI Common Lisp ici, près de mon bureau. Je le prends tous les deux ans et fais quelques chapitres, puis reste bloqué sur quelques exercices et ça glisse sur la liste des priorités. Cela vous en dit probablement plus sur moi que sur le livre. Le livre semble tout à fait compétent ...


Peut-être que la lecture des réponses et des commentaires à cette question vous donnera l’élan nécessaire pour atteindre un objectif plus élevé. Décrochez le lien PCL et dites-nous ce que vous pensez ...
Gary Rowe
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.