130 votes

Apprendre Lisp - Pourquoi?

Je pense vraiment que je devrais apprendre Lisp et il y a plein de bonnes ressources pour m'aider à le faire.

Je ne suis pas effrayé par la syntaxe compliquée, mais dans la "programmation commerciale traditionnelle" où trouver des endroits où il serait judicieux de l’utiliser au lieu d’un langage procédural.

Existe-t-il une application de tueur commerciale écrite en Lisp?

132voto

user7517 Points 161

Lisp est un vaste et complexe de la langue, d'une grande complexité d'exécution pour le soutenir. Pour cette raison, Lisp est le mieux adapté pour les grandes et les problèmes compliqués.

Maintenant, un complexe problème n'est pas le même que d'un compliqué . Un complexe problème de est une, avec beaucoup de petits détails, mais qui n'est pas difficile. L'écriture d'un système de réservation de la compagnie aérienne est une entreprise complexe, mais avec assez d'argent et de programmeurs, il n'est pas difficile. Obtenez la différence?

Un problème compliqué est celui qui est tortueuse, où traditionnels diviser pour régner ne fonctionne pas. Pilotage d'un robot, ou de travailler avec des données qui n'est pas tabulaire (langues, par exemple), ou très dynamique des situations.

Lisp est vraiment bien adapté à des problèmes pour lesquels la solution doit être extensible; l'exemple classique est l'éditeur de texte emacs. Il est entièrement programmable et donc d'un environnement de programmation dans son propre droit.

Dans son célèbre livre PAIP, Norvig dit que Lisp est idéal pour exploratoire de programmation. Qui est, la programmation d'une solution à un problème qui n'est pas entièrement compris (par opposition à un système de réservation en ligne). En d'autres termes: des problèmes Compliqués.

En outre, l'apprentissage Lisp va vous rappeler de quelque chose de fondamental qui a été oublié: La différence entre Von Neumann et Turing. Comme nous l'avons maintenant, Turing modèle de calcul est un intéressant modèle théorique, mais inutile comme un modèle pour la conception des ordinateurs. Von Neumann, d'autre part, a conçu un modèle de la façon dont les ordinateurs et les calculs soient à exécuter: Le modèle de Von Neumann. Centrale de Van Neumann modèle que vous avez, mais une mémoire, et de stocker votre code et de vos données. Avis attentivement qu'un programme Java (ou C#, ou ce que vous voulez) est une manifestation de Turing modèle. Vous définissez votre programme dans le béton, une fois pour toutes. Puis vous j'espère que vous pourrez traiter toutes les données qui obtient jeté sur elle.

Lisp maintient le modèle de Von Neuman; il n'est pas forte, pré-déterminé de la frontière entre le code et les données. La programmation en Lisp ouvre l'esprit à la puissance du modèle de Von Neumann. La programmation en Lisp qui vous fait voir de vieux concepts dans une nouvelle lumière.

Enfin, étant interactif, vous allez apprendre à interagir avec vos programmes que vous développez (par opposition à compiler et exécuter). Ce aussi changer la façon dont votre programme, et la façon dont vous voyez la programmation.

Avec cette intro, je peux enfin proposer une réponse à votre question: allez-vous trouver des endroits où il surpasse "traditionnel" langues?

Si vous êtes un programmeur avancé, vous avez besoin d'outils de pointe. Et il n'y a pas d'outil plus avancé que le Lisp. Ou, en d'autres termes: La réponse est oui si vos problèmes sont difficiles. Pas autrement.

58voto

Justin Bennett Points 2513

Une des utilisations principales de Lisp est dans l'Intelligence Artificielle. Un de mes amis au collège a pris un diplômé de l'IA du cours et de son projet principal, il a écrit une "Lights Out" solveur en Lisp. Plusieurs versions de son programme utilisé légèrement différente AI des routines et des essais sur 40 ordinateurs donné quelques très soigné résultats (je voudrais qu'il était en ligne quelque part pour moi pour le lien, mais je ne pense pas que c'est).

Deux semestres auparavant, j'ai utilisé (un langage basé sur Lisp) écrire un programme interactif de simulation Abbott et Costello "à Qui la" routine. L'entrée de l'utilisateur a été adapté à l'encontre de certaines assez compliqué structures de données (ressemblant à des cartes dans d'autres langues, mais beaucoup plus souple) de choisir ce qu'une réponse appropriée serait. J'ai aussi écrit une routine pour résoudre un 3x3 slide puzzle (un algorithme qui pourrait facilement être étendu à de plus grands slide puzzle).

En résumé, l'apprentissage Lisp (ou Schéma) ne peut pas produire beaucoup d'applications pratiques au-delà de l'IA, mais c'est une expérience extrêmement précieuse, comme beaucoup d'autres l'ont dit. La programmation dans un langage fonctionnel comme Lisp sera également vous aider à penser de manière récursive (si vous avez eu des ennuis avec la récursivité dans d'autres langues, ce qui pourrait être d'une grande aide).

58voto

Marcio Aguiar Points 6715

En réponse à @lassevk :

texte alternatif

48voto

Justin Standard Points 15312

syntaxe compliquée??

La syntaxe lisp est incroyablement simple.

Killer application écrite en lisp: emacs. Lisp qui vous permettra de prolonger emacs à la volonté de faire presque tout ce que vous pouvez penser qu'un éditeur pourrait faire.

Mais, vous ne devriez apprendre lisp si vous voulez , et vous pouvez ne jamais avoir à l'utiliser au travail, mais il est toujours impressionnant.

Aussi, je tiens à ajouter: même si vous trouver des endroits où lisp sens, vous n'aurez probablement pas convaincre qui que ce soit d'autre qu'il doit être utilisé sur java, c++, c#, python, ruby, etc.

26voto

Christian Lescuyer Points 8656

Je ne peux pas vous répondre par expérience personnelle, mais vous devriez lire ce que Paul Graham a écrit sur Lisp . Pour la partie "tueur-app", lisez Battre les moyennes .

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