Original on http://winestockwebdesign.com/Essays/Lisp_Curse.html

Проклятие Лиспа

Рудольф Winestock

Это эссе еще одна попытка примирить силу лиспа как языка программирования с неспособностью сообщества лиспа к воспроизводству своих пре -AI Winter достижений. Без сомнения, Лисп был влиятельным источником идей даже во время своего отступления. Этот факт, плюс блеск различных лисповских архитектур машин, а также текущий Лисп ренессанс после более десяти лет в дикой природе показывают, что лисповские партизаны должны иметь какое-то оправдание для их самодовольства. Тем не менее, они не были в состоянии перевести мощь Лиспа в движение с непреодолимым импульсом.

В этой статье, я утверждаю, что выразительная сила Lisp'a на самом деле является причиной отсутствия его импульса.

Сила Лиспа является его собственным худшим врагом.

Вот мысленный эксперимент, чтобы доказать это: Возьмите два языка программирования, ни один из которых не является объектно-ориентированными. Ваша миссия, если вы решили принять его, чтобы сделать их объектно-ориентированным, сохранять их обратную совместимость с языком оригинала, по модулю некоторые крайние случаи. Вставка любой пары языков программирования в этот мысленный эксперимент покажет, что это легче с некоторыми языками, чем с другими. Это точка мысленного эксперимента. Вот простой пример: INTERCAL и Паскаль.

Теперь сделайте это мысленный эксперимент интересным: Представьте себе, что ві добавили ориентацию объекта на языках программирования C и Scheme. Создание Scheme объектно-ориентированной программы является домашним заданием для второкурсника. С другой стороны, при добавлении объекта к ориентации на C требует отличних навыков программирования от Бьярне Страуструпа.

Последствия этого расхождения в нужном таланте и усилиях вызывают лисповским Проклятием:

Лисп является настолько мощным, что проблемы, которые являются техническими проблемами на других языках программирования являются социальными проблемами в Лиспе.


Рассмотрим случай схемы, опять-таки. Так что делает Схема объектно-ориентированной так легко, многие хакеры Scheme уже сделали это. Если говорить более конкретно, много отдельных хакеров Scheme сделали это. В 1990 - е годы, это привело к настоящему складу - инвентарному списку объектно-ориентированных пакетов для языка. Парадокс выбора, в одиночку, гарантируется, что ни один из них не станет стандартом. Теперь, когда некоторые реализации Scheme имеют свои собственные средства ориентации объекта, это не так уж плохо. Тем не менее, тот факт, что многие из этих пакетов были делом одиночек привело к проблемам, которые Олин Дрожь писал в документировании Застройка, scsh.

Программы, написанные отдельными хакерами, как правило, следуют модели царапать-ан-зуда. Эти программы будут решить эту проблему, что хакер, сам испытывает без необходимости обработки связанных частей проблемы, которые сделали бы программу более полезным для других. Кроме того, программа обязательно работать на собственной установке одинокого хакера, но не может быть переносимым на другие реализации схемы или к той же схеме реализации на других платформах. Документация может отсутствовать. Будучи по существу проекта сделано в свободное время обильного хакера, программа несет ответственность страдать должны реальной жизни обязанности вторгаться на хакера. Как отметил Олин Дрожь, это означает, что эти один человек-группа проектов, как правило, решить восемьдесят процентов проблемы.

Эссе доктор Марк Тарвер, Биполярный Lisp программист, имеет точное описание этого явления. Он пишет об этих одинокая волчица лисповских хакеров и их

... Неспособность завершить вещи должным образом. Фраза "одноразовыми дизайн" абсолютно сделано для BBM , и это происходит от лисповской сообщества. Лисп позволяет просто бросить вещи так легко, и это легко принять это как само собой разумеющееся. Я видел это 10 лет назад, когда ищет GUI к моему Лиспе. Никаких проблем не было 9 различных предложений. Проблема заключалась в том, что ни один из 9 не были должным образом задокументированы и не было ни одного ошибка бесплатно. В принципе каждый человек осуществил свое собственное решение, и она работала для него, так что это было прекрасно. Это отношение BBM; это работает для меня, и я его понимаю. Кроме того, продукт не нуждается или желая помочь кто-нибудь еще, чтобы сделать что-то.


Опять же, рассмотрим язык программирования C в этом мысленном эксперименте. Из-за сложности изготовления объекта С ориентированного, только две серьезные попытки проблемы были сделаны какие-либо тяги: C ++ и Objective-C. Objective-C является самым популярным на Macintosh, в то время как правила C ++ везде. Это означает, что для данной платформы, вопрос о которых объектно-ориентированное расширение C, чтобы использовать уже ответили окончательно. Это означает, что объектно-ориентированное оборудование для тех языков, которые были задокументированы, что интегрированные среды разработки знают о них, что библиотеки кода совместимы с ними, и так далее.

эссе доктор Марк Тарвер на биполярных Lispers делает пункт:

В настоящее время в отличие от этого, C / C ++ подход совершенно иной. Это так чертовски трудно сделать что-нибудь с помощью пинцета и клея, что ничего существенного вы делаете будет настоящим достижением. Вы хотите, чтобы документировать его. Кроме того, вы ответственность нужна помощь в любом C проекте значительных размеров; так что вы ответственность быть социальным и работать с другими людьми. Вам нужно, просто чтобы попасть куда-нибудь.

И все, что, с точки зрения работодателя, является привлекательным. Десять человек , которые общаются, документировать вещи должным образом и работать вместе, предпочтительнее один BBM хакерского Лиспа , который может быть заменен только другим BBM (если вы можете найти один) в не маловероятно , что он будет, в какой - то момент, идти вниз , не будучи rebootable.

Поэтому те, кто уже знает C не спросить: "Какой объект системы я должен учиться?" Вместо этого они используют C ++ или Objective-C в зависимости от того, что их коллеги используют, а затем перейти к "Как использовать объектно-ориентированные функции X?" Ответ: "GOOG его и обрящете».


Реальные Хакеры, конечно, уже давно известно, что объектно-ориентированное программирование не является панацеей, что его сторонники утверждали. Реальные Хакеры перешли к более передовых концепций, таких как неизменных структур данных, типа логического вывода, ленивые вычисления, монады, стрелки, сопоставления с образцом, ограничения на основе программирования и так далее. Реальные Хакеры также известно, на некоторое время, что Си и Си ++ не подходят для большинства программ, которые не нужно делать произвольную битовую пустячный. Тем не менее, Лиспа Проклятие все еще держит.

Некоторые самодовольные лисповские любители рассмотрели нынешний урожай академических языков (Haskell, OCaml, и так далее) , и нашел , что они хотят, говоря , что любая черта у них либо уже присутствует в Лиспе или могут быть легко реализованы - и улучшены - с Лиспе макросы. Они, вероятно, правы.

Жалость лисповские хакеров.


Д-р Марк Тарвер - дважды процитировал, выше - писал диалект Lisp называется Ци . Это меньше, чем десять тысяч строк макросов, работающих на вершине CLISP. Он реализует большинство уникальных особенностей Haskell и OCaml. В некоторых отношениях, Ци превосходит их. Например, логический вывод двигателя типа Ци является Тьюринга. В мире , где были нужны команды талантливых ученых писать Haskell, один человек, доктор Тарвер написал Ци все его одиноком.

Прочитайте этот пункт, опять же, и экстраполировать.


Упражнение для читателя: Представьте, что сильное соперничество развивается между Haskell и Common Lisp. Что будет дальше?

Ответ: Проклятие Лисп умирает каждый второй или третий серьезный Лисп хакер будет раскатывать его собственную реализацию ленивой оценки, функциональной чистоты, стрелки, сопоставления с образцом, типа логического вывода, а остальные.. Большинство из этих проектов будет одинокая волчица операции. Таким образом, они будут иметь восемьдесят процентов функций, которые большинство людей нуждаются (другой восемьдесят процентов в каждом конкретном случае). Они будут плохо документированы. Они не будут переносимыми между лисповских системами. Некоторые из них будут показывать большие надежды, прежде чем отказаться в то время как проект сопровождающий уходит, чтобы оплатить свои счета. Некоторые будут бить Haskell по той или иной размерности (опять же, разные по одному в каждом случае), но их принятие будет затруднено баталии на comp.lang.lisp Usenet группы.

Эндшпиль: коллекция случайной давний Lisp хакера макросов будет добавить до недокументированном, непереносимым, багов реализации 80% Haskell , потому что Лисп является более мощным , чем Haskell.


Мораль этой истории является то, что вторичные и третичные эффекты материи. Технология влияет не только то, что мы можем сделать по технологическим вопросам, он также влияет на наше социальное поведение. Это социальное поведение может закольцовыванием и оказывает влияние на первоначальные технологические вопросы в стадии рассмотрения.

Лисп является болезненно красноречивым примером такого урока. Лисп настолько сильна, что она поощряет индивидуальную независимость с точки кровожадность. Эта независимость произвела поразительно хорошее новшество, как и в дни лисповских машины. Эта же независимость также препятствует усилиям возродить "LISP весь путь вниз" системы старых; ни один проект "Лисп OS" не собрал критическую массу после распада Symbolics и LMI.

Одним из результатов этих вторичных и третичных эффектов является то , что, даже если Лисп является наиболее выразительный язык когда - либо, так что теоретически это невозможно сделать более выразительным языком, Lispers будет еще чему поучиться у других языков программирования. Ребята Smalltalk учил всех - в том числе лисповских хакеров - вещь или два о объектно-ориентированного программирования. Чистый язык программирования и Моцарт/Оз комбо может иметь несколько сюрпризов своих собственных.


Лисп Проклятие не противоречит сентенцию Станислава Datskovskiy : Работодатели предпочитают много , что рабочие будут взаимозаменяемыми, а не максимально производительным слишком верно.. С большим трудом делает кто-то отвес продажность управленческого класса. Тем не менее, последние строки его эссе являются проблематичными. А именно:

Что же касается "свободного программного обеспечения" мира, он охотно выступает против промышленных догмы в словах, но и вовсе не на практике. Нет концепции избегали куба фермы адов никогда не получил реальную тягу среди любительских масс.

В примечании, он предлагает Linux в качестве примера этого нежелания проводить различные идеи. Чтобы быть уверенным, что он имеет точку , когда дело доходит до операционных систем (верхний комментарий, в частности, является раздражающе тупые). Он не имеет момент, когда речь идет о языках программирования. Python и Руби были под влиянием Лиспе. Многие из своих поклонников выразить уважение к Лиспе и некоторые из их интерес дополнил лисповское ренессанс. С какой - то справедливости, JavaScript был описан как "схеме в одежде языка C" , несмотря на происходящие из этих кубика фермы адов .

Тем не менее, несмотря на это влияние, в обоих мирах корпоративных и с открытым исходным кодом, Лисп до сих пор лишь часть проявителя ума доли , которую привлекли нынешний урожай продвинутых скриптовых языков. Замкнутый непредубежденность МВА не может быть единственным объяснением этого. Лисп Проклятие имеет более объяснительную силу.


Свободные среды разработки, доступные для Лиспе дополнительно служат примером лисповское Curse.

Стыдно указать на это, но это должно быть сделано. Забудьте о лисповской машины; мы даже не имеют системы развития , которые соответствуют , что средний Smalltalk хакер принимает как должное ( "Я всегда чувствовал Лисп является высшим языком и Smalltalk является высшим среда." - Рамон Leon ). Если они не будут платить тысячи долларов, лисповские хакеры все еще застряли с Emacs.

Джеймс Гослинг, автор первых Emacs , которая работала на Unix, правильно указал, что Emacs принципиально не изменилась в более чем двадцати лет. Это происходит потому, что Сопровождающие Emacs все еще отводками код на вершине дизайна, который был откинулась, когда Emacs был Grad-студенческий проект в лаборатории искусственного интеллекта MIT, то есть, когда развитие Emacs был еще косвенно финансируется за счет государственного долга. Slashdotter может возразить, что Emacs уже вполне способен и может сделать что-нибудь, что любая другая среда разработки может сделать, только лучше. Те , кто использовал лисповские машины сказать иначе.

Так почему же не лисповские хакеры положить ребята Smalltalk в своем месте? Почему они не делают свободную систему развития, которая заставляет вспомнить некоторые из утраченных славе LispM, даже если они не могут воспроизвести другой LispM?

Причина, почему это не происходит из-за лисповской проклятья. Большое количество хакеров лисповских бы сотрудничать друг с другом. Посмотрите более внимательно: Большое количество вида людей , которые становятся лисповские хакеров бы сотрудничать друг с другом. И они должны сотрудничать друг с другом по конструкции, которая не была уже заданной с самого начала. И там не будет каких-либо внешних дисциплины, такие как венчурный капиталист или другого корпоративного мастера, чтобы держать их в нужное русло.

Каждый проект имеет трения между членами, разногласия, конфликты по поводу стиля и философии. Эти социальные проблемы наперекор тем фактом, что ни один крупный проект не может быть достигнуто иначе. "Мы все должны держаться вместе, или мы все будет висеть отдельно." Но выразительность Лисп делает эту компенсационная силу значительно слабее; всегда можно начать свой собственный проект. Таким образом, отдельные хакеры решили, что проблема не стоит. Так что они либо выйти из проекта, или не присоединиться к проекту, чтобы начать с. Это Лиспа Проклятие.

Можно даже взломать Emacs, чтобы получить что - то, что это достаточно хорошо. Таким образом, Лисп Проклятие является союзником хуже, тем лучше.


Выразительная сила Лисп имеет свои недостатки. Там нет такого понятия-как бесплатный обед.