Traduction 1001-soldes.com ©2017 Alle Rechten Gereserveerd | Source : http://www.winestockwebdesign.com/Essays/Lisp_Curse.html

De vloek van de Lisp

door Rudolf Winestock

 

Dit essay is nog een poging om de kracht van de Lisp-programmeertaal te verzoenen met het onvermogen van de Lisp-gemeenschap om hun pre- AI Winter- prestaties te reproduceren. Zonder twijfel is Lisp een invloedrijke bron van ideeën, zelfs tijdens zijn terugtrekkingsperiode. Dat feit, plus de schittering van de verschillende Lisp Machine-architecturen, en de huidige Lisp-renaissance na meer dan een decennium in de wildernis, laten zien dat Lisp partisans een beetje rechtvaardiging moeten hebben voor hun smugness. Niettemin hebben ze de kracht van Lisp niet in een beweging met overweldigend momentum kunnen vertalen.

In dit essay argumenteer ik dat Lisp's expressieve kracht eigenlijk een oorzaak is van zijn gebrek aan momentum.

De kracht van Lisp is zijn eigen ergste vijand.

Hier is een gedachte-experiment om het te bewijzen: Neem twee programmeertalen, die niet objectief zijn. Uw missie, als u ervoor kiest om het te accepteren, is om hen objectgericht te maken, zodat ze achterwaarts compatibel zijn met de oorspronkelijke talen, enkele randzaken. Het invoeren van een paar programmeertalen in dit gedachteexperiment laat zien dat dit gemakkelijker is in sommige talen dan bij anderen. Dat is het punt van het gedachte-experiment. Hier is een triviaal voorbeeld: Intercal en Pascal.

Maak dit experiment nu interessant: Stel je voor om objectoriëntatie toe te voegen aan de C en Schema programmeertalen. Schema objectgericht maken is een tweede huiswerkopdracht. Aan de andere kant, voegt objectoriëntatie toe aan C de programmeringskoteletten van Bjarne Stroustrup.

De gevolgen van deze afwijking in nodig talent en inspanning veroorzaken de Lisp Curse :

Lisp is zo krachtig dat problemen die technische problemen in andere programmeertalen zijn, zijn sociale problemen in Lisp.


Overweeg het geval van Scheme, opnieuw. Aangezien Schema objectgericht is, is het zo makkelijk, veel Scheme hackers hebben dit gedaan. Meer in het bijzonder hebben veel individuele systeemhackers dit gedaan. In de jaren negentig leidde dit tot een ware inventarislijst van object-georiënteerde pakketten voor de taal. De Paradox of Choice , alleen, gewaarborgd dat geen van hen normaal zou worden. Nu sommige implementaties van het Schema hun eigen objectoriëntatie hebben, is het niet zo erg. Niettemin leidde het feit dat veel van deze pakketten het werk van eenzame personen waren, tot problemen die Olin Shivers schreef over het documenten van de Scheme Shell, scsh.

Programma's geschreven door individuele hackers hebben de neiging om het scratch-an-itch-model te volgen. Deze programma's zullen het probleem oplossen dat de hacker zelf heeft zonder daarbij noodzakelijke onderdelen van het probleem te behandelen, waardoor het programma nuttiger zou zijn voor anderen. Bovendien werkt het programma zeker aan de eigen installatie van deze eenmalige hacker, maar kan niet worden overgedragen aan andere Scheme implementaties of op dezelfde implementatie van de Schema op andere platforms. Documentatie kan ontbreken. Het is in wezen een project dat wordt gedaan in de overvolle vrije tijd van de hacker. Het programma kan zich lijden als er werkelijke verantwoordelijkheden op de hacker zouden ontstaan. Zoals Olin Shivers heeft opgemerkt, betekent dit dat deze projecten met één man-band de neiging hebben om tachtig procent van het probleem op te lossen.

Dr. Mark Tarver's essay, The Bipolar Lisp Programmer , heeft een geschikte beschrijving van dit fenomeen. Hij schrijft van deze eenzame wolf Lisp hackers en hun

... onvermogen om dingen goed af te maken. De uitdrukking 'throw-away design' is absoluut gemaakt voor de BBM en komt uit de Lisp gemeenschap. Lisp stelt u in staat om zo makkelijk dingen uit te zoeken, en het is makkelijk om dit vanzelfsprekend te nemen. Ik zag dit 10 jaar geleden bij het zoeken naar een GUI naar mijn Lisp. Geen probleem, er waren 9 verschillende aanbiedingen. Het probleem was dat geen van de 9 behoorlijk gedocumenteerd was en er geen sprake was van een fout. Eigenlijk had elke persoon zijn eigen oplossing geïmplementeerd en het werkte zo goed voor hem. Dit is een BBM- houding; het werkt voor mij en ik begrijp het. Het is ook het product dat iemand anders geen hulp nodig heeft of wil dat iemand anders iets doet.


Nogmaals, beschouw de C-programmeertaal in dat gedachte-experiment. Vanwege de moeilijkheid om C objectgericht te maken, hebben slechts twee ernstige pogingen op het probleem een ​​tractie gemaakt: C ++ en Objective-C. Objective-C is meest populair op de Macintosh, terwijl C ++ overal anders regelt. Dat betekent dat voor een bepaald platform de vraag is welke object-georiënteerde uitbreiding van C te gebruiken al definitief beantwoord is. Dat betekent dat de objectgerichte faciliteiten voor die talen zijn gedocumenteerd, die geïntegreerde ontwikkelingsomgevingen zich ervan bewust zijn, die codebibliotheken met hen compatibel zijn, enzovoort.

Dr. Mark Tarver's essay over bipolaire Lispers maakt het punt:

In tegenstelling hiermee is de C / C ++-aanpak heel anders. Het is zo verdomd om iets met tweezers te doen en te lijmen dat alles wat je doet, een echte prestatie zal zijn. U wilt het documenten. Ook bent u aansprakelijk voor hulp in elk C-project van significante omvang; dus je bent in staat om sociaal te zijn en met anderen te werken. Je moet, om ergens te komen.

En alles wat vanuit het oogpunt van een werkgever aantrekkelijk is. Tien mensen die communiceren, documenten goed delen en samenwerken, hebben de voorkeur aan één BBM- hacking Lisp die alleen kan worden vervangen door een andere BBM (als je er een kunt vinden) in het niet onwaarschijnlijke geval dat hij op een gegeven moment zal gaan zonder te zijn rebootable.

Daarom, degenen die al C kennen, vragen niet "Welk object systeem moet ik leren?" In plaats daarvan gebruiken ze C ++ of Objective-C afhankelijk van wat hun collega's gebruiken en ga dan verder naar "Hoe gebruik ik objectgerichte functie X ?" Antwoord: "Ga het, en gij zult vinden."


Echte Hackers hebben natuurlijk al lang geweten dat objectgerichte programmering niet de panacea is die zijn partisanen hebben beweerd. Echte Hackers hebben zich verplaatst naar meer geavanceerde concepten, zoals onveranderlijke datastructuren, type inferentie, luie evaluatie, monads, pijlen, patroon matching, beperking gebaseerde programmering, enzovoort. Echte Hackers hebben ook al een tijdje bekend dat C en C ++ niet geschikt zijn voor de meeste programma's die geen willekeurige bit-fiddling nodig hebben. Niettemin houdt de Lisp Curse nog steeds vast.

Enkele smug Lisp-liefhebbers hebben de huidige opbrengst academische talen (Haskell, Ocaml, et cetera) onderzocht en gevonden dat ze willen, en zeggen dat elk kenmerk van hun is al in Lisp aanwezig of kan makkelijk geïmplementeerd worden en verbeterd worden met Lisp macro's. Ze hebben waarschijnlijk gelijk.

Jammer de Lisp hackers.


Dr. Mark Tarver - tweemaal geciteerd, bovengeschreven een dialect van Lisp genaamd Qi . Het is minder dan tienduizend lijnen macro's die bovenop Clisp lopen. Het implementeert de meeste unieke eigenschappen van Haskell en OCaml. In sommige opzichten overtreft Qi hen. Bijvoorbeeld, Qi's type inferencing engine is Turing compleet . In een wereld waar sprekers van talentvolle academici nodig waren om Haskell te schrijven, een man, schreef Dr. Tarver Qi alles door zijn eenzame.

Lees die paragraaf opnieuw, en extrapoleren.


Oefening voor de lezer : Stel je voor dat er een sterke rivaliteit ontstaat tussen Haskell en Common Lisp. Wat gebeurt er nu?

Antwoord : De Lisp Curse schopt in. Elke tweede of derde serieuze Lisp hacker zal zijn eigen implementatie van luie evaluatie, functionele zuiverheid, pijlen, patroon matching, type inferencing en de rest rollen. De meeste van deze projecten zullen lone-wolf operaties zijn. Zo zullen zij tachtig procent van de eigenschappen hebben die de meeste mensen nodig hebben (een ander tachtig procent in elk geval). Zij zullen slecht gedocumenteerd zijn. Ze zullen niet over de Lisp-systemen worden vervoerd. Sommigen zullen veel belofte tonen voordat ze worden verlaten, terwijl de projecthouder gaat gaan om zijn rekeningen te betalen. Verschillende zullen Haskell langs deze of die dimensie verslaan (opnieuw in elk geval anders), maar hun acceptatie wordt belemmerd door vlamoorlogen op de comp.lang.lisp Usenet-groep.

Endgame : Een willekeurige oude Lisp hacker-verzameling van macro's zal een ongedocumenteerde, onportable, bug-run implementatie van 80% van Haskell opleveren omdat Lisp krachtiger is dan Haskell.


Het moraal van dit verhaal is dat secundaire en tertiaire effecten van belang zijn . Technologie beïnvloedt niet alleen wat we kunnen doen met betrekking tot technologische problemen, maar beïnvloedt ook ons ​​sociaal gedrag. Dit sociaal gedrag kan teruglopen en beïnvloeden de oorspronkelijke technologische problemen die onderzocht worden.

Lisp is een pijnlijke eloquent voorbeeld van deze les. Lisp is zo krachtig, dat het individuele onafhankelijkheid aanmoedigt tot bloeddruk. Deze onafhankelijkheid heeft verbluffend goede innovatie geproduceerd zoals in de Lisp Machine dagen. Deze zelfstandige onafhankelijkheid belemmert ook de inspanningen om de oude, 'oude,' wegwijzende systemen te herleven; geen project "Lisp OS" heeft kritische massa verzameld sinds de ondergang van Symbolics en LMI.

Een gevolg van deze secundaire en tertiaire effecten is dat, zelfs als Lisp de meest expressieve taal ooit is, dat het theoretisch onmogelijk is om een ​​meer expressieve taal te maken, zal Lispers nog dingen hebben om te leren van andere programmeertalen . De Smalltalk-mannen leerden iedereen - waaronder Lisp hackers - een of twee dingen over object georiënteerde programmering. De Clean Programming Language en de Mozart / Oz combo kunnen een paar verrassingen van zichzelf hebben.


De Lisp Curse is niet in strijd met het maxim van Stanislav Datskovskiy : Werkgevers hebben veel de voorkeur aan dat werknemers fungibel zijn, in plaats van maximaal productief. Te Waar. Met grote moeite lijdt iemand de rustigheid van de managementklasse. De laatste lijnen van zijn essay zijn echter problematisch. Te weten:

Wat de 'free software'-wereld betreft, is het in strijd met industriële dogma's in retoriek, maar helemaal niet in de praktijk. Geen concept dat door kubusboerderijhells wordt vermeden, heeft ooit een echte tractie onder de amateurmassa's behaald.

In een voetnoot biedt hij Linux als voorbeeld van deze onwilligheid om verschillende ideeën na te streven. Natuurlijk heeft hij een punt als het gaat om besturingssystemen (het grootste commentaar, in het bijzonder, is besmettelijk stomp). Hij heeft geen punt bij het programmeren van talen. Python en Ruby werden beïnvloed door Lisp. Veel van hun fans uiten respect voor Lisp en een deel van hun interesse heeft de Lisp renaissance uitgebreid. Met wat gerechtigheid is JavaScript beschreven als "Schema in C's kleding", ondanks het ontstaan ​​van die kubusboerderijhells .

Niettemin heeft Lisp, ondanks deze invloed, in zowel de bedrijfs- als open source werelden nog maar een fractie van het ontwikkelaarsgeest, dat het huidige gewas van geavanceerde scripttaal heeft aangetrokken. De gesloten houding van MBA's kan niet de enige uitleg hiervoor zijn. De Lisp Curse heeft meer verklarende kracht.


De gratis ontwikkelingsomgevingen die beschikbaar zijn voor Lisp, illustreren verder de Lisp Curse.

Het is beschamend om dit uit te wijzen, maar het moet wel gedaan worden. Vergeet de Lisp Machine; we hebben niet eens ontwikkelingssystemen die overeenkomen met wat de gemiddelde mSalltalk hacker vanzelfsprekend nodig heeft ("Ik heb altijd meegemaakt dat Lisp de superieure taal is en Smalltalk is de superieure omgeving." - Ramon Leon ). Tenzij ze duizenden dollars betalen, zijn Lisp hackers nog steeds vast bij Emacs.

James Gosling, de auteur van de eerste Emacs die op Unix liep, heeft erop gewezen dat Emacs niet meer dan twintig jaar fundamenteel is veranderd. Dit komt doordat de Emacs-ondernemers nog steeds een layering-code bovenop een ontwerp hebben, dat werd teruggevonden toen Emacs een afstudeerproject in het MIT AI Lab was, dat wil zeggen, toen Emacs-ontwikkeling nog steeds indirect gefinancierd werd door de nationale schuld. Een Slashdotter kan bezwaar maken dat Emacs al in staat is en kan alles doen wat een andere ontwikkelomgeving kan, maar beter. Degenen die Lisp Machines hebben gebruikt, zeggen anders.

Dus waarom zetten de Lisp hackers de Smalltalk-jongens niet op hun juiste plaats? Waarom maken ze geen gratis ontwikkelingssysteem dat een aantal van de verloren glorieën van de LispM in herinnering brengt, zelfs als ze geen andere LispM kunnen reproduceren?

De reden waarom dit niet gebeurt is vanwege de Lisp Curse. Grote aantallen Lisp hackers zouden met elkaar moeten samenwerken. Kijk nauwkeuriger: grote aantallen van de mensen die Lisp hackers worden, zouden met elkaar moeten samenwerken. En zij zouden met elkaar moeten samenwerken op een ontwerp dat vanaf het begin niet al een gegeven was. En er zou geen externe discipline zijn, zoals een venture capitalist of andere corporate master, om ze op de goede weg te houden.

Elk project heeft wrijving tussen leden, meningsverschillen, conflicten over stijl en filosofie. Deze sociale problemen worden tegengegaan door het feit dat geen groot project anders kan worden bereikt. "We moeten allemaal samen hangen, of we zullen allemaal apart hangen." Maar de expressiviteit van Lisp maakt deze compenserende kracht veel zwakker; men kan altijd een eigen project starten. Dus beslissen individuele hackers dat de moeite het niet waard is. Dus ze stoppen met het project, of beginnen het project niet mee te beginnen. Dit is de Lisp Curse.

Men zou zelfs Emacs kunnen hakken om iets te krijgen dat goed genoeg is . Zo is de Lisp Curse de bondgenoot van Worse is Better.


De expressieve kracht van Lisp heeft nadelen. Er is niet zoiets als een gratis lunch.

Zoals ik denk en ontwerp websites? Huur me in!

© Rudolf Winestock, Alle Rechten Gereserveerd

Dit essay is gepubliceerd op vrijdag 15 april 2011.