web-dev-qa-db-fra.com

Qu'est-ce qui est si génial avec Lisp?

Je ne connais pas assez LISP pour dire si c'est bon ou mauvais. Il semble que tous ceux qui ont utilisé LISP l'adorent, mais les langues les plus populaires de nos jours sont issues de C.

Alors, qu'est-ce qui est si génial dans LISP et pourquoi n'est-il pas utilisé davantage? Y a-t-il quelque chose de tout simplement mauvais à propos de LISP (autre que la quantité incessante de parenthèses)?

94
Darrell Brogdon

LISP est le Chuck Norris des langages de programmation.

LISP est la barre par rapport à laquelle les autres langues sont mesurées.

Connaître LISP démontre le développeur Enlightenment.

J'ai entendu parler de 3 faiblesses (et de leurs contre-arguments):

  1. Saisie dynamique.

    Il existe un argument en faveur de langages typés qui donnent au compilateur suffisamment d'informations pour détecter une certaine classe d'erreurs afin qu'elles ne se produisent pas au moment de l'exécution. Mais vous devez toujours tester.

    Cet article plaide pour une frappe dynamique avec plus de tests: Strong Typing vs. Strong Testing .

  2. Difficile à ramasser.

    Il y a en fait deux parties: l'apprentissage et les outils.

    LISP prend un certain effort pour vraiment "obtenir", mais cela en vaut la peine, car l'apprentissage de LISP fera vraiment de vous un meilleur programmeur dans d'autres langues. Par exemple, une fois que vous obtiendrez vraiment des fermetures, vous comprendrez les classes internes de Java. Et une fois que vous "obtenez" des fonctions de première classe, vous serez déprimé chaque fois que vous utilisez un langage sans elles.

    J'ai lu The Little Schemer et je lis LISP pratique commun , qui sont tous deux excellents.

    Viennent ensuite les outils. Je suis sur un Mac, donc je me suis concentré sur Aquamacs Emacs (rend Emacs habitable pour un novice) et Steel Bank Common LISP (SBCL).

  3. Manque de bibliothèques.

    Je ne peux pas encore le dire avec certitude, mais j'en doute. Pour la création de sites Web, il semble que Hunchentoot et Elephant fournissent un bon ensemble d'outils. Mais je ne vois vraiment pas Lispers se plaindre du manque de bibliothèques (peut-être parce que LISP est si puissant qu'ils ne sont tout simplement pas nécessaires?).

52
rickmode

"LISP est un langage de programmation programmable."
- John Foderaro, CACM, septembre 1991

Voici mon point de vue:

En surface, LISP est un langage de programmation fonctionnel agréable et simple. Il n'y a presque pas de syntaxe, et toutes les pièces s'assemblent de manière logique.

Si vous creusez un peu plus profondément, lisez SICP , et écrivez un évaluateur métacirculaire, vous découvrez deux choses: premièrement, l'interpréteur entier (donné seulement quelques primitives) est à peine une page de code, et deuxièmement, la relation entre le code et les données permet des techniques de programmation élégantes.

Une fois que vous avez complètement absorbé cela, vous avez l'impression que d'autres langues sont gravées dans le marbre quand elles ne vous permettent que de dire quelques choses. LISP peut construire n'importe quelle abstraction du tout si vous pouvez lui définir la syntaxe et la sémantique.

69
Josh Lee

LISP est bon car il a une syntaxe très minimale, simple et régulière.

LISP est mauvais car il a une syntaxe très minimale, simple et régulière.

60
Daniel Earwicker

"Tout programme C ou Fortran suffisamment compliqué contient une implémentation ad hoc, spécifiée de manière informelle, remplie de bogues et lente de la moitié du LISP commun."

Dixième règle de Greenspun

20
Paolo

Voici quelques liens utiles:

15
Greg Hewgill

Le premier chapitre de l'excellent LISP pratique commun de Peter Seibel couvre ses raisons d'aimer LISP. L'essentiel est l'expression "langage de programmation programmable" - la possibilité de personnaliser le langage en fonction de votre domaine ou de votre style préféré.

8
itowlson

Un programme LISP tend à fournir une correspondance beaucoup plus claire entre vos idées sur le fonctionnement du programme et le code que vous écrivez réellement.

Source: http://www.gigamonkeys.com/book/introduction-why-LISP.html

2
ketan