> Однако, на ЦеПП я напишу интерпретатор любого языка в одну строку. Конечно, сторока может оказаться довольно длинной... :)
Implementation quantities [limits]
1 Because computers are finite, C++ implementations are inevitably
limited in the size of the programs they can successfully process...
--Characters in one logical source line [65536]
:)
Не катит за отмазку 8) Что-то большее, иначе не употрблялись бы слова "императивщина" (с легким презрением) и "функциональщина" (с оттенком превосходства).
Лично я думаю, что упоминание знания Лиспа (Хаскеля, Окамла) - это просто способ выделиться, поэтому и раздражает. Нет?
Ибо воистину. Первый Язык, жемчужина посреди простых камней, и нет языков кроме Него. Скобки, в которых пустота - тело Его, мистическое двуединство кода и данных - дух Его, божественная рекурсия - сердце Его. Истинно говорю вам, избегающий света Его есть безумец, вот, свершается кара над главой его, и убогостью отмечены поделия его, подобные пустым глиняным горшкам рядом с хрустальным сосудом благодати Его. Принявший же и постигший истинный свет Его подобен прямой и отточенной стреле, чисты помыслы его и крепка рука его, и благословенны творения его, дарующие радость и утоляющие печали, ибо одухотворены духом Его и отмечены благодатью Его. А вас, поц иент, любитель недоязыков, ничего не ждёт, кроме серой стены за окном, липкой остывшей каши и вечного аминазина.
Во-первых, я бы не стал обобщать, навешивая ярлыки. Во-вторых, расширение кругозора, это не отмазка. За всех я никогда не брался говорить, а за себя скажу, у меня не стоит проблема выбора языка для изучения или что-то в подобном роде - я вполне себе спокойно работаю, не первый год, и уже не первый в России. Всю жизнь писал на С++, теперь же, на C#/Java. Постепенно интерес к языку, который мне больше всего нравился - С++ падает, а к функциональным языкам растёт. Интерес же к Лиспу, при том, что он не функциональный язык, обусловлен тем, что я прочитал о наличием в нём мощных средств метапрограммирования. Хочу ознакомиться.
> Лично я думаю, что упоминание знания Лиспа (Хаскеля, Окамла) - это просто способ выделиться, поэтому и раздражает. Нет?
Вероятно, для кого-то - да, после того как Луговской в наибезобразнейшей форме устроил пиар функциональным языкам здесь на ЛОРе, наверно, для кого-то это просто стало бессознательной модой. Как стало модным говорить о том, что С всегда лучше С++ теми, кто знает только один С. Я же от выступлений здесь воздерживаюсь, предпочитая более дружественную атмосферу. :)
> Интерес же к Лиспу, при том, что он не функциональный язык, обусловлен тем, что я прочитал о наличием в нём мощных средств метапрограммирования. Хочу ознакомиться.
То есть ты не лиспер пока, а интересующийся. Я тоже был интересующимся, прочитал все книги по Lisp в пределах досягаемости, потом попробовал программировать на нем (на guile). Оказалось, что это страшно неудобно. В результате вместо Lisp использовал Python и ни разу не пожалел. Однако червячок всё-таки грызет, поэтому и спрашиваю - что в нем другие нашли.
> Как стало модным говорить о том, что С всегда лучше С++ теми, кто знает только один С.
Ох, друг. Eсли бы те фортрановские быдлопрограммы, в которых мне приходилось ковыряться на прошлой работе, были написаны не на фортране, а на лиспе, может, я бы оттуда и не уволился. ;)
последние примеры смотрятся коряво, со скобками было лучше: код с таким уровней вложенности трудно читать -- именно поэтому на питоне так не пишут. парные скобки в редакторе хоть подсвечиваются..
Нет, не стандарт, но никто не запрещает этим пользоваться, если не нравятся скобки. Простенькая реализация на scheme занимает 25 килобайт (http://www.dwheeler.com/readable/sweet.scm). Ну и чужой код, если сильно хочется, очень просто перегоняется в такую форму и обратно.
> Быдлопрограммы можно написать на любом языке, увы...
Твоя правда, брат. Вот только быдлопрограмм на Лиспе значительно меньше, чем на Фортране. :D
Чем же это? Вы случайно не путаете с вендузятнегами?
> Да, доктор! Объясните мне, что они нашли в этом Лиспе ?!
спокойно, без паники. Бригада уже выехала.
Во-первых, он весьма прост. Назови языки и наречия, которые бы включали в себя сравнимое или меньшее количество базовых концепций, а потом давай сравним простоту испрользования названых на реальных задачах. Особенно будем обращать внимание, насколько гиморно и отлично от "канонов" будет таково решение.
Во-вторых, весьма универсален. Может быть есть такие задачи, решать которые на другом наречии было бы проще или результат получался бы лучше, но для лиспа круг задач, которые можно было бы решать с приемлемым качеством и за более чем приемлемое время, ИМХО наиболее широк.
В третьих, весьма читабелен. Вместо зверинца из всяких разнообразных : ; {} () :: . -> = используется (), и только там, где логически необходимо выделить определённую последовательность, из-за чего как число служебных элементов, требуемых синтаксисом языка а не описанием логики, так и их ассортимент, сведены к минимуму.
В четвёртых, допускает весьма высокий уровень абстракции данных. Т.е. требует наименьшего числа телодвижений при описании задачи и ещё меньшего дл изменения проги если задача немного поменялась.
В пятых, нунах, запарилсо. Вот некоторые экзамплы, которые желающим предлагаю переписать на другом наречии, и потом посравнивать исходники с лисповыми. Обращаем внимание, юзается ли специально нарождённая для этого библиотечная функция, или решение построено в основном на базовых концепциях языка или наречия.
Да, да!!! (аж пена с зубов капает... Буен, sorry!!! Дайте мне лиспера с румяной попой! Как я в него направлю свой медный зуб!!! Ш-ш-ш-ш)
Покажите мне, пожалуйста, что ЛИСП стоИт бОльшего, чем ГЕНИАЛЬНЫЕ извращения наподобие Емакса, Редьюса и Байесрвских фильтров... (Во ВСЕХ вышеперечисленных случаях ЛИСП сыграл ТОРМОЗЯЩУЮ роль!! На любом другом языке оно б круче проканало ИМХО :-) )
Я в прострации, честно говоря... Вас Дядя Грэм на бабки развел, и вы смеете нас учить, как на эти самые бабки не залететь... Что ж, каждый выбирает по себе!
Причём тут Дядя Грэм и баппки? Да, лично мне плотют за С, но знание лиспа позволяет зарабатывать более эффективно. Потому что мне он позволяет решать и автоматизировать разное вспомогательное. Возможно, как вариант, он не так хорош "в большем", как на малых задачах, не было повода сравнивать, но и повода для таких подозрений тоже пока небыло.
Всякие дельфи, васики и сиглюки тормозят гораздо круче. Потому что на своё изучение и внедрение требуют ресурсов, а отдачи и повышения эффективности по сравнению с ортодоксальными средствами - никакой, даже проявляют себя намного хуже. И больше, чем пара лет, не живут.
Чтобы данное обсуждение вышло за рамки пустого трёпа, предлагаю отрешать хотя бы приведённое выше <на чём тебе понравится> и сравнить, а ещё лучше произвести функциональный аналог того же емакса, только круче.
>Всякие дельфи, васики и сиглюки тормозят гораздо круче. ...
Ты об этом моей жене скажи, а также тем трем сотням леммингов, что наш универ ежегодно выпускает с факультета информатики (считается одним из самых крутых в Европе!)... Уже пару лет они по выпуске не Жабу (как раньше) боготворят, а ВыжуалВасик в дотНет инкарнации:(
>> Всякие дельфи, васики и сиглюки тормозят гораздо круче. ...
> Ты об этом моей жене скажи,
А ты сам скажи, твоя же жена. Я своей сказал уже.
> а также тем трем сотням леммингов,
Вот им и нужно лисп вместо, чтобы отличали жабу от дотнетиненады. Иначе, на другом форуме обсуждали с моим участием, получается, что всякие варварские наречия-однодневки от подлых мсей и их друга и соратника багланда типо Революционный Шаг В Развитии, а чем он лучше того же лиспа, никто не знает. Начали выяснять - оказалось что всем хуже, несмотря на более чем солидную разницу в возрасте этих наречий. Ато млина, устроили из прикладной науки информатики сексуально-богословскую дисциплину с пророком-мелкосовтом и апологетами, возжелавшими розовой попки :E Всё от безграмотности. Ты вот тож на лисп крысишся, и (сполгода помойму назад) мы с тобой этот вопрос обсуждали. А чем именно не угодил - не сказал и сейчас не говориш. Пёс с им, Грэмом, ну ненравицо он тебе, девушку там увёл или трёшку занял не отдаёт, это ваше с ним личное дело, но зачем на лисп крыситься? Это ведь неодушевлённое и такова всплеска эмоций ну никак не заслуживает. Если уж знаеш чем он так плох, говори, не томи. Не забудь примеры привесть какие сыщутся.
Я просто против крайностей. Я не бросаюсь в ноги Sussman'у и не молюсь на икону Graham'а. Тем не менее подход к обучению, когда первым выбирается язык, предрасполагающий к метапрограммированию, считаю весьма эффективным. Конечно он должен быть простым. Как scheme. На нем можно написать с нуля простенькую объектно-ориентированную систему или, как уже заметили, интерпретатор себя же. После этого понимание объектно-ориентированной, функциональной и других парадигм и обучение другим языкам становится гораздо проще.
>Чем же это? Вы случайно не путаете с вендузятнегами?
Не путаю. Виндузятнегов я понимаю, а лисперов - нет. Это меня беспокоит. Вроде все умные люди, а так носятся с этой игрушкой.
> Во-первых, он весьма прост.
Описание Common Lisp - это толстенный том (или 2?), о какой простоте речь?! Или ты имеешь в виду Маккартниевский Lisp 1.5 50-летней давности? Или Scheme?
> Назови языки и наречия, которые бы включали в себя сравнимое или меньшее количество базовых концепций
Так о каком Лиспе мы говорим? Что именно включаем в базовые концепции - пару, список? А навороты Common Lisp? А так - в ассемблере, Си, Паскале базовых концепций тоже не особо много.
> а потом давай сравним простоту испрользования названых на реальных задачах.
На _каких именно_ задачах? Я занимаюсь системами реального времени, куда там Лисп с его сборкой мусора воткунть? Если задача сводится к обработке списков - тогда Лисп рулит, поскольку для этого и сделан.
> весьма читабелен. Вместо зверинца из всяких разнообразных : ; {} () :: . -> = используется ()
Я уже писал - всё слишком однообразно, глазу не за что зацепиться. Вспоминается brainfuck ;)
> допускает весьма высокий уровень абстракции данных
Настолько субъективно, что...
> В пятых, нунах, запарилсо. Вот некоторые экзамплы
При всем уважении, это сферические кони в вакууме. В реальных задачах Лисп за 50 лет распространения не получил - это говорит о многом.
А вообще, хороших редакторов много (мой фаворит - MultiEdit, хотя я вне уже лет 10 не работал). Emacs - он не лучший, просто за счет почтенного возраста и открытости он накопил огромное количество модулей расширения.
> Виндузятнегов я понимаю, а лисперов - нет. Это меня беспокоит.
Первых понять проще, чем вторых? ;)
> Вроде все умные люди, а так носятся с этой игрушкой.
1. Выс забыли спросить, с чем носиться. 2. У Вас какие игрушки?
> Описание Common Lisp - это толстенный том (или 2?), о какой простоте речь?!
Описание какого языка (с описанием всех библиотек, необходимых для покрытия аналогичной функциональности) займёт меньше? А прост, потому как код есть список и ничего более.
> Я занимаюсь системами реального времени, куда там Лисп с его сборкой мусора воткунть?
Написать свой для "систем реального времени" :)
> Я уже писал - всё слишком однообразно, глазу не за что зацепиться. Вспоминается brainfuck ;)
"Настолько субъективно, что..." :)
> В реальных задачах Лисп за 50 лет распространения не получил - это говорит о многом.
Ни о чём не говорит.
Даже если мух и не вспоминать, Вы же не будете настаивать, что всю историю человечества побеждали только лучшие идеи... ;)
> А вообще, хороших редакторов много (мой фаворит - MultiEdit, хотя я вне уже лет 10 не работал). Emacs - он не лучший, просто за счет почтенного возраста и открытости он накопил огромное количество модулей расширения.
И я лет ...надцать тому был "без ума" от ME. Так вот, если представить его OS + более приятный язык макросов - получим emacs ;) (ну а кто-то получит vi :)
> Во-первых, он весьма прост. Назови языки и наречия, которые бы включали в себя сравнимое или меньшее количество базовых концепций, а потом давай сравним простоту испрользования названых на реальных задачах. Особенно будем обращать внимание, насколько гиморно и отлично от "канонов" будет таково решение.
io ;-)
Но вообще говоря, концептуальная простота нафик не сдалась на практике. Тот же CL, при том, что он весь на себе же, нихрена не простой; а весьма простой Scheme за пределами кампусов никто не использует.
> Во-вторых, весьма универсален. Может быть есть такие задачи, решать которые на другом наречии было бы проще или результат получался бы лучше, но для лиспа круг задач, которые можно было бы решать с приемлемым качеством и за более чем приемлемое время, ИМХО наиболее широк.
Эээ. Про C++ или Java можно сказать то же самое теми же словами. "Можно сделать что угодно, ну и что, что перректально" - это не аргумент.
> В третьих, весьма читабелен. Вместо зверинца из всяких разнообразных : ; {} () :: . -> = используется (), и только там, где логически необходимо выделить определённую последовательность, из-за чего как число служебных элементов, требуемых синтаксисом языка а не описанием логики, так и их ассортимент, сведены к минимуму.
Это дело вкуса. Имхо, как раз наоборот, синтаксическая бедность затрудняет чтение. После Perl или C++ смотреть в прогу на CL - как читать по-русски без знаков препинания и заглавных букв. Для метопрограммирования это плюс, но оно всегда будет уделом подавляющего меньшинства, которое пишет библиотеки и трансляторы.
> В четвёртых, допускает весьма высокий уровень абстракции данных. Т.е. требует наименьшего числа телодвижений при описании задачи и ещё меньшего дл изменения проги если задача немного поменялась.
И какие же абстрактные структуры данных нельзя сформулировать на C++ или Python? Ну, в плюсах синтаксис корявый - но и только; ну бедт треугольных скобочек столько же, сколько в лиспе прямых ;)