Lisp Curse French

La Malédiction du Lisp
Par Rudolf Winestock

Cet essai est encore une autre tentative de concilier la puissance du langage de programmation Lisp avec l’incapacité de la communauté Lisp de reproduire leurs réalisations pré AI Winter. Sans aucun doute, Lisp a été une source influente d’idées même pendant son temps de retraite. Ce fait, plus l’éclat des différentes architectures Lisp Machine, et la renaissance actuelle Lisp après plus d’une décennie dans le désert démontrer que les partisans Lisp doit avoir une certaine justification de leur suffisance. Néanmoins, ils n’ont pas été en mesure de traduire la puissance de Lisp dans un mouvement avec une dynamique accablante.

Dans cet essai, je soutiens que le pouvoir expressif de Lisp est en fait une cause de son manque d’élan.

Le pouvoir de Lisp est son pire ennemi.

Voici une expérience de pensée pour le prouver: Prenez deux langages de programmation, dont aucun n’est orienté objet. Votre mission, si vous choisissez de l’accepter, est de les rendre orientés objet, en les gardant à l’envers compatible avec les langues d’origine, modulo quelques cas de bord. L’insertion de n’importe quelle paire des Langues de programmation dans cette expérience de pensée montrera que cela est plus facile avec certaines langues qu’avec d’autres. C’est le point de l’expérience de la pensée. Voici un exemple trivial: Intercal et Pascal.

Maintenant, rendez cette expérience de pensée intéressante: Imaginez l’ajout d’orientation d’objet aux langues de programmation C et Schème. Faisant Schème orienté objet est une tâche de devoirs en deuxième année. D’autre part, l’ajout de l’orientation de l’objet à C nécessite les plages de programmation de Bjarne Stroustrup.

Les conséquences de cette divergence dans le talent et l’effort nécessaires font que la Malédiction Lisp:

Lisp est si puissant que les problèmes qui sont des problèmes techniques dans d’autres langues de programmation sont des problèmes sociaux dans Lisp.

Considérons encore le cas de Schème. Depuis rendre Schème orientée objet est si facile, de nombreux hackers Schème l’ont fait. Plus au point, de nombreux pirates Schème individuels ont fait. Dans les années 1990, cela a conduit à une véritable liste d’inventaire d’entrepôts de paquets orientés objet pour la langue. The Paradox of Choice, seul, garantit qu’aucun d’entre eux ne deviendrait standard. Maintenant que certaines implémentations Schème ont leurs propres fonctionnalités d’orientation d’objet, ce n’est pas si mal. Néanmoins, le fait que beaucoup de ces paquets étaient le travail d’individus isolés a mené à des problèmes qu’Olin Shivers a écrit au sujet de la documentation de Schème coquille, scsh.

Les programmes écrits par des pirates informatiques individuels ont tendance à suivre le modèle de grattage et de démangeaison. Ces programmes vont résoudre le problème que le pirate, lui-même, est d’avoir sans nécessairement gérer les parties connexes du problème qui rendrait le programme plus utile pour les autres. En outre, le programme est sûr de travailler sur la configuration propre de ce pirate seul, mais ne peut pas être portable à d’autres implémentations Schème ou à la même implémentation Schème sur d’autres plates-formes. La documentation peut manquer. Étant essentiellement un projet réalisé dans le temps libre copieux du pirate, le programme est susceptible de souffrir si les responsabilités de la vie réelle intrus sur le pirate. Comme l’a noté Olin Shivers, cela signifie que ces projets d’une seule bande ont tendance à résoudre quatre-vingt pour cent du problème.

L’essai du Dr. Mark Tarver, The Bipolar Lisp Programmer, a une description appropriée de ce phénomène. Il écrit de ces pirates Lisp loup-loup et leurs

… l’incapacité de terminer les choses correctement. L’expression « Design à jeter » est absolument faite pour le BBM et il vient de la communauté Lisp. Lisp vous permet de simplement jeter les choses si facilement, et il est facile de prendre cela pour acquis. J’ai vu cela il ya 10 ans en recherchant un GUI à mon Lisp. Pas de problème, il y avait 9 offres différentes. Le problème, c’est qu’aucun des 9 n’a été correctement documenté et aucun n’était sans bugs. Fondamentalement, chaque personne avait mis en œuvre sa propre solution et il a travaillé pour lui, ce qui était très bien. C’est une attitude BBM; Cela fonctionne pour moi et je le comprends. C’est aussi le produit de ne pas avoir besoin ou de vouloir l’aide de quelqu’un d’autre pour faire quelque chose.

Encore une fois, considérez le langue de programmation C dans cette expérience de pensée. En raison de la difficulté de faire C objet orienté, seules deux tentatives sérieuses au problème ont fait toute traction: C + + et Objective-C. Objective-C est le plus populaire sur le Macintosh, tandis que C + + règles partout ailleurs. Cela signifie que, pour une plate-forme donnée, la question de savoir quelle extension orientée objet de C à l’utilisation a déjà été définitivement répondu. Cela signifie que les installations orientées objet de ces langues ont été documentées, que les environnements de développement intégrés en sont conscients, que les bibliothèques de codes sont compatibles avec eux, et ainsi de suite.

L’essai du Dr. Mark Tarver sur Lispers bipolaire fait le point:

À l’inverse, l’approche C / C ++ est très différente. Il est si difficile de faire quoi que ce soit avec une pince à épiler et de la colle que tout ce que vous faites important sera une véritable réussite. Vous voulez le documenter. Aussi vous êtes susceptible d’avoir besoin d’aide dans tout projet C de taille significative; Donc vous êtes susceptible d’être social et de travailler avec les autres. Vous devez, juste pour obtenir quelque part.

Et tout cela, du point de vue d’un employeur, est attrayant. Dix personnes qui communiquent, documentent les choses correctement et travaillent ensemble sont préférables à un BBM piratage Lisp qui ne peut être remplacé par un autre BBM (si vous pouvez en trouver un) dans l’événement pas peu probable qu’il va, à un moment, descendre sans être Réinitialisable.

Par conséquent, ceux qui connaissent déjà C ne demandent pas: « Quel système d’objets dois-je apprendre? » Au lieu de cela, ils utilisent C ++ ou Objective-C en fonction de ce que leurs collègues utilisent, puis passez à « Comment puis-je utiliser la fonction orientée objet X? » Réponse: « Goog il et vous trouverez. »

Les vrais hackers, bien sûr, savent depuis longtemps que la programmation orientée objet n’est pas la panacée que revendiquent ses partisans. Les vrais pirates ont adopté des concepts plus avancés tels que les structures de données immuables, l’inférence de type, l’évaluation paresseuse, les monades, les flèches, l’appariement de motifs, la programmation par contraintes, etc. Real Hackers ont également su, pendant un certain temps, que C et C ++ ne sont pas appropriés pour la plupart des programmes qui n’ont pas besoin de faire arbitraire le peu-fiddling. Néanmoins, la malédiction de Lisp tient toujours.

Certains amateurs de Lisp ont étudié la culture actuelle des langues académiques (Haskell, Ocaml, et cetera) et les ont trouvés vouloir, en disant que toute caractéristique de leur est soit déjà présent dans Lisp ou peut être facilement mis en œuvre – and improved upon – avec Lisp Macros. Ils ont probablement raison.

Pitié les Lisp Pirates.

Dr. Mark Tarver – deux fois cité, ci-dessus – a écrit un dialecte de Lisp appelé Qi. Il est inférieur à dix mille lignes de macros en cours d’exécution sur Clisp. Il implémente la plupart des fonctionnalités uniques de Haskell et OCaml. À certains égards, Qi les surpasse. Par exemple, le moteur d’inférence de type Qi est Turing

Achevée. In a world où des équipes d’universitaires talentueux étaient nécessaires pour écrire Haskell, un homme, le Dr Tarver a écrit Qi tout par son solitaire.

Lisez ce paragraphe, encore une fois, et extrapolez.

Exercice pour le lecteur: Imaginez qu’une forte rivalité se développe entre Haskell et Common Lisp. Que se passe-t-il ensuite?

Réponse: La malédiction Lisp s’introduit. Chaque deuxième ou troisième hacker Lisp sérieux lancera sa propre mise en œuvre d’évaluation paresseuse, de pureté fonctionnelle, de flèches, d’appariement de motifs, d’inférence de type et le reste. La plupart de ces projets seront des opérations de loup-loup. Ainsi, ils auront quatre-vingts pour cent des caractéristiques que la plupart des gens ont besoin (un différent quatre-vingt pour cent dans chaque cas). Ils seront mal documentés. Ils ne seront pas portables sur les systèmes Lisp. Certains seront très prometteurs avant d’être abandonnés alors que le responsable du projet s’en va payer ses factures. Plusieurs vont battre Haskell sur telle ou telle dimension (encore une fois différente dans chaque cas), mais leur acceptation sera entravée par des guerres de flamme sur le groupe comp.lang.lisp Usenet.

Fin du jeu: Une collection de macros aléatoires de vieux pirateLisp ajoutera à une application non documentée, instable, punaise –monté de 80% de Haskell parce que Lisp est plus puissant que Haskell.

La morale de cette histoire est que les effets secondaires et tertiaires importent. La technologie n’affecte pas seulement ce que nous pouvons faire en ce qui concerne les questions technologiques, elle affecte également notre comportement social. Ce comportement social peut boucler en arrière et affecter les questions technologiques initiales à l’étude.

Lisp est un exemple douloureusement éloquent de cette leçon. Lisp est si puissant, qu’il encourage l’indépendance individuelle au point de sanglante. Cette indépendance a produit une étonnamment bonne innovation comme dans les jours de Lisp Machine. Cette même indépendance entrave également les efforts visant à relancer les systèmes de « Lisp tout le chemin vers le bas » de l’ancien; Aucun projet « Lisp OS » n’a recueilli de masse critique depuis la disparition de Symboliques et LMI.

Un résultat de ces effets secondaires et tertiaires est que, même si Lisp est le langage le plus expressif jamais, de sorte qu’il est théoriquement impossible de faire un langue plus expressif, Lispers aura encore des choses à apprendre d’autres langages de programmation. Les gars Banalités a enseigné à tout le monde – y compris les Lisp pirates- une chose ou deux sur la programmation orientée objet. Les langues de programmation Clean et le combo Mozart/Oz peuvent avoir quelques surprises.

La malédiction Lisp ne contredit pas la maxime de Stanislav Datskovskiy: Les employeurs préfèrent que les travailleurs soient fongibles, plutôt que maximalement productifs. Trop vrai. Avec une grande difficulté quelqu’un plomb la vénalité de la classe de gestion. Cependant, les dernières lignes de son essai sont problématiques. En être témoin:

Quant au monde du « logiciel libre », il s’oppose avec ardeur aux dogmes industriels dans la rhétorique, mais pas du tout dans la pratique. Aucun concept évité par les enfers de la ferme de cube n’a jamais gagné la vraie traction parmi les masses d’amateur.

Dans une note de bas de page, il offre Linux comme un exemple de cette réticence à poursuivre des idées différentes. Pour être sûr, il a un point quand il s’agit de operating systems (le commentaire le plus élevé, en particulier, est furieusement obtus). Il n’a pas de point quand il s’agit de langues de programmation. Python et Ruby ont été influencés par Lisp. Beaucoup de leurs fans expriment le respect pour Lisp et une partie de leur intérêt a augmenté la renaissance Lisp. Avec un peu de justice, JavaScript a été décrite comme « Schème dans les vêtements de C » en dépit d’origine dans ces enfers de cube farm hells.

Néanmoins, en dépit de cette influence, à la fois dans le monde des affaires et ouvrir source, Lisp n’a encore qu’une fraction de la part d’esprit de développeur que la culture actuelle des langues de script avancés ont attiré. L’ouverture d’esprit des MBA ne peut pas être la seule explication pour cela. La malédiction Lisp a plus de pouvoir explicatif.

Les environnements de développement libre disponibles pour Lisp illustrent encore la malédiction Lisp.

C’est embarrassant de le signaler, mais il faut le faire. Oubliez la machine Lisp; Nous n’avons même pas de systèmes de développement qui correspondent à ce que le average Smalltalk hacker prend pour acquis (« J’ai toujours senti Lisp est la langue supérieure et Banalités est l’environnement supérieur. » –Ramon Leon). À moins qu’ils ne payent des milliers de dollars, les hackers Lisp sont toujours bloqués avec Emacs.

James Gosling, l’auteur du premier Emacs qui a fonctionné sous Unix, has correctly pointed out qu’Emacs n’a pas fondamentalement changé depuis plus de vingt ans. C’est parce que les responsables d’Emacs disposent toujours d’un code en couches au sommet d’une conception qui a été résolue lorsque Emacs était un projet d’étudiant diplômé au MIT AI Lab, c’est-à-dire quand le développement d’Emacs était encore indirectement financé par la dette nationale. Un Slashdotter peut objecter qu’Emacs est déjà très capable et peut faire n’importe quoi que n’importe quel autre environnement de développement peut faire, seulement mieux. who have used Lisp Machines dire le contraire.

Alors pourquoi les hackers Lisp ne mettent-ils pas les Banalités à leur place? Pourquoi ne font-ils pas un système de développement gratuit qui rappelle certaines des gloires perdues du LispM, même si elles ne peuvent pas reproduire un autre LispM?

La raison pour laquelle cela ne se produit pas est à cause de la malédiction Lisp. Un grand nombre de Lisp pirate devraient coopérer les uns avec les autres. Regardez de plus près: Un grand nombre de gens qui deviennent des Lisp pirates devraient coopérer les uns avec les autres. Et ils auraient à coopérer les uns avec les autres sur un design qui n’était pas déjà donné depuis le début. Et il n’y aurait pas de discipline externe, comme un capital-risque ou un autre maître d’entreprise, pour les garder sur la bonne voie.

Chaque projet a des frictions entre membres, des désaccords, des conflits de style et de philosophie. Ces problèmes sociaux sont contrecarrés par le fait qu’aucun grand projet ne peut être réalisé autrement. « Nous devons tous accrocher ensemble, ou nous allons tous accrocher séparément. » Mais l’expressivité de Lisp rend cette force antagoniste beaucoup plus faible; On peut toujours commencer son propre projet. Ainsi, les pirates informatiques décident que le problème ne vaut pas la peine. Ainsi, ils ont soit quitté le projet, soit ne se joignent pas au projet pour commencer. C’est la malédiction Lisp.

On pourrait même pirater Emacs pour obtenir quelque chose qui est assez bon. Ainsi, la Malédiction Lisp est l’allié de Pire est Mieux.

Le pouvoir expressif de Lisp a des inconvénients. Il n’y a pas de dîner gratuit.

Cet essai a fait la première page du thirteenth issue de Pirate Mensuel.

Comme la façon dont je pense et la conception de sites Web? Engagez-moi!

© Rudolf Winestock, Tous droits réservés

Cet article a été publié le vendredi 15 avril 2011.

John Miller
Follow us

John Miller

John has worked in investment banking for 10 years and is the main author at 7 Binary Options. He holds a Master's degree in Economics.
John Miller
Follow us

Leave a Reply

Your email address will not be published. Required fields are marked *