Lisp Prekletstvo

Rudolf Winestock

Posodobitev 6. oktobra 2017. N.B .: Prosim, ne prenašajte tega v Hacker News! Oglejte si rezultate iskanja Hacker News za ta esej. Oglejte si opombo za prvi vnos: Pridi, vsi! Končajmo mrtvega konja še enkrat! Če želite pridobiti e-pošto Hacker News, namesto tega poskusite oddati Eternal Mainframe.

Ta esej je še en poskus združevanja moči programskega jezika Lisp z nezmožnostjo skupnosti Lisp, da reproducira svoje pred- AI Zimski dosežki. Brez dvoma je Lisp vpliven vir idej celo v času njegovega umika. To dejstvo, poleg briljantnosti različnih Lisp strojnih arhitektur in trenutne renesanse Lisp po več kot desetletju v puščavi, dokazujejo, da morajo partizani iz Lispa imeti nekaj utemeljitve za svojo smugnost. Kljub temu niso mogli prevesti moči Lispa v gibanje z močnejšim zagonom.

V tem eseju trdim, da je Lispova ekspresivna moč dejansko vzrok za pomanjkanje zagona.

Moč Lisp je njen najhujši sovražnik.

Tukaj je miselni eksperiment, ki ga dokaže: vzemite dva programska jezika, od katerih nobeden ni predmetno usmerjen. Tvoje poslanstvo, če se odločite, da ga sprejmete, je, da postanejo objektno usmerjene, tako da so lahko nazaj v skladu z izvirnimi jeziki, modulo nekaj primerov robov. Vstavljanje katerega koli para programskih jezikov v ta miselni eksperiment bo pokazalo, da je to z nekaterimi jeziki lažje kot z drugimi. To je točka miselnega eksperimenta. Tukaj je trivialen primer: Intercal in Pascal.

Zdaj naredite ta miselni eksperiment zanimiv: zamislite dodajanje objektne orientacije na programski jeziki C in Scheme. Izdelava sheme je objektivno usmerjena naloga naloge druge učence. Po drugi strani pa dodajanje ciljne usmerjenosti na C zahteva programiranje odrezkov Bjarne Stroustrupa.

Posledice te razlike v potrebnih talentih in naporu povzročajo Lisp Curse:

Lisp je tako močan, da so problemi, ki so tehnična vprašanja v drugih programskih jezikih, družbena vprašanja v Lispu.

———————————-

Še enkrat razmislite o primeru sheme. Ker je shema objektno usmerjena, je tako enostavno, veliko hekerjev Scheme je to storilo. Še več, mnogi posamezni hekerji Scheme so to storili. V devetdesetih letih je to pripeljalo do resničnega inventarja seznama objektno orientiranih paketov za jezik. Paradoks izbire sam, zagotovil, da nobena od njih ne bi postala standardna. Zdaj, ko imajo nekatere izvedbe Sheme lastne objektne usmeritve, to ni tako slabo. Kljub temu je dejstvo, da so bili mnogi od teh paketov delo posameznih posameznikov, privedli do težav, o katerih je Olin Shivers pisal o dokumentiranju Sheme Shell, scsh.

Programi, ki so jih napisali posamezni hekerji, ponavadi sledijo modelu praske in anomalije. Ti programi bodo rešili težavo, ki jo ima sam hacker, ne da bi nujno obravnaval povezane dele problema, zaradi česar bi bil program bolj uporaben za druge. Poleg tega bo program zagotovo deloval na lastnem setupu samega samega sebe, vendar morda ni prenosljiv na druge izvedbe Sheme ali na isto izvedbo sheme na drugih platformah. Dokumentacija je morda pomanjkljiva. Ker je v bistvu projekt, izveden v prostem času hackerja, lahko program trpi, če se odgovornost za hčerko nanaša na resnično odgovornost. Kot je zapisal Olin Shivers, to pomeni, da ti projekti z enim samim človekom skušajo rešiti osemdeset odstotkov problema.

Esej dr. Marka Tarvera, The Bipolar Lisp Programmer, ima ustrezen opis tega pojava. Piše o teh hekerjih Lispovega lika in njihovega

… nezmožnost končanja stvari pravilno. Izraz “odmetavanje” je popolnoma izdelan za BBM in izvira iz skupnosti Lisp. Lisp vam omogoča, da preprosto preklete stvari, tako enostavno, in to je enostavno, da to samoumevno. To sem videl pred 10 leti, ko sem iskal GUI za moj Lisp. Ni problema, bilo je 9 različnih ponudb. Težava je bila, da nobeden od devetih ni pravilno dokumentiran in noben ni bil brez napak. V bistvu je vsaka oseba izvedla svojo rešitev in delala zanj, tako da je bilo v redu. To je odnos BBM; deluje zame in razumem. Prav tako je izdelek, ki ne potrebuje ali ne želi, da bi kdo drug pomagal narediti nekaj.

————————————-

Še enkrat razmislite o programskem jeziku C v tem miselnem eksperimentu. Zaradi težav pri usmerjanju predmeta C so samo dva resna poskusa problema povzročila poljuben oprijem: C + + in Objective-C. Objective-C je najbolj priljubljen na Macintoshu, medtem ko pravila C + + veljajo povsod drugje. To pomeni, da je za določeno platformo vprašanje, katera objektno usmerjena razširitev C za uporabo je že bila dokončno odgovorjena. To pomeni, da so objektno usmerjene zmogljivosti za te jezike dokumentirane, da se jih integrirano razvojno okolje zaveda, da so knjižnice kode združljive z njimi ipd.

Esej dr. Marka Tarverja o bipolarnem Lispersu poudarja:

Nasprotno pa je pristop C / C ++ precej drugačen. Tako je prekleto težko narediti karkoli s pinceto in lepilom, da bo vse kar je pomembno, resničen dosežek. Bi ga dokumentirali. Tudi vi lahko potrebujete pomoč pri katerem koli projektu C velikih velikosti; zato ste lahko socialni in sodelujte z drugimi. Moraš, samo da bi prišel nekam.

In vse to, z vidika delodajalca, je privlačno. Deset ljudi, ki komunicirajo, dokumentirajo stvari in delajo skupaj, so boljši od BBM-ja, ki se lahko pojavi z Lispom, ki ga lahko zamenja samo še en BBM (če ga najdete) v malo verjetnem primeru, ponovno zagnati.

Torej, tisti, ki že poznajo C, ne sprašujejo “Kateri sistem objektov bi se moral naučiti?” Namesto tega uporabljajo C + + ali Objective C, odvisno od tega, kaj njihovi sodelavci uporabljajo, nato pa se premaknite na “Kako uporabim objektno orientirano funkcijo X? “Odgovor:” Goog in ga boste našli. “

———————————-

Real Hackers, seveda, že dolgo vedo, da objektno usmerjeno programiranje ni rešitev, za katero so trdili njegovi partizani. Real Hackers so se preselili v bolj napredne koncepte, kot so nespremenljive podatkovne strukture, vrste inferenc, lena ocena, monads, puščice, ujemanje vzorcev, programiranje na podlagi omejitev in tako naprej. Real Hackers so že dolgo vedeli, da C in C + + niso primerni za večino programov, ki ne potrebujejo samodejnega prevajanja. Kljub temu Lisp Curse še vedno drži.

Nekateri lahkotni ljubitelji Lisp so pregledali sedanje posevke akademskih jezikov (Haskell, Ocaml, itd.) In ugotovili, da želijo, da so njihove lastnosti bodisi že prisotne v Lispu ali jih je mogoče enostavno izvajati in izboljšati z Lispom makri. Verjetno so prav.

Škoda Lisp hekerji.

——————————————–

Dr. Mark Tarver – dvakrat citiran, zgoraj – napisal narečje Lisp-a, imenovane Qi. Manj manj kot deset tisoč linij makrov na vrhu Clisp. Izvaja večino edinstvenih funkcij Haskell in OCaml. V nekaterih pogledih jih Qi presega. Na primer, motor Qi-jevega inferenčnega motorja je Turing končan. V svetu, v katerem so bili potrebni člani nadarjenih akademikov, da bi napisali Haskella, je en človek, dr. Tarver napisal Qi vse do svoje samotne.

Ponovno preberite ta odstavek in ekstrapolirajte.

—————————————–

Vaja za bralca: Predstavljajte si, da se med Haskellom in Common Lispom razvije močna tekmovalnost. Kaj se zgodi potem?

Odgovor: Lisp Curse udari. Vsak drugi ali tretji resni Lisperjev hacker bo sam po sebi uresničil leno vrednotenje, funkcionalno čistost, puščice, ujemanje vzorcev, vrste inferenc in ostalo. Večina teh projektov bo operacija samotarjev. Tako bodo imeli osemdeset odstotkov lastnosti, ki jih potrebujejo večina ljudi (v vsakem primeru je osemdeset odstotkov). Ti bodo slabo dokumentirani. Ne bodo prenosljivi preko sistemov Lisp. Nekateri bodo pokazali veliko obljubo, preden bodo opustili, medtem ko bo vzdrževalec projekta začel plačevati račune. Nekateri bodo premagali Haskellja po tej ali drugi dimenziji (spet drugič v vsakem primeru), vendar bo njihovo sprejetje oviralo plamensko vojno v skupini comp.lang.lisp Usenet.

Endgame: Naključna zbirka makrov Lispovega hackerja iz starega časa bo dodala nedokumentirano, nepopravljivo in napačno implementirano 80% Haskell-a, ker je Lisp močnejši od Haskell-a.

——————————————-

Moralo te zgodbe je, da so sekundarni in terciarni učinki pomembni. Tehnologija ne vpliva samo na to, kar lahko storimo v zvezi s tehnološkimi vprašanji, temveč vpliva tudi na naše družbeno vedenje. To socialno vedenje lahko zanese nazaj in vpliva na izvirna tehnološka vprašanja, ki se obravnavajo.

Lisp je boleča zgovorna vzorec te lekcije. Lisp je tako močan, da spodbuja individualno neodvisnost do točke krvavosti. Ta neodvisnost je prinesla osupljivo dobre inovacije kot v dnevih Lisp Machine. Ta ista neodvisnost ovira tudi prizadevanja za oživitev sistemov starih “Lisp vse do konca”; noben projekt “Lisp OS” je zbral kritično maso od zamude Symbolics in LMI.

Eden od rezultatov teh sekundarnih in terciarnih učinkov je, da tudi če Lisp je najbolj ekspresiven jezik doslej, tako da je teoretično nemogoče ustvariti izraznejši jezik, bo Lispers še vedno imel stvari za učenje iz drugih programskih jezikov. Fantje Smalltalk so učili vse – vključno z Lisp hekerji – stvar ali dve o objektno usmerjenem programiranju. Čisti programski jezik in kombinacija Mozart / Oz imajo lahko nekaj svojih presenečenj.

—————————————-

Lisp Curse ne nasprotuje najvišji stopnji Stanislava Datskovskega: delodajalci raje želijo, da so delavci zamenljivi in ne maksimalno produktivni. Preveč res. Z velikimi težavami se kdorkoli potopi v vodstvo razreda. Vendar pa so zadnje črte njegovega eseja problematične. Če želite:

Kar se tiče “sveta svobodne programske opreme”, nestrpno nasprotuje industrijskim dogmam v retoriki, vendar v praksi sploh ni. Noben koncept, ki ga je preprecil kukec kmetijskih pekelov, je kdaj dobil resni vlek med amaterskimi marsi.

V opombi podaja Linux kot primer te nepripravljenosti za iskanje različnih idej.
Seveda ima smisel ko gre za operacijske sisteme (najvišji komentar je še posebej nenavadno tept). Nima smisla, ko govorimo o programskih jezikih. Na Python in Ruby je vplival Lisp. Mnogi njihovi oboževalci izražajo spoštovanje do Lispa in nekateri njihovi interesi so povečali renesanso Lisp. Z nekaj pravičnosti je bil JavaScript opisan kot “Shema v oblačilih C”, kljub temu, da je v njih prišlo kukovi kmetov.

Kljub temu pa kljub temu vplivu v podjetjih in v odprtih virih sveta Lisp še vedno ima le majhen del deleža v razvijalskem računu, ki ga je pritegnila sedanja kultura naprednih skriptnih jezikov. Zaprto gledanje MBA-jev ne more biti edina razlaga za to. Lisp Curse ima več pojasnjevalnih moči.

——————————————

Osnove brezplačnega razvoja, ki so na voljo za Lisp, dodatno ponazarjajo Lisp Curse.

To je nerodno, da to poudarimo, vendar je treba storiti. Pozabite na Lispov računalnik; nimamo niti razvojnih sistemov, ki bi se ujemali s tem povprečen Smalltalk heker je samoumeven (“Vedno sem mislil, da je Lisp vrhunski jezik in Smalltalk je vrhunsko okolje” – Ramon Leon). Če ne plačajo na tisoče dolarjev, so Lispovi hekerji še vedno zaljubljeni v Emacs.

James Gosling, avtor prvih Emacov, ki je tekel na Unixu, pravilno poudaril, da Emacs v več kot dvajsetih letih ni bistveno spremenil. To je zato, ker so Emacs vzdrževalci še vedno kodirni sloj na vrhu zasnove, ki je bila poravnana nazaj, ko je bil Emacs projekt Mestnega študentskega programa MIT AI, t.j., ko je bil razvoj Emacsa še vedno posredno financiran iz državnega dolga. Slashdotter lahko ugovarja, da je Emacs že precej sposoben in lahko naredi vse, kar lahko naredi katero koli drugo razvojno okolje, le bolje. Tisti, ki so uporabljali Lisp Machines, pravijo drugače.

Torej, zakaj Lispovi hekerji ne postavljajo malih malčkov na njihovo pravo mesto? Zakaj ne naredijo brezplačnega razvojnega sistema, ki spominja na nekatere izgubljene slave LispM, čeprav ne morejo reproducirati drugega LispM?

Razlog, zakaj se to ne zgodi, je Lisp Curse. Veliko število lisp hekerjev bi moralo sodelovati med seboj. Bodite pozorni: veliko število ljudi, ki postanejo Lisp hekerji, bi morali sodelovati med seboj. In bi morali sodelovati med seboj na dizajnu, ki od začetka ni bil že dan. In ne bi bilo nobene zunanje discipline, kot je tvegani kapitalist ali drugi gospodarski mojster, da bi jih ohranili na pravi poti.

Vsak projekt ima trenje med člani, nesoglasji, konflikti glede sloga in filozofije. Te socialne probleme nasprotuje dejstvo, da ni mogoče doseči nobenega velikega projekta drugače. “Vsi moramo obesiti skupaj ali pa se bomo vsi obesili ločeno.” Toda ekspresivnost Lispa naredi to izravnalno silo veliko šibkejšo; lahko vedno začnete lasten projekt. Tako posamezni hekerji odločijo, da težave ne bodo vredne. Torej bodisi zapustijo projekt ali se ne pridružijo projektu. To je Lisp Curse.

Eden bi lahko celo kramp Emacs dobili nekaj, kar je dovolj dobro. Tako je Lisp Curse zaveznik Worse je boljši.

————————————————

Izrazbena moč Lisp ima pomanjkljivosti. Brezplačno kosilo ni.

Vir: http://www.winestockwebdesign.com/Essays/Lisp_Curse.html

 

 

 

Leave a Reply

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