Pull to refresh

Lisp разработчик: две стороны одной медали

Lisp *
Translation
Original author: Dr Mark Tarver
Я уже около 20 лет программирую на Lisp и прочитал множество сообщений Usenet и статей в блогах, написанных Lisp — разработчиками. Я часто задавал себе вопрос — А существует ли типичный Lisp — разработчик, как существуют типичные представители наций или других групп людей?

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

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

Но некоторые лица запоминаются. Те кто делал проект под твоим руководством и две категории студентов — очень хорошие и и очень плохие. Талантливые успехи и ужасные поражения остаются в памяти. И самое необычное, что заставило меня написать эту статью, что существуют студенты, которые попадают в обе этих категории. И, знаете, я всегда испытывал сильную симпатию к ним.

Сегодня посредственность — это самое обычное явление. Часто у меня были студенты, которые жутко не успевали только по одной причине: у них небыло способностей. В этом нет ничего необычного. Необычно то, что в Великобритании сегодня мы доводим до выпуска множество таких студентов. Но, стоп, это уже другая история.

Теперь посмотрим на блестящие неудачи. Из-за того, что оба этих фактора часто встречаются вместе, первая наша реакция — Этого не должно быть! Но это происходит, и часто. Почему?

Чтобы это понять, нужно посмотреть еще на до-университетское время. Давайте вернемся в школу и посмотрим на блестящий провал в зародыше. Кто смотрел «Донни Дарко», поймет о каких студентах я говорю. Но если вы не смотрели — не беда, далее вы поймете о ком идет речь. Почти каждая школа выпускает такого ежегодно.

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

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

Еще одна черта этого парня — это низкий порог к скуке. Он берется за задачу и яростно работает над ней, и, быстро решив все самые сложные и интересные моменты, бросает ее до завершения. Он будет лежать на кровати и бренчать на гитаре несколько дней. В этом и есть двухполюсность: периоды высокой активности сменяются периодами меланхолии, остановки, бездействия.

Если все понятно, давайте посмотрим, что происходит с ним когда он поступает в университет.

У нас выходит тут 2 истории, одна радостная другая грустная.

Радостная история состоит в том, что он зажигается тем, что выбрал для обучения, и выпускается с красным дипломом, подтверждая свой талант.

Но я бы хотел глубже посмотреть на грустную историю, где соединяется талант и неудача.

Студент начинает понимать, что университет во многом похож на школу по части бессмысленности правил и.т.п. Хотя университет выгодно отличается от школы красотой дисциплин созданных великими умами. Но если вы посмотрите на профессоров, не беря во внимание их навязчивость на счет своих бессмысленных в основном не читанных (и не читаемых) публикаций, можно сделать вывод что университет такой же не настоящий.

Но давайте вернемся к нашем парню.

Самая большая разница между школой и университетом для начинающих — это СВОБОДА. Свобода от мамы и папы, свобода делать что-то свое. Свобода по настоящему облажаться. Так наш герой начинает новую жизнь и понимает, что может делать все что хочет. Напиться и упасть спать в 3 утра. И вот он идет и полагается на свой врожденный талант, который вытащит его если что, ведь это работало в школе. И это работает какое-то время.

Но таланта недостаточно, нужна еще и усидчивость, потому что материал сложнее в университете. Скоро он получает 5-, 4+ и наконец 4ки. Он испытывает необычное для него чувство неудачи, которое понижает его самооценку. Он все еще может встать в 5 утра и выполнить задание до 9 утра, но то что он делает уже не так хорошо.

С такими студентами я сталкивался и сталкиваюсь по сей день. Они находятся внизу списка успеваемости. У одного из них была скучающий> приглашением UNIX командной строки. Встречая такого, я устанавливал тесный контакт с ним. (Однажды я даже спас одного и теперь он профессор и несчастен потому что был окружен бездарностями — но что тут можно сделать? ). Обычно он оживал к дипломному году, когда он мог сделать что-то свое и делал это очень очень хорошо. Что-то необычное. И большинство профессоров не поставят ему честную оценку за это, просто потому что он плохо учился.

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

Теперь касательно Lisp, и я часто это видел раньше. Lisp — это магнит для таких умов. Как только вы увидите, что такой склад ума очень сильно повлиял на культуру Lisp-а, вы поймете почему Lisp, как и многие его поклонники — это блестящая неудача. Он имеет те же сильные и слабые стороны что и талантливый двухполюсный студент (далее ТДС).

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

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

ТДС любят Lisp. Его сногсшибательные возможности — это отражение творческих способностей ТДС. Множество идей пришло от Lisp-еров: сборщик мусора, обработка списков, окна и другие области где Lisp был одими из первых. Можно сделать вывод, что Lisp — это взрослый и один из лучших языков, потому что многие вещи родились в его недрах.

Но это не совсем так, и причины не в языке а сообществе, которое обладает не только сильными сторонами ТДС но и слабыми.

Одна из них — это неспособность правильно завершать проекты. Фраза «архитектура на выброс» создана специально для ТДС и пришла из Lisp-сообщества. Lisp позволяет легко обходить неприятные моменты, и многие считают что так и должно быть. Я столкнулся с этим 10 лет назад в поисках GUI для моего Lisp-а. Нет проблем, я нашел 9 вариантов. Но ни один из 9и не был хорошо задокументирован или был стабильным. Каждый просто сделал свое решение которое работало для него и все. Обычная позиция ТДС: это работает для меня и я это понимаю. Это также является следствием ненужности или нежелания привлекать для помощи кого-то другого к проекту.

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

И это больше подходит работодателям. 10 человек, которые работают вместе, правильно документируют предпочтительнее одному ТДС, которого можно заменить только другим ТДС (если найдешь), который в какой-то момент может перестать работать.

Еще одна черта ТДС, которую я заметил — это его чутье на фальшь. Большинство из нас тоже его чувствует. Но он меньше остальных готов это терпеть. Он часто видит абсурдность многих вещей, и имеет достаточно ума чтобы понять как это должно быть правильно. И он, в отличии от простых смертных, не готов идти на компромисс. У этого есть свои последствия.

Lisp машины (железо которое нативно поддерживает lisp) — это продукт такого рода позиции. Как однажды сказал Габриель, Правильная Штука. Хотя, конечно, она не была правильной. Здесь видно отказ от компромисса с рынком, и использование платформы, которая в долгосрочной перспективе привела к провалу.

Это открыло для меня еще одно свойство ТДС. Обратная сторона все этой энергии и ума: печаль, меланхолия и потеря уверенности в себе после осознания таких неверных решений. Если вы почитаете посты обсуждения Lisp, включая тему «Common Lisp отстой» на comp.lang.lisp, вы увидите насколько это правда. Ветераны разработчики с многолетним опытом и без сомнения талантливые теряют уверенность. Блестящий ум направляется внутрь мрачно наблюдать за неадекватностью их любимого языка. Эти проблемы решаемы (Qi — это показал слава богу), но когда ты расстроен все кажется в тупике. Lisp обречен и мы все умрем.

Существует статья, которая отражает это наверное лучше других Lisp: Good News, Bad News, How to Win Big. Читая эту статью вы почувствуете двойственность ТДС. Позитивная сторона, интеллектуальная гордость и вера в Lisp, соседствует с «Мы все умрем».

Что же можно сказать в заключение? Что существует 2 проблемы. Проблема с сообществом и проблема с Lisp. Проблема с сообществом — это проблема характера ТДС.

Ну а проблема с Lisp? А нет никакой проблемы, потому что Lisp, как и жизнь, будет таким каким вы его сделаете.

PS.
Перевод вольный, первый раз.
Tags:
Hubs:
Total votes 88: ↑81 and ↓7 +74
Views 19K
Comments Comments 161