ORIGINAL SOURCE:http://winestockwebdesign.com/Essays/Lisp_Curse.html

Проклетството на липсот

од Рудолф Винсток

Ажурирање на 6 октомври 2017 година. Н.Б .: Ве молиме престанете да го испраќате ова до „Хакер њуз“! Погледнете ги „Хакерските новости“ Ažuriranje na 6 oktomvri 2017 g Резултати од пребарувањето за овој есеј. Проверете ја белешката за првиот влез: Ајде, сите! Ајде да го победиме мртвиот коњ уште еднаш! Ако сакате да заработите хакерски вести e-cred, потоа обидете се да поднесете Вечниот мејнстрим, наместо тоа.

Овој есеј е уште еден обид да се помири моќта на програмскиот јазик Lisp со неможноста на заедницата Lisp да го репродуцира нивниот пред-АИ Зима достигнувања. Без сомнение, Липс е влијателен извор на идеи дури и за време на повлекувањето. Тој факт, плус брилијантноста на различните архитектури на Lisp Machine, и сегашната ренесанса на Lisp, по повеќе од една деценија во пустината, покажуваат дека партизаните на Lisp мора да имаат некакво оправдување за нивната сјајност. Сепак, тие не беа во можност да ја преведат моќта на Липс во движење со огромна динамика.

Во овој есеј, јас тврдам дека експресивната моќ на Липс е всушност причина за нејзиниот недостаток на интензитет.

Силата на Липс е свој најлош непријател.

Еве еден експеримент за размислување за да го докажеме: земете два програмски јазика, ниту еден од нив не е ориентиран кон објектите. Вашата мисија, ако одлучите да ја прифатите, е да ги направите ориентирани кон објекти, одржувајќи ги наназад компатибилни со оригиналните јазици, модулирајќи ги некои случаи на работ. Вметнување на кој било јазик на програмски јазици во овој мисловен експеримент ќе покаже дека ова е полесно кај некои јазици отколку со други. Тоа е поентата на мисловниот експеримент. Еве еден тривијален пример: Интеркал и Паскал.

Сега направете ја оваа мисла експеримент интересна: Замислете да додадете ориентација на објектот на програмските јазици во С и Шема. Да се направи Шема ориентирана кон објектот е софорична задача за домашна задача. Од друга страна, додавањето на објектно ориентација на C бара програмски рифови на Бјарн Струструп.

Последиците од оваа дивергенција кај потребниот талент и напор предизвикуваат проклетството на лигите:

Lisp е толку моќен што проблемите што се технички проблеми на другите програмски јазици се социјални проблеми во Lisp.


Разгледајте го случајот со Шема, повторно. Бидејќи правењето на Шемата ориентиран кон објектот е толку лесно, многу хакери на Шема го сторија тоа. Уште повеќе, толку индивидуални хакери на Шема го сторија тоа. Во 1990-тите, ова доведе до вистински список на магацински инвентар на пакети ориентирани кон објектот за јазикот. Парадоксот на избор, сам, гарантирано дека ниту еден од нив нема да стане стандарден. Сега кога некои имплементации на Шема имаат свои објекти за ориентирање на објектите, не е толку лошо. Како и да е, фактот дека многу од овие пакети беа дело на осамени лица, доведоа до проблеми за кои пишува Олин Шиверс во документирањето на Шемата на шемата,.

Програмите напишани од индивидуални хакери имаат тенденција да го следат моделот за гребење-чешање. Овие програми ќе го решат проблемот што самиот хакер го има без да мора да управува со сродни делови од проблемот што ќе ја направи програмата покорисна за другите. Понатаму, програмата е сигурна дека работи на сопственото поставување на тој осамен хакер, но може да не може да биде преносен за други имплементации на Шема или за истата имплементација на Шема на други платформи. Документацијата може да недостасува. Во суштина, проект направен во слободното слободно време на хакерот, програмата може да претрпи доколку одговорностите од реалниот живот напаѓаат на хакерот. Како што забележа Олин Шиверс, ова значи дека овие еден-бенд-проекти имаат тенденција да го решат осумдесет проценти од проблемот.

Есејот на д-р Марк Тарвер, Биполарен лист програмер, има соодветен опис на овој феномен. Тој пишува за овие хакери на осамените волк Липс и нивните

...неможноста правилно да ги завршува работите. Фразата „Дизајн на фрлање“ е апсолутно изработена за BBM и потекнува од заедницата Липс. Lisp ви овозможува едноставно да ги исцрпувате работите така лесно, и лесно е да го земете ова здраво за готово. Ова го видов пред 10 години кога барав GUI на мојот Lisp. Нема проблем, имаше 9 различни понуди. Проблемот беше во тоа што ниту еден од 9 не беше соодветно документиран и ниту еден не беше грешен. Во суштина, секој човек спроведуваше свое решение и работеше за него, така што беше добро. Ова е став за ББМ; тоа работи за мене и јас го разбирам. Тоа е, исто така, производ на кој не треба или сакате некој друг помош да стори нешто.


Уште еднаш, разгледајте го програмскиот јазик Ц во тој мисловен експеримент. Поради тешкотијата да се направи ориентиран кон објектот Ц, само два сериозни обиди за проблемот направија каква било влечење: C ++ и Objective-C. Цел-Ц е најпопуларен на Macintosh, додека C ++ владее насекаде на друго место. Тоа значи дека, за дадена платформа, на прашањето за кое објектно-ориентираното продолжување на употребата на Ц веќе е дефинитивно одговорено. Тоа значи дека објектите ориентирани кон објектите се документирани, дека интегрираните околини за развој се свесни за нив, дека библиотеките со кодови се компатибилни со нив и слично..

Есејот на д-р Марк Тарвер за биполарни листери го прави ова:

За разлика од тоа, пристапот C / C ++ е доста различен. Толку е проклето тешко да се стори нешто со пинцети и лепак што нешто значајно што ќе го направите ќе биде вистинско достигнување. Сакате да го документирате. Исто така, можеби ќе имате потреба од помош во кој било проект C со значителна големина; така, вие сте одговорни да бидете социјални и да работите со другите. Треба да, само за да стигнете некаде.

И сето тоа, од гледна точка на работодавец, е привлечно. Десет лица кои комуницираат, ги документираат нештата правилно и работат заедно, се претпочитаат на еден BBM хакерски Lisp кој може да биде заменет само со друг BBM (ако можете да го пронајдете еден) во неверојатно случајот дека тој, во некое време, ќе западне без да биде се рестартира.

Затоа, оние што веќе знаат Ц не прашуваат „Кој систем на објекти треба да учам?“ Наместо тоа, тие користат Ц ++ или Цел-Ц во зависност од тоа што користат нивните колеги, а потоа преминуваат на „Како да користам објектно-ориентирана функција X? ”Одговор:„ Обави го и ќе најдеш.”


Се разбира, вистинските хакери веќе долго време знаат дека програмирањето ориентирано кон објектите не е лек за кој се тврдат неговите партизани. Вистинските хакери се преселиле во понапредните концепти, како што се непроменливите структури на податоци, типот на inferencing, мрзливото оценување, монадите, стрелките, појавување на модели, програмирањето базирано на ограничувања и слично. Реал Хакери веќе извесно време знаат дека C и C ++ не се соодветни за повеќето програми што не треба да прават произволни бит-фидлинг. Како и да е, Проклетството на Липс сè уште се држи.

Некои smубители на шверц на Липс ја испитале тековната култура на академски јазици (Хасклл, Окамл и др.) И ги нашле како сакаат, велејќи дека секоја од нивните одлики е или веќе присутна во Липс или може лесно да се имплементира — и се подобри на — со макроа на Lisp. Тие веројатно се во право.

Штетајте ги хакерите на Lisp.


Д-р Марк Тарвер - двапати цитиран, погоре - напиша дијалект на Липс наречен Qi. Тоа е помалку од десет илјади линии макроа што работат на врвот Clisp. Ги имплементира повеќето уникатни карактеристики на Хаскел и ОКамл. Во некои погледи, Чи ги надминува. На пример, моторот за ставање во заклучок од типот Qi е завршен. Во еден свет каде тимови од талентирани академици беа потребни за да го напишат Хаскел, еден човек, д-р Тарвер ги напиша Чи сите според неговиот осамен.

Повторно прочитајте го тој пасус и екстраполирајте.


Вежба за читателот: Замислете си дека се развива силно ривалство меѓу Хаскел и Commonенерал липс. Што ќе се случи следно??

Одговор: Се започнува клетвата на Lisp. Секоја втора или трета сериозна хакерка на Lisp ќе изврши сопствена примена на мрзливата проценка, функционалната чистота, стрелките, усогласувањето на моделот, типот на инјектирање и остатокот. Повеќето од овие проекти ќе бидат осамени волци. Така, тие ќе имаат осумдесет проценти од карактеристиките што им се потребни на повеќето луѓе (различно осумдесет проценти во секој случај). Тие ќе бидат слабо документирани. Тие нема да бидат преносни преку системите Lisp. Некои ќе покажат големо ветување пред да бидат напуштени додека одржувачот на проектот заминува да ги плати сметките. Неколкумина ќе го совладаат Хаскел по оваа или онаа димензија (повторно, различна во секој случај), но нивното прифаќање ќе биде попречено од пламените војни на групата comp.lang.lisp Usenet.

Endgame: Случајна колекција на макроа од старо време Lisp хакер ќе додаде до недокументирана, неподводлива, спроведена грешка од 80% од Haskell затоа што Lisp е помоќен од Haskell.


Моралот на оваа приказна е дека секундарните и терциерните ефекти се важни. Технологијата не само што влијае на она што можеме да го направиме во однос на технолошките проблеми, туку влијае и врз нашето социјално однесување. Ова социјално однесување може да се врати назад и да влијае на оригиналните технолошки проблеми што се разгледуваат.

Липс е болно елоквентен пример за оваа лекција. Липс е толку моќен, што ја охрабрува индивидуалната независност до крвавиот ум. Оваа независност произведе неверојатно добра иновација како во деновите на Lisp Machine. Оваа иста независност исто така ги отежнува напорите да се оживеат старите системи „Lisp all way down down“; ниту еден проект „Lisp OS“ не собра критична маса од падот на Symbolics и LMI.

Еден резултат од овие секундарни и терциерни ефекти е тоа што, дури и ако Липс е најимпресивниот јазик досега, таков што теоретски е невозможно да се направи поикспресивен јазик, Листерите сепак ќе имаат работи што треба да учат од другите јазици за програмирање. Момците на Smalltalk ги научија сите - вклучувајќи ги и хакерите на Lisp - нешто или две за програмирање ориентирана кон предмети. На Чисти програмски јазик и Моцарт / Оз комбо може да има неколку свои изненадувања.


Проклетството на Lisp не е во спротивност со максимумот на Stanislav Datskovskiy: Работодавците многу претпочитаат работниците да бидат габични, отколку максимално продуктивни. Премногу точно. Со големи тешкотии, некој ја измачува веничноста на раководната класа. Сепак, последните редови на неговиот есеј се проблематични. За духовитост:

Што се однесува до светот на „слободниот софтвер“, тој со нетрпение се спротивставува на индустриските догми во реторика, но воопшто не во пракса. Ниту еден концепт избегнат од кокошката фарма на коцки досега не добил вистинска влечење кај аматерските маси.

Во фуснота, тој го нуди Линукс како пример за оваа неподготвеност да спроведува различни идеи. Да биде сигурен, тој има точка кога станува збор оперативни системи (Особено највисокиот коментар е интуитивно примамлив). Тој нема поента кога станува збор за програмски јазици. Пајтон и Руби биле под влијание на Липс. Многу од нивните обожаватели изразуваат почит кон Липс, а дел од нивниот интерес ја засили ренесансата на Липс. Со одредена правда, JavaScript е опишан како „Шема на облеката во Ц“ и покрај тоа што потекнува од нив коцки фарма школи.

Како и да е, и покрај ова влијание, и во корпоративниот и во светот со отворен извор, Липс сè уште има само дел од умот на развивачите што ја привлекуваат тековната култура на напредни јазици за скриптирање. Затвореноста на МБА не може да биде единствено објаснување за ова. Проклетството на Lisp има повеќе објаснувачка моќ.


Слободните опкружувања за развој што се достапни за Lisp, дополнително го истакнуваат проклетството на Lisp.

Cрамно е да се истакне ова, но мора да се направи. Заборавете на Lisp машината; дури немаме системи за развој што одговараат на она што е просечен хакер за Smalltalk зема здраво за готово („Отсекогаш сум се чувствувал дека Липс е супериорниот јазик и„ Smalltalk “е супериорна околина“). - Ramon Leon). Освен ако не платат илјадници долари, хакерите на Lisp сè уште се заглавени со „Emacs“.

Ејмс Гослинг, авторот на првите Emacs што трчаше на Unix, правилно истакна дека Емакс не се промени фундаментално за повеќе од дваесет години. Ова е затоа што одржувачите на „Емакс“ сè уште го поставуваат кодексот врз основа на дизајнот што беше усогласен кога Емакс беше студиски проект во лабораторијата МИТ АИ, т.е., кога развојот на Емакс сè уште индиректно беше финансиран од националниот долг. Slashdotter може да се спротивстави на тоа дека Emacs е веќе доста способен и може да стори сé што може да направи секое друго развојно опкружување, само подобро. Оние кои користеле Lisp Machines велат поинаку.

Па, зошто хакерите на Lisp не ги ставаат момците на Smalltalk на своето соодветно место? Зошто не направат бесплатен систем за развој што ги повикува на некои изгубени слави на LispM, дури и ако не можат да репродуцираат друг LispM?

Причината зошто тоа не се случи е заради проклетството на Липс. Голем број хакери на Lisp треба да соработуваат едни со други. Погледнете повеќе одблизу: Голем број на видови на луѓе кои стануваат хакери на Lisp, ќе мора да соработуваат едни со други. И тие ќе мора да соработуваат едни со други за дизајн кој веќе не беше даден од почеток. И нема да има надворешна дисциплина, како што е капиталист на вложување или друг корпоративен господар, да ги задржи на вистинскиот пат.

Секој проект има триење помеѓу членовите, несогласувања, конфликти околу стилот и филозофијата. Овие социјални проблеми се спротивставуваат на фактот дека ниту еден голем проект не може да се постигне поинаку. „Сите ние мора да се обесиме, или сите ќе се обесиме“. секогаш може да се започне свој проект. Така, индивидуалните хакери одлучуваат дека проблемот не вреди. Значи, тие или го напуштија проектот, или не влегуваат во проектот за почеток. Ова е проклетството на Липс.

Може дури и да се пробие Emacs за да се добие нешто што е доволно добро. Така, проклетството на Липс е сојузник на полошо е подобро.


Експресивната моќ на Липс има недостатоци. Не постои такво нешто како бесплатен ручек.


Како начинот на кој размислувам и дизајнирам веб-страници? Изнајми ме!