LINUX.ORG.RU

Справочник CL


0

3

Когда я пишу на си или си++, читаю документацию по функциям в манах. Если не дай боже на Qt - в ассистенте. А вот какой мануал использовать по лиспу? Пока что просто гуглю что-нибудь типа «lisp format», но это надоедает. Вроде как есть офицальный гиперспек, но то ли там нет нормального поиска, то ли я им пользоваться не умею... Хочется полноценный справочник, все в одном. Желательно оффлайн.

Заранее спасибо.

★★★★★

Ответ на: комментарий от mv

>Абсолютно упругий сферический лиспер в вакууме получает впечатления именно в рабочем процессе.

думаю, лисперами не рождаются. Тем более сферическими абсолютно упругими.

В данном конкретном случае лиспопрограммирование в емаксе + слайм - это как заходить в квартиру на пятом этаже через дверь, поднявшись на нужный этаж на лифте. Изварты с vim, kate, etc - это альпинизм по стенам и без всякого снаряжения.

Оно так, верно. На пятый этаж по стенкам, это, конечно экстрим, на лифте, безусловно приятнее. Особенно, если специально ради такого удовольствия не придется в срочном порядке устанавливать лифт и достраивать четыре этажа. Самому.

Ну вот как-то так, аналогии такие аналогии.

grinn ★★
()
Ответ на: комментарий от staseg

> Видимо я в очередной раз делаю что-то не так, раз получаю впечатление

от языка, а не средства... взаимодействия с ним


Нет, просто не поняли, что CL это не язык для описания решений, а язык для их создания. Лисп вместе с Smalltalk (в котором это развито ещё сильнее) фактически никогда не использовались вне «среды». Заметная часть спецификации CL посвящена именно средствами, необходимым для создания среды. Дизайн CL специально разработан для использования его в рамках среды. Проецировать опыт программирования на C++ на CL просто глупо. Среда в CL, фактически, есть неотъемлемая часть языка. Но это кажется слишком трудной мыслью для вас.

Про тебя конечно. Но с мудаком перегнул наверное. Прошу прощения.


Извиняться не стоит. Мы не в детском саду. А хамы и дебилы на ЛОРе не редкость.

archimag ★★★
()
Ответ на: комментарий от grinn

> Признаюсь, я не вдавался в подробности фактической реазации этих

плюшек (CL от прочих отличает именно обилие плюшек), но поскольку это

все же лисп, то, имхо, за исключением совем уж специальных случаев,


и рассматривать это все следует с позиции лиспа, т.е. «все есть


список».



Специально запомнил ссылку на данный пост, ибо более дилетантского представления о лиспе вообще и о CL в частности встретить вряд ли ещё удастся.

archimag ★★★
()
Ответ на: комментарий от grinn

> но поскольку это все же лисп, то, имхо, за исключением совем уж специальных случаев, и рассматривать это все следует с позиции лиспа, т.е. «все есть список». Отсюда и cons cell как [пафос поскипан] самое основание лиспа.

Так вот, главное, что я знаю про лисп , это то, что cons cellы в силу своей простоты позволяют реализовать абстракции любого уровня. И да, в CL много чего реализовано из коробки.

Ты ничего не знаешь про CL.

anonymous
()
Ответ на: комментарий от anonymous

>Ты ничего не знаешь про CL.

А это что, был экзамен? Тогда прошу прощения, что сразу же не послал тебя нахер.

grinn ★★
()
Ответ на: комментарий от archimag

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

den73 ★★★★★
()
Ответ на: комментарий от grinn

> А это что, был экзамен? Тогда прошу прощения, что сразу же не послал тебя нахер.
Думаю, ты неправ. Тебе хотят помочь, а ты отвечаешь оскорблениями.

den73 ★★★★★
()
Ответ на: комментарий от archimag

>Специально запомнил ссылку на данный пост, ибо более дилетантского представления о лиспе вообще и о CL в частности встретить вряд ли ещё удастся.

Польщен. Весьма.

Вот, держи еще в копилку:

Базовыми элементами s-выражения являются списки и атомы. Списки ограничиваются скобками и могут содержать любое число разделенных пробелами элементов. Все, что не список, является атомом. Элементами списков в свою очередь также являются s-выражения (другими словами, атомы или вложенные списки).

и еще:

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

и на закуску:

списочный тип данных является иллюзией, созданной множеством функций, которые манипулируют cons-ячейками. Common Lisp также предоставляет функции, позволяющие вам обращаться со структурами данных, созданными из cons-ячеек, как c деревьями, множествами, и таблицами поиска

echo $S |md5sum 83e2c3d516eb3324e5275840346bbd57 -

grinn ★★
()
Ответ на: комментарий от grinn

> Вот, держи еще в копилку

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

archimag ★★★
()
Ответ на: комментарий от den73

>Думаю, ты неправ. Тебе хотят помочь, а ты отвечаешь оскорблениями. Думаю, ты неправ. Этот тред давно уже не о помощи, а о прокачке ЧСВ. Кстати, помнишь поговорку о «бесплатных» (в смысле — непрошенных) помошщниках?

grinn ★★
()
Ответ на: комментарий от archimag

Пока лисперы озабочены своей элитарностью. а не расширением комьюнити, отношение к ним и будет как к высокомерным снобам. Вместо общих слов о крутости CL, можно выложить свои конфиги с комментариями и инструкцию, как быстро собрать рабочую среду EMACS/SLIME, добавить перевод SLIME/Emacs Cheat Sheet и получится отличная ссылка для новичков на «просто попробовать».

ЗЫ Лучший пример на русском о разных подходах к программированию на лиспе http://community.livejournal.com/ru_lisp/27529.html?thread=282505#t282505 , где аннонимус показывает преимущества интерактивной разработки, а swizard - лёгкость создания DSL.

anonymous
()
Ответ на: комментарий от archimag

>Меня же в посте выше привлекло редкое дилетантство и некомпетентность

Мне все интереснее. И что же, осмелюсь спросить, в той фразе противоречит действительности? Что CL является лиспом? Или что сущности лиспа можно рассматривать как списки? Или что cons cells — фундаментальная сущность лиспа (которая благодаря своей простоте, делает лисп таким выразительным, мощным, и одновременно простым в понимании языком)?

Нет, мне правда интересно.

grinn ★★
()
Ответ на: комментарий от grinn

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

http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node15.html#SECTION006000000000...

По сути (для автора темы), хелловорд на лиспе можно написать в любом редакторе. Однако, фишка в том, что хелловорд не даёт представления о языке. Для получения представления о языке нужна среда.

den73 ★★★★★
()
Ответ на: комментарий от anonymous

> Вместо общих слов о крутости CL, можно выложить свои конфиги с комментариями и инструкцию, как быстро собрать рабочую среду EMACS/SLIME
Я уже написал, есть пробные версии коммерческих реализаций. Есть http://common-lisp.net/project/lispbox/ (правда, лично я его не пробовал). Инструкции по настройке SLIME имеются в самом SLIME.
Так что не надо обвинять нас в снобизме, надо просто читать тему.

den73 ★★★★★
()
Ответ на: комментарий от anonymous

> Пока лисперы озабочены своей элитарностью.

а не расширением комьюнити,


Ради бога, разговоры об элитарности на ЛОРе вроде бы уже прекратились. Но есть объективный ограничивающий фактор, что для работы с CL нужна либо коммерческая реализация, либо необходимо пользоваться SLIME. Если кто-то не желает по каким-то причинам связываться с Emacs (который необходим для SLIME), то лучше именно (!) с CL не связываться, ибо ничего путного всё равно не выйдет.

Другое дело, что в интересах расширения сообщества нужна была бы какая-нибудь альтернативная IDE, что бы не навязывать Emacs, который многие не любят. Но такую IDE должен кто-то сделать. Учитывая достоинство SLIME, то вероятность того, что кто-то готов будет потратить кучу своего времени на разработку подобного инструмента в данный момент времени представляется сомнительной.

можно выложить свои конфиги с комментариями и инструкцию, как быстро

собрать рабочую среду EMACS/SLIME, добавить перевод SLIME/Emacs Cheat


Sheet и получится отличная ссылка для новичков на «просто попробовать



Можно, не хотите подготовить материал? Я смогу добавить статью на lisper.ru. Пока же вообще плохо с материалами и кучи желающих исправить ситуацию не наблюдается (

archimag ★★★
()
Ответ на: комментарий от den73

>человеку, который имеет опыт написания более-менее масштабных приложений и просто по этой причине знает лисп и практику работы в нём на два порядка лучше тебя.

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

Насчёт типов данных лиспа прочитай хотя бы вот это

Не понял, где там написано, что cons cells сложнее блоков js для понимания?

>а то уж совсем какие-то детсадовские вещи пишешь.

Именно. А это и есть «детсадовские вещи» — в смысле, очень простые и доступные — рад что ты понял. И тот факт, что в CL «из коробки» есть реализация более сложных сущностей, не делает CL более сложным для освоения. Взять хотя бы те же массивы. Вне зависимисти от их «всамделишной» реализации и богатства инструментария, работа с ними не отличается от работы с любыми другими объектами лиспа, а значит, при необходимости, их можно представить через cons cells, а значит, что все это — абстракции более высокого уровня над cons cells, которые можно как луковицу, разобрать слой за слоем.

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

Для получения представления о языке нужна среда.

А для получения представления о какашке нужен язык? Или так: для получени представления о режущих свойствах твердосплавного инструмента нужен перфоратор Bosh.

И да, давай пруфы что ли?

grinn ★★
()
Ответ на: комментарий от archimag

> Если кто-то не желает по каким-то причинам связываться с Emacs (который необходим для SLIME), то лучше именно (!) с CL не связываться, ибо ничего путного всё равно не выйдет.

Очень шумное заявление.

Сам пару лет пользуь limp-ом и вполне довлен. Связь с реплом, навигация по s-exp и.тд. там есть.

Противопотавление Emacs/Slime vs Блокнот/copy&paste вглядит странным.

antares0 ★★★★
()
Ответ на: комментарий от grinn

> В чем конкретно заключается глупость?

Что всё выражается через «cons cells». Лиспа, для которого это было бы верно, уже лет 30 как не существует. А CL это очень большой и сложный язык.

archimag ★★★
()
Ответ на: комментарий от archimag

>Другое дело, что в интересах расширения сообщества нужна была бы какая-нибудь альтернативная IDE, что бы не навязывать Emacs, который многие не любят.

Альтернативы - не нужны. :) Нужен «дебильничек» на русском - «Как за 5 минут поставить связку Emacs/Slime» на популярном дистрибутиве бубунта/дебиан. То есть сначала оценить лисп (интерактивность/ДСЛность/гибкость), а уже потом влезать в доки Emacs/Slime для настройки «под себя». А пока лисп начинают изучать только те, кто уже понял его эффективность и готов потратить время на изучение инструментария.

Можно, не хотите подготовить материал?...

Пытаюсь. Но так как не программист и не владею «буржуинским» - требуется время. Как подготовлю/протестирую брошу Вам письмом для проверки, если никто не опередит.

ЗЫ Может уговорить alexott-а дать мастер-класс по Emacs/Slime (подробнее чем http://alexott.net/ru/emacs/). Он умеет писать по русски.

ЗЗЫ Вам персональное спасибо за lisper.ru

anonymous
()
Ответ на: комментарий от anonymous

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

Вы ничего не понимаете. Линия поведения, заключающаяся в элитарном снобизме, - это и есть расширение коммьюнити. Людей в лисп привлекает вовсе не макросы, CLOS, рантаймная модификация парсера, система рестартов и прочая фигня, их привлекает возможность стать элитным снобом. Но, к сожалению, сначала нужно всякую эту фигню изучить, грамотно покласть какашки на форумах и быть позже зачисленным в элитный снобский клуб. Если бы Грэм в своё время не написал зажигательной стати про «мой белый плащ, этих идиотов вокруг и в Йаху в частности», то лисп лично мне нафиг не впёрся бы.

Вот у Питона другой подход к привлечению народа: озираться вокруг несфокусированным взглядом, мычать, пускать слюни. Мол, посмотрите на меня: я - идиот, а на Питоне писать могу.

У некоторых других языков вообще клише педерастов.

Понятное дело, что народ всё больше интересуется как стать снобом, а не слюнепускателем или педерастом.

Можно и в штангисты-хаскеллисты попытаться сунуться, но там нужно уметь качать, собственно, штангу и читать на ночь литературу типа «Электродинамики сплошных сред» сугубо в развлекательных целях. А на утро в ЖЖ смешной анекдот с формулами сочинить по вычитанной у Ландау с Лифшицем глупости в доказательстве. Но лисп проще, там те же материи, только без заумной теории, плюс снобы-лисперы успешно срутся с хаскеллистами, так что невооружённым взглядом не совсем понятно, что элитарнее.

mv ★★★★★
()
Ответ на: комментарий от archimag

>Что всё выражается через «cons cell

Нет, не выражается. Я говорил „можно“. Можно выразить, если потребуется, например, в целях изучения. И самое главное — эта принципиальная возможность позволяет сделать (важное для целей обучения) обобщение: „в лиспе более сложные сущности всегда можно выразить через более простые“. Такой подход позволяет значительно упростить изучение языка. Напомню, мы говорим об изучении.

CL весьма прагматичен, имеет кучу инструментов для эффективного решения практических задач. Нужны эффективные массивы — вот они. Это не противоречит моему утверждению, что CL не сложен, нет ничего сложного в том, чтобы понять: _реализовать_ массивы irl эффективнее не через cons cells, а более прямым путем. Любой человек, прошедший этап „все есть список“ и знакомый с понятием массива, легко это поймет и примет. А что еще более важно, он поймет, что именно это дает, когда этот инструмент применять стоит, а когда нет.

А CL это очень большой и сложный язык.

Большой? — да. Мощный? — да. Выразительный? — да. Сложный? А в чем сложность-то?

Я все больше склоняюсь к мысли, что кому-то очень-очень хочется, чтоб CL считался сложным. Вопрос — зачем вам это нужно?

grinn ★★
()
Ответ на: комментарий от grinn

> _реализовать_ массивы irl эффективнее не через cons cells, а более прямым путем.

Если медленные хэш таблицы можно сделать с помощью списков, то массивы нельзя принципиально.

anonymous
()
Ответ на: комментарий от mv

Сложный? А в чем сложность-то?

Вам, конечно, виднее, но гуру парятся.

Пфф!.. Ну да, грабли, ну да, в CL. А где их нет?

Конечно, грабли создают проблему. Поэтому важное значение имеет их количество, место расположение а также точность и полнота картографической информации об этих местах.

(Вон, похапешники вообще, считай, по минному полю ходят. При этом распевая мантры про «низкий порог». Ну да с них станется.)

И, раз уж тут несколько раз было сравнение с js. Ниогда не приходилось делать что-то типа:

v=a[i]; foo(v) 
потому что
foo(a[i]) 
передает не значение, а ссылку?

[барабанная дробь] и на десерт — целый сарай вилл^W граблей. Такой вот он простой — простой javascript.

И - да, я в курсе, что грабли по ссылке — не единственные в CL

grinn ★★
()
Ответ на: комментарий от anonymous

>>массивы

Ямог бы написать «хеш», но ты б не откаментил. Круто, правда?

нельзя принципиально

Думаю, можно. Работающий код в качестве пруфа не приведу, но есть, например, такие соображения:

(lambda (&rest rest &key ,@body) id)

grinn ★★
()
Ответ на: комментарий от archimag

>CL и JavaScript - мои основные языки, так что не надо рассказывать разных смешных вещей.

Ты считаешь, что я не прав, и тебя это смешит?

А знаешь, что еще смешнее? То, что itt это уже четвертый твой абсолютно бессодержательный наезд в ответ на мой пост. Не ошибочный, не глупый, не смешной, не дилетантский — а просто бессмысленный, не несущий никакой информации, примерно как "-1", только чуть пафоснее. Четвертый из восьми, тенденция, однако! Мне вот интересно, чем это можно объяснить? Ты не соизволил снизойти до осмысленного ответа? Тебе нечего сказать по существу? Ты просто троллишь?

grinn ★★
()
Ответ на: комментарий от grinn

Пфф!.. Ну да, грабли, ну да, в CL. А где их нет?

Это не грабли, это просто сложно для понимания. Так же, как указатель на указатель на указатель на ... в Си. Есть на свете вещи, которые сложно человекам понять в силу умственных ограничений человеков.

передает не значение, а ссылку?

Ну и что? Наверняка в каждом букваре по js это на второй странице написано.

И - да, я в курсе, что грабли по ссылке — не единственные в CL

У вас неправильное представление о граблях. Грабли - это, опять же, замена передачи значения на передачу ссылки при переходе с похапе 4 на 5 (или 3 на 4?). Грабли - это кидание исключения из конструктора в C++. Грабли - это проблемы там, где их, по обывательской логике или привычке, быть не должно.

mv ★★★★★
()
Ответ на: комментарий от grinn

Ты считаешь, что я не прав, и тебя это смешит?

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

mv ★★★★★
()

Ну и помойку же вы здесь развели!

Отвечу всем сразу...

mv. В действительности основная причина изучения - расширение кругозора, кроме того было (и остается) мнение, что реализация кастрированного диалекта окажется очень удобной в качестве конфигурялки (в т.ч. рантайм) для софта. И конечно немного тянула загадочная скобочная магия. Хотя быть может в глубине души мне не хватает понтов и все это нелепые отмазки :)

archimag. Один вроде бы взрослый человек осознал, что был не прав, и попросил у другого вроде бы взрослого человека извинения. И при чем тут детский сад? Ладно, фиг с тобой...

mv, archimag, может быть кто-то еще. Убедили. Доиграюсь с pcl и перед попыткой написания чего-то уровнем выше хелловорлда постараюсь осилить слайм/емакс. Спасибо за старания :)

grinn. Я думаю, все поняли и концептуально согласны с тем, что ты имел в виду, говоря о конс-ячейках и построении всего вокруг них. Но в этом утверждении и правда было столько брешей, что не доебался бы только ленивый. Забей! :)

И всем остальным тоже спасибо за участие и отдельное спасибо за ссылки на доки и не только.

staseg ★★★★★
() автор топика
Ответ на: комментарий от grinn

> Ямог бы написать «хеш», но ты б не откаментил. Круто, правда?

Нет, потому что у хешей нет ограничений на константное время доступа к произвольному элементу. И, если хэш таблицу называют массивом в некоторых языках (php, js, например), это не значит, что он им является.

(lambda (&rest rest &key ,@body) id)

Признайся, ты ведь так тонко троллишь, да?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.