LINUX.ORG.RU

Какашки в Common Lisp


7

4

Предлагаю учёным мужам в этом топике собрать и обсудить проблемы в языке Common Lisp. Кому что не нравится?

Мне категорически не нравится реализация методов в CLOS. Метод в нём - это специализированная общая функция (дженерик), просто функций, присущих только данному классу, нет. При создании метода автоматически создаётся дженерик, если он ещё не был создан. Дженерик виден во всём пакете, и все специализации должны соответствовать его сигнатуре. На практике это приводит к тому, что почти сразу появляется проблема несоответствия сигнатур у методов разных классов. Можно, конечно, разнести классы по разным пакетам, но это влечёт за собой больше неудобств, чем решает. Пока весь код - ваш, под вашим контролем, это особой проблемы не представляет, но представьте, что классы плодит куча разных людей?

Не нравится неполная интеграция CLOS в язык: распознавание класса в CLOS для стандартных лисповских типов ещё работает, но не для своих типов, объявленных через deftype.

Ну и вообще CLOS жирноват для 90% задач. Не говоря уж про MOP, который почти никем не используется, а если и используется, то для решения проблем с кривостями CLOS, либо просто книжку AMOP обчитался и повредился умом.

Не нравится реализация пакетов (неймспейсов). Удобно иметь вложенные пакеты, но их нет. Возможность задания никнейма для пакета в самом пакете - членовредительская, ибо каждый гомо сапиенс для своей мегабиблиотеки задаёт двух-, трёхбуквенный никнейм. Букв в общепринятой латинице и так мало (опустим перечень адских пыток, которым после смерти будут подвергнуты те, кто пишет комментарии не на английском языке или вообще использует не-ASCII алфавит для идентификаторов), так ещё количество их кобминаций ограничено любовью человеков к акронимам и красивым сокращениям.

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

loop - какашка. Это не лисп. Точка.

Встроенный макроязык в format - тоже какашка. Я каждый раз после двухдневного перерыва лезу в документацию или старый код, чтобы вспомнить, как форматировать число с плавающей запятой. В общем-то, перенаворочен format. И всякой ерунды в него набито, типа автоматического окончания у числительных, но которое работает только для аглицкого языка.

unwind-protect - хорошо, но от попыток человеком сэмулировать продолжения для CL хочется икать. Такие trade-off вполне понятны, но лучше бы unwind-protect ограничили.

Ну и более мелкие ляпы в стандарте, типа (elt sequence index), но (nth index list).

Да, этот пост написан в Емаксе, запущенно под лисповым оконным менеджером человеком, получающем деньги за написание лиспокода :)

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

Всё что нужно прогам Стивенса это select и сокеты.

но многим прогам и этого не нужно (не все ж пишут системный софт)

В общем, секс вполне возможен.

конечно возможен, кто спорит-то, но текущее положение дел таково, что с CL он обязательно будет :)

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

Развитие могло пойти и в другом направлении.

сослагательное наконение - это так здорово :)

Но Clu и ML почему-то сфейлили...

ну да, щас - Python (много взял от Clu) и O'Caml вполне живые себе

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

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

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

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

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

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

> все это легко решается с помощью замыканий и макросов.

Я знаю, но все же приятнее писать mapcar или даже просто map вместо самодельного seq-map. А вот с генераторами последовательности сложнее. Видимо, от cl-cont никуда не уйти :)

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

> ну да, щас - Python (много взял от Clu) и O'Caml вполне живые себе

А для F# вышел April 2011 CTP, так что он, как потомок O'Caml живёт и развивается.

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

>> Развитие могло пойти и в другом направлении.

сослагательное наконение - это так здодрово :)

Это не сослагательное наклонение, а факт. Могло, но не пошло.

Python (много взял от Clu)

Питон - динамически типизированное говно. Конечно, из динамически типизированных говн это самое лучшее, но... А на Клу похожи все современные языки.

Насчет окамля - это не жизнь.

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

Ты уже не прав даже насчет россии.

Давай подойдём к вопросу утилитарно и сравним образцы военной техники потенциальных противников?

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

>> Развитие могло пойти и в другом направлении.

сослагательное наконение - это так здодрово :)

Это не сослагательное наклонение, а факт. Могло, но не пошло.

вот «не пошло» - это факт, а «могло» - это сослагательное

Питон - динамически типизированное говно.

почему говно-то, потому что «динамически типизированное»?

Насчет окамля - это не жизнь.

почему?

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

> ну да, щас - Python (много взял от Clu) и O'Caml вполне живые себе

А для F# вышел April 2011 CTP, так что он, как потомок O'Caml живёт и развивается.

я бы не назвал F# потомоком O'Caml

PS увы, но прибитость гвоздями к .net перечеркивает многие достоинства F#

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

Давай подойдём к вопросу утилитарно и сравним образцы военной техники потенциальных противников?

давай, американская техника - говно :)

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

> я бы не назвал F# потомоком O'Caml

Можно демократично назвать его языком семейства ML.

PS увы, но прибитость гвоздями к .net перечеркивает многие достоинства F#

Это с одной стороны, а с другой делает достаточно простой работу с уже написанным кодом под .Net. Имхо, это вполне адекватная цена за привязку к платфоре.

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

давай, американская техника - говно :)

Я бы с радостью закивал головой, будь неадекватом. Но могу только печально покачать головой, пробурчав: «Такую страну просрали!» ;)

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

Но могу только печально покачать головой, пробурчав: «Такую страну просрали!»

согласен, госдолг 100% ВВП - это уже практически БП IRL :)

> давай, американская техника - говно :)

Я бы с радостью закивал головой, будь неадекватом.

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

короче, предложенный Вами показатель нам для использования в любом разе недоступен, а если бы и был доступен - WTF??? Кого волнует военная техника?

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

Можно демократично назвать его языком семейства ML.

вот

> PS увы, но прибитость гвоздями к .net перечеркивает многие достоинства F#

Это с одной стороны, а с другой делает достаточно простой работу с уже написанным кодом под .Net. Имхо, это вполне адекватная цена за привязку к платфоре.

да, но для тех кто пишет код под Linux это не подходит

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

> да, но для тех кто пишет код под Linux это не подходит

Тогда, возможно, стоит ждать Nemerle 2.0. На сколько я знаю туда собираюсться запилить поддержку различных VM(.Net, JVM, LLVM).

Хотя Nemerle - довольно таки серьёзный монстр на мой взгляд.

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

согласен, госдолг 100% ВВП - это уже практически БП IRL :)

Кто этот долг сможет востребовать? :)

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

Не эксперт, любопытствующий. У Штатов постоянная аппробация военного железа идёт в их оборонных операциях по всей планете, плюс дикие военные бюджеты. Вот когда был СССР с аппробацией военного железа по всей планете, плюс оборонный бюджет был весомый, тогда и у нас танки ездили и самолёты летали. А сейчас у каких-то там корейцев, недавно слезших с дерева, танки лучше. И арабы, толком с дерева и не слезшие, выкатили образец танка с необитаемой башней. А у нас тепловизоры массово ставить не начали, да и те, что ставят - французские.

короче, предложенный Вами показатель нам для использования в любом разе недоступен, а если бы и был доступен - WTF??? Кого волнует военная техника?

Ну вот тут товарищи усомнились в применимости лиспа в оборонке, и в пример привели каких-то тёмных оборонных товарищей. Я эту непатриотичную тему оставлю, пожалуй, но отмечу, что появился Common Lisp (сам стандарт) на деньги омереканской оборонки. Поэтому на фразу про неприменимость обрезков ногтей в военке сразу бровь поднялась.

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

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

Она осталась в наших сердцах. Я вот на гитарке гимн разучил недавно ;)

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

>Кто этот долг сможет востребовать? :)

Чтобы объявить дефолт надо для начала перестать заимствовать. А то ведь не дадут больше.

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

Чтобы объявить дефолт надо для начала перестать заимствовать. А то ведь не дадут больше.

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

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

>И что китайцы и японцы делать будут, если омереканцы не смогут покупать китайские-японские поделки всякие?

То есть они дают в долг США чтобы у США были деньги чтобы покупать ихние товары?

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

> PS увы, но прибитость гвоздями к .net перечеркивает многие достоинства F#

Обосновывай. Кто кому что там перечеркивает.

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

То есть они дают в долг США чтобы у США были деньги чтобы покупать ихние товары?

Да.

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

Тогда, возможно, стоит ждать Nemerle 2.0.

не, мой выбор либо O'Caml, либо Erlang, либо Clojure

а вообще мне нравится Snobol (не синтаксисом, но идеями реализации), думаю как дойдут руки написать под свои задачи узкозаточенную небольшую VM

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

> согласен, госдолг 100% ВВП - это уже практически БП IRL :)

Кто этот долг сможет востребовать? :)

cn, jp

У Штатов постоянная аппробация военного железа идёт в их оборонных операциях по всей планете, плюс дикие военные попилы

//fixed

да у них тоже есть, вспомните безумную идею с лазером на самолётике :)

ну а насчёт бюджетов всяких - наши самолёты как летали лучше ихних так и летают, как наши ракеты-перехватчики были лучше так и сейчас лучше, как наши, С400 как рвал патриота так и рвёт и чё?

танки лучше, говорите? во-первых расскажите чем лучше, а то, знаете ли, во время WW2 всякие панцеры-шманцеры фашистские были куда как технологичнее и навороченнее, а всё равно на страшном корыте Т34 всех в асфальт закатали (могу рассказать даже почему)

да и при реальных боевых действиях танки для чего сгодятся? мишенями для самолётов ползать?

А у нас тепловизоры массово ставить не начали, да и те, что ставят - французские.

ну куда эти тепловизоры ставить? от ядерного взрыва облако термометром ректально у вражеских солдат померять можно будет

короче не знаете - не начинайте

Ну вот тут товарищи усомнились в применимости лиспа в оборонке, и в пример привели каких-то тёмных оборонных товарищей.

та всё применимо, даже попилы

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

> PS увы, но прибитость гвоздями к .net перечеркивает многие достоинства F#

Обосновывай. Кто кому что там перечеркивает.

Linux, как? (mono не предлагать)

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

> То есть они дают в долг США чтобы у США были деньги чтобы покупать ихние товары?

Да.

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

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

> наши самолёты как летали лучше ихних так и летают, как наши ракеты-

перехватчики были лучше так и сейчас лучше, как наши, С400 как рвал

патриота так и рвёт



Такой большой, а в сказки веришь.

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

> наши самолёты как летали лучше ихних так и летают, как наши ракеты-

перехватчики были лучше так и сейчас лучше, как наши, С400 как рвал
патриота так и рвёт

Такой большой, а в сказки веришь.

я не «верю», я знаю :)

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

ну а насчёт бюджетов всяких - наши самолёты как летали лучше ихних так и летают

Где они летают-то? :) Беспилотники, опять же, у них уже давно есть, а у нас от военных ругань какая-то стоит на отечественные, да поползновения купить израильские девайсы.

как наши ракеты-перехватчики были лучше так и сейчас лучше, как наши, С400 как рвал патриота так и рвёт и чё?

У них сверху дружественная Канада, а снизу варварская Мексика. От кого им обороняться сухопутными системами ПРО? А с моря их Aegis прикрывает.

а всё равно на страшном корыте Т34 всех в асфальт закатали (могу рассказать даже почему)

T-34 на начало войны превосходил массовые Pz-3 и -4, а потом задавили массой.

да и при реальных боевых действиях танки для чего сгодятся? мишенями для самолётов ползать?

Вертолётов. Танки хорошо только со штурмовиков гробятся, а с вертолётов ещё лучше.

ну куда эти тепловизоры ставить? от ядерного взрыва облако термометром ректально у вражеских солдат померять можно будет

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

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

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

Я-то понимаю, но факт есть.

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

> ну а насчёт бюджетов всяких - наши самолёты как летали лучше ихних так и летают

Где они летают-то? :)

за последние года ситуация начала кардинально выправляться, летают, а где - то не нам с Вами знать

Беспилотники, опять же, у них уже давно есть, а у нас от военных ругань какая-то стоит на отечественные, да поползновения купить израильские девайсы.

помогли те беспилотники Грузии?

//да, здесь есть отставание пока

> как наши ракеты-перехватчики были лучше так и сейчас лучше, как наши, С400 как рвал патриота так и рвёт и чё?

У них сверху дружественная Канада, а снизу варварская Мексика. От кого им обороняться сухопутными системами ПРО?

сухопутными могут быть только войска, а системы ПРО - наземного, подводного и т.п. базирования

А с моря их Aegis прикрывает.

он от этого лучше не становится :)

> а всё равно на страшном корыте Т34 всех в асфальт закатали (могу рассказать даже почему)

T-34 на начало войны превосходил массовые Pz-3 и -4, а потом задавили массой.

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

> да и при реальных боевых действиях танки для чего сгодятся? мишенями для самолётов ползать?

Вертолётов. Танки хорошо только со штурмовиков гробятся, а с вертолётов ещё лучше.

конечно со штурмовиков, не истребителями же их ловить :)

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

тепловизор позволяет определить температуру поверхности, причём тут танк без тепловизора?

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

> mono не предлагать

Почему?

ссыкотно на долгосрочную перспективу рассчитывать, пока по крайней мере

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

> за последние года ситуация начала кардинально выправляться

Что можно исправиться за несколько лет после 30 лет деградации и разрухи? Я знаю какова ситуация в космической отрасли и знаю, что говорит наша пропаганда. Если соотношение реальной ситуации и пропаганды такое же и в других отраслях (а с чего бы ему быть другим?), то.. ничего хорошего в общем.

не-а, нифига подобного, Т34 был простой как чугунитовая болванка,


Т-34 был намного лучше немецких танков начала войны и было их в несколько раз больше.

В общем, в военном деле я вижу вы эксперт.

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

> за последние года ситуация начала кардинально выправляться

Что можно исправиться за несколько лет после 30 лет деградации и разрухи?

1) за 20
2) пока зубры ещё живые - всё будет тип-топ, надеюсь что успеют смену передать

Я знаю какова ситуация в космической отрасли и знаю, что говорит наша пропаганда.

я тоже знаю, причём не понаслышке (10 лет работы), но америкосы, тем не менее, летают на наших мамонтячьих ракетах - у них ещё хуже?

> не-а, нифига подобного, Т34 был простой как чугунитовая болванка,

Т-34 был намного лучше немецких танков начала войны и было их в несколько раз больше.

чем он был лучше? это была жестянка, после которой ад не так был страшен, однако железяка дико простая и ремонтопригодная, которая переносила наши морозы сравнительно легко, чинилась в чистом поле при помощи кувалды и чьей-то матери - вот и весь профит

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

> Я уже много лет на этом сайте говорю, что практически весь софт - event-driven,

да

и качество компилятора или скорость работы vm/рантайма ни на что не влияет.

нет

подробнее: в event-driven-софте важно время реакции на этот самый эвент, и оно как раз от vm/рантайма очень сильно зависит

по моему опыту (игра в шахматы в блиц в ява-апплете) ява заметно подтормаживает, вплоть до паузы в 10+ секунд раз в несколько часов

в блице, где весьма часто решают десятые (а может даже и сотые) доли секунды, это мягко говоря неприятно

vm/рантайм .нет еще хуже явовского

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

причем тормозит именно ява, а не сеть — загрузка цпу идет под 100%

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

> Я написал как-то фрилансовую халтуру на самых что ни на есть крестах. Писал на линуксе, запускалось под фряхой. Мало того, что с версиями библиотек полная порнография была: кое-что пришлось переписывать под старую версию, кое-какие библиотеки пришлось на фре обновлять, так ещё на фре софт крешился в пучинах boost.asio, и на отладку этой фигни (не моей!) было положено уйма времени.

а статическая линковка не спасла отца русской демократии?

подозреваю, что заказчика это бы устроило

www_linux_org_ru ★★★★★
()

Я так понимаю, теперь это тред «российское vs. мировое вооружение». Пора начинать новый.

2 mv: напоследок, касательно «лисперов, которые, как правило, умнее жабщиков». Тут у тебя классическое заблуждение "cum hoc ergo propter hoc" (корреляция означает причинность). То есть сам по себе лисп, скорее всего, ни при чем; но зато если дядька в летах владеет лиспом, то это означает, что наверняка он получил какое-то довольно фундаментальное образование, и ему, в том числе, преподавали и лисп. Посему ошибочно утверждать, что лисп влечет интеллект. Наоборот, среди лисперов, особенно молодежи, попадаются весьма суровые неадекваты и просто полусумасшедшие.

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

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

> Ну а как же пофиксить? Если в каталог положить сорец библиотеки, которая глючит на бзд/другой версии гцц, то она ж от этого магически не исцелится?

люди вон оракл бинарно патчили (исходников-то нет) чтобы он на бсде крутился

и вообще всякие там линуксляторы на ум приходят, не?

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

Я так понимаю, теперь это тред «российское vs. мировое вооружение».

это был совсем не умный критерий для сравнения :)

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

> Посмотрите в кишки boost'у: каждый ifdef компилятор_версия кровью выплакан.

есть такое

и следовательно?

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

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

чем он был лучше?

Броня была непробиваемой для всех основных немецких танковых и противотанковых пушек. Широкие траки давали меньший удельный вес на грунт, что в отсутствие автобанов было большим преимуществом перед немецкими танками.

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

Заблуждение, на первых Т-34 движки и трансмиссия ломались в хвост и гриву, и в поле нифига не ремонтировались. Но потребность в танках была такой сильной, что конструкторам не давали передать изменения в конструкции на производства до 43-го, что ли, года, пока немцы не поставили более могущественные пушки на Pz-4 и не улучшили бронирование, и они, вкупе с немецкой стратегией, подготовкой экипажей, поголовным оснащением танкой рациями и оптикой, не стали крошить тридцатьчетвёрки в капусту. Наши только когда вёдрами стали танки терять, тогда сподобились кучу изменений внести вместе с новой пушкой.

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

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

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

Я ровно это и говорю.

Наоборот, среди лисперов, особенно молодежи, попадаются весьма суровые неадекваты и просто полусумасшедшие.

E...тов везде хватает.

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

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

Это не про программу, а про заточки на компиляторы/платформы в библиотеках. Были жалобы, что в лисповых библиотеках много таких заточек. Я привёл пример, что в более мейнстримовом языке их не меньше.

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

Конечно, из динамически типизированных говн это самое лучшее, но...

А чо там? ну так короткий список для моего общего развития :). Помню про if-стейтмент который менее гибок чем в C, нет конструкции do..while, нет такого стройного event loop как в tcl, GIL, нет приватный полей в классах... What else?

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