wrote:
> Ваши представления о языке Lisp настолько же адекватны, насколько > адекватны "нижессылаемые на" представления о нашей Великой Родине. > http://transformation.ru/russia/?show=1
Не надо дискуссию в сторону уводить.
> Я понимаю, что существенно проще принять распространённый стереотип, > чем самостоятельно поинтересоваться сутью вопроса.
А вы думаете я не интересовался сутью вопроса? Я писал на Лиспе (для
AutoCADа), немного писал на GNU CLIPSе, потом смотрел в сторону Лиспа,
когда искал встраиваемый язык для своего приложения (в итоге остановился
на Питоне). Так что смею вас заверить, о состоянии дела в Лиспе я знаю
не понаслышке.
Здравствуйте, Cyberax, Вы писали:
C>Еще более сомнительно будет ли Лисп компактнее кода на Python'е или C>Ruby. И при этом синтаксис у Питона — очень приятный.
Даешь Lisp с синтаксисом Питона!
Кстати, я, кажется, где-то видел что-то вроде Lisp-подобного языка, который избавили от большой части скобок (заменили отступами).
>> C>Существенного упрощения кода на Лиспе тоже не наблюдается — код того же >> C>Emacs'а читается ничуть не лучше, чем код jEdit'а или Eclipse. >> Emacs написан на Emacs lisp'е, не самой удачной реализации морально >> устаревшего >> диалекта (фундаментальная проблема — dynamic scoping вместо lexical >> scoping, >> т.е. в столь древних диалектах ещё не было тех же closures)
C>Не думаю, что нескольок новых фич сильно улучшили бы код.
IMHO это вполне возможно. Например, мне очень не хватает closures в С++, и мне думается, что они вполне могли бы заметно поднять качество кода во многих случаях.
Здравствуйте, pvgoran, Вы писали:
P>IMHO это вполне возможно. Например, мне очень не хватает closures в С++, и мне думается, что они вполне могли бы заметно поднять качество кода во многих случаях.
boost::function<> не устраивает по религиозным причинам?
Re[15]: Metaprogramming et al
От:
Аноним
Дата:
10.07.05 17:20
Оценка:
Здравствуйте, Cyberax, Вы писали:
C> wrote:
>> Ваши представления о языке Lisp настолько же адекватны, насколько >> адекватны "нижессылаемые на" представления о нашей Великой Родине. >> http://transformation.ru/russia/?show=1
C>Не надо дискуссию в сторону уводить.
Я не пытаюсь её увести в сторону. Попробуйте какому-нибудь программеру
на VB6 объяснить по-человечески, зачем вообще нужны темплейты в C++,
что даёт STL, Boost Libraries. Думаете, это у Вас легко получится?
Не уверен. Может быть, конечно, я просто плохой "объяснятель"...
>> Я понимаю, что существенно проще принять распространённый стереотип, >> чем самостоятельно поинтересоваться сутью вопроса.
C>А вы думаете я не интересовался сутью вопроса? Я писал на Лиспе (для C>AutoCADа),
Сравните GW-BASIC и VB.NET... Разницу ощущаете?
C>немного писал на GNU CLIPSе,
Судя по всему, совсем немного... Иначе бы хотя бы стёб по поводу скобок
исключили в пользу более серьёзных аргументов. Тем более что называется
сей продукт несколько по-другому
C>потом смотрел в сторону Лиспа, C>когда искал встраиваемый язык для своего приложения (в итоге остановился C>на Питоне). Так что смею вас заверить, о состоянии дела в Лиспе я знаю C>не понаслышке.
Ну, положем, на уровне среднестатистического CS student'а в штатах, которого
насильно пичкали Схемой в отрыве от реальной действительности... Это ещё похуже.
Для полноценной картины нужно более существенное знакомство со стандартом
Common Lisp, а не только _расплывчатое_ представление о "Лиспе вообще".
Re[14]: Metaprogramming et al
От:
Аноним
Дата:
10.07.05 17:32
Оценка:
Здравствуйте, pvgoran, Вы писали:
P>Здравствуйте, Cyberax, Вы писали:
C>>Еще более сомнительно будет ли Лисп компактнее кода на Python'е или C>>Ruby. И при этом синтаксис у Питона — очень приятный.
P>Даешь Lisp с синтаксисом Питона!
P>Кстати, я, кажется, где-то видел что-то вроде Lisp-подобного языка, который избавили от большой части скобок (заменили отступами).
На счёт отступов — не знаю, а так — Dylan http://www.gwydiondylan.org/
Но он не прижился, скобки-то удобнее.
>>> C>Существенного упрощения кода на Лиспе тоже не наблюдается — код того же >>> C>Emacs'а читается ничуть не лучше, чем код jEdit'а или Eclipse. >>> Emacs написан на Emacs lisp'е, не самой удачной реализации морально >>> устаревшего >>> диалекта (фундаментальная проблема — dynamic scoping вместо lexical >>> scoping, >>> т.е. в столь древних диалектах ещё не было тех же closures)
C>>Не думаю, что нескольок новых фич сильно улучшили бы код.
Dynamic scoping vs lexical scoping — это не несколько новых фич...
Это, вообще говоря, радикальное отличие. Представляете, если бы все
переменные были глобальными?.. Это, плюс возможность их временного
изменения через let (подобно local в Perl'е) с автоматическим
последующим восстановлением, и есть dynamic scoping. В Common Lisp'е
модель "local" поддерживается для глобальных переменных, а для
остальных используется лексическая область видимости (как и в
других языках). Отличие состоит от тех же плюсов здесь состоит в том,
что могут создаваться лексические замыкания.
P>IMHO это вполне возможно. Например, мне очень не хватает closures в С++, P>и мне думается, что они вполне могли бы заметно поднять качество кода во многих случаях.
Ну, это даже Microsoft осознаёт, в C# 2.0 их добавили.
Re[15]: Metaprogramming et al
От:
Аноним
Дата:
10.07.05 17:33
Оценка:
Здравствуйте, jedi, Вы писали:
J>Здравствуйте, pvgoran, Вы писали:
P>>IMHO это вполне возможно. Например, мне очень не хватает closures в С++, и мне думается, что они вполне могли бы заметно поднять качество кода во многих случаях.
J>boost::function<> не устраивает по религиозным причинам?
Ну, в купе с boost::lambda оно, может быть, уже очень издали похоже
на правду, но вот только синтаксис уже другой, и сообщения об ошибках
на 20 страниц...
wrote:
> C>Не надо дискуссию в сторону уводить. > Я не пытаюсь её увести в сторону. Попробуйте какому-нибудь программеру > на VB6 объяснить по-человечески, зачем вообще нужны темплейты в C++, > что даёт STL, Boost Libraries. Думаете, это у Вас легко получится? > Не уверен. Может быть, конечно, я просто плохой "объяснятель"...
Так не надо считать, что тут у всех уровень как у VB6 по отношению к Лиспу.
> C>А вы думаете я не интересовался сутью вопроса? Я писал на Лиспе (для > C>AutoCADа), > Сравните GW-BASIC и VB.NET... Разницу ощущаете?
Да я знаю, что там он устарел и все такое.
> C>немного писал на GNU CLIPSе, > Судя по всему, совсем немного... Иначе бы хотя бы стёб по поводу скобок > исключили в пользу более серьёзных аргументов. Тем более что называется > сей продукт несколько по-другому
Полгода писал. Поимел очень много счастливых моментов, отлаживая код:
"Какого ^*$#^*#&^$ в этом списке 5 элементов, какой *$(#&#$ его
изменял???". Особенно классно отлаживать чужой код с DSLем (как водится,
не задокументированным — а где вы видели код с точной документацией???),
причем c ошибками (а куда без них, родимых) и в реализации DSL, _И_ в
скриптах на этом DSL. Спасибо, больше мне такого метапрограммного
счастья не надо.
После этого я пересел на Java/C#, а потом на С++. Вот тут мне темплейты
в С++ и понравились — они ОГРАНИЧЕНЫ в функциональности, поэтому их
часто намного легче использовать, чем прямое редактирование AST.
При этом код был всего примерно в 1Мб. Теперь я понимаю, почему программ
больших 10^6 LOC на Лиспе почти нет.
> C>потом смотрел в сторону Лиспа, > C>когда искал встраиваемый язык для своего приложения (в итоге > остановился > C>на Питоне). Так что смею вас заверить, о состоянии дела в Лиспе я знаю > C>не понаслышке. > Ну, положем, на уровне среднестатистического CS student'а в штатах, > которого > насильно пичкали Схемой в отрыве от реальной действительности... Это > ещё похуже.
Вот на Схему не наезжайте — она мне намного больше нравится. Хороший
минималистичный язык, для внутренних скриптов идеально подходит.
--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[17]: Metaprogramming et al
От:
Аноним
Дата:
10.07.05 18:51
Оценка:
Здравствуйте, Cyberax, Вы писали:
C> wrote:
>> C>Не надо дискуссию в сторону уводить. >> Я не пытаюсь её увести в сторону. Попробуйте какому-нибудь программеру >> на VB6 объяснить по-человечески, зачем вообще нужны темплейты в C++, >> что даёт STL, Boost Libraries. Думаете, это у Вас легко получится? >> Не уверен. Может быть, конечно, я просто плохой "объяснятель"...
C>Так не надо считать, что тут у всех уровень как у VB6 по отношению к Лиспу.
>> C>А вы думаете я не интересовался сутью вопроса? Я писал на Лиспе (для >> C>AutoCADа), >> Сравните GW-BASIC и VB.NET... Разницу ощущаете?
C>Да я знаю, что там он устарел и все такое.
Я имею в виду удобство разработки — время/стоимость/etc.
>> C>немного писал на GNU CLIPSе, >> Судя по всему, совсем немного... Иначе бы хотя бы стёб по поводу скобок >> исключили в пользу более серьёзных аргументов. Тем более что называется >> сей продукт несколько по-другому
C>Полгода писал. Поимел очень много счастливых моментов, отлаживая код: C>"Какого ^*$#^*#&^$ в этом списке 5 элементов, какой *$(#&#$ его C>изменял???". Особенно классно отлаживать чужой код с DSLем (как водится, C>не задокументированным — а где вы видели код с точной документацией???), C>причем c ошибками (а куда без них, родимых) и в реализации DSL, _И_ в C>скриптах на этом DSL. Спасибо, больше мне такого метапрограммного C>счастья не надо.
Да, на Лиспе тоже можно писать [хреновый] код. Особенно, если пытаться
писать в Сишном стиле:
(if something
(progn
(setf a b)
(setf c d))
(progn
(setf var1 (+ var2 var3))
(setf elki palki)
(setf somelist (nconc somelist anotherlist))))
и так далее в том же духе (собственно, насколько я могу судить, на
Автолиспе так код обычно и пишется). Стиль тоже надо соблюдать. См., например, http://www.norvig.com/paip.html
C>После этого я пересел на Java/C#, а потом на С++. Вот тут мне темплейты C>в С++ и понравились — они ОГРАНИЧЕНЫ в функциональности, поэтому их C>часто намного легче использовать, чем прямое редактирование AST.
Может быть это конечно и дело вкуса, я не один год с плюсовыми темплейтами
работаю... Но думается мне, что тут дело в попытке использовать Lisp
в "чисто императивном" режиме.
C>При этом код был всего примерно в 1Мб. Теперь я понимаю, почему программ C>больших 10^6 LOC на Лиспе почти нет.
1 MLoc на CL для большинства задач (даже весьма серьёзных) просто не
нужен. Надо гораздо меньше.
>> C>потом смотрел в сторону Лиспа, >> C>когда искал встраиваемый язык для своего приложения (в итоге >> остановился >> C>на Питоне). Так что смею вас заверить, о состоянии дела в Лиспе я знаю >> C>не понаслышке. >> Ну, положем, на уровне среднестатистического CS student'а в штатах, >> которого >> насильно пичкали Схемой в отрыве от реальной действительности... Это >> ещё похуже.
C>Вот на Схему не наезжайте — она мне намного больше нравится. Хороший C>минималистичный язык, для внутренних скриптов идеально подходит.
Да я не наезжаю. Я просто хочу сказать, что мериканским студиозусам её так
преподносят, что они потом всю жизнь ненавидят Лисп вообще и Схему в частности.
Что, увы, способствует снижению рейтинга языка.
Cyberax,
>> C>Вообще, в CL мне не понравилось полное отсутствие нормального >> синтаксиса >> C>(LISP=Lots of Incredibly Silly Paranthesis)
Это не проблема. Достаточно найти правильный редактор/вьюер, который
(F1 a1 (F2 b1 (F3 c1 c2 c3)) a3 a4)
показывает в виде
F1
a1
F2
b1
F3
c1
c2
c3
a3
a4
Ну или в более свёрнутом виде
F a1
F2 b1
F3 c1 c2 c3
a3 a4
И гладкое погружение в Лисп гарантировано!
xxx: Сам давно писал для автокада — тогда и пришла мне в голову эта хотелка, там редактор конечно подсвечивает и пары скобок и т.д. и т.п. но всё равно трудно.
C>-- C>С уважением, C> Alex Besogonov (alexy@izh.com)
Здравствуйте, pvgoran, Вы писали:
А>>но вреда гораздо больше — т.к., как минимум, приходится писать [очень много] лишнего кода. P>А в Lisp'е приходится писать много лишних скобок...
C>>>>ЗЫ: Губанова бы с его "звезданутым" подсчетом скобок натравить на Lisp. C>>>>Он ТААААКОГО бы оверхеда насчитал.... P>>>
Да что вы к этим скобкам првязались? В нормальной IDE (например в том же XEmacs)
это легко правится (к стати на скриншоте как раз код который это делает). А зулененькая
подсветка автоматически парные скобки подсевечивает . После месяца на лиспе их уже не
замечаешь. Их потом в C++ очень не хватает
А вообще язык — супер. Я правда не гуру в нем, только на уровне в "Xemacs че подкрутить"...
а до CLOS и проч все руки не дойдут (XEmacs lisp ИМХО самый кривой из всех лиспов,
а ведь и то такого монстра наваяли, а что можно былоб на CL наварганить ).
E>И объем требует, чтобы строителей было много. А раз много, значит их средний проффессиональный уровень будет невысоким. Значит нужно их снабдить такими инструментами и технологиями, которые позволят при невысоком среднем уровне получать гарантированный результат.
Это очень печально. И то что это так совсем не означает, что это хорошо. Хочется как раз быть просветлённым мастером, а не тупым подмастерьей, занимающим 398459-е место с краю в 835709-ой шеренге.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Аноним, Вы писали:
А>От строгой статической типизации имхо хоть (весьма небольшая) польза, быть может, и есть, А>но вреда гораздо больше — т.к., как минимум, приходится писать [очень много] лишнего кода.
Это еще почему (вопрос про вред и про лишний код)? Глядя, например, на код OCaml-а сложно сказать какая там типизация — статическая или нет. Лишнего кода — мизер.
Здравствуйте, Аноним, Вы писали:
А>Попробую объяснить, почему совершенного reflection/serialization/metaprogramming/etc. А>framework'а для плюсов не будет никогда ;-(
Прочитав это предложение, хотел спросить — пробовал ли ты Лисп
Здравствуйте, Cyberax, Вы писали:
C>Вообще, в CL мне не понравилось полное отсутствие нормального синтаксиса C>(LISP=Lots of Incredibly Silly Paranthesis) и нестатическая типизация.
C>ЗЫ: Губанова бы с его "звезданутым" подсчетом скобок натравить на Lisp. C>Он ТААААКОГО бы оверхеда насчитал....
Здравствуйте, <Аноним>, Вы писали:
А>Ув. тов. Cyberax! А>Ваши представления о языке Lisp настолько же адекватны, насколько А>адекватны "нижессылаемые на" представления о нашей Великой Родине. А>http://transformation.ru/russia/?show=1 А>Я понимаю, что существенно проще принять распространённый стереотип, А>чем самостоятельно поинтересоваться сутью вопроса. Я не буду пытаться А>Вас переубедить. Я лишь надеюсь, что среди читателей этих сообщений А>найдутся люди, готовые подвергнуть стереотип сомнению.
Обсуждение личных особенностей собеседника — в мусорку.
wrote:
> C>Да я знаю, что там он устарел и все такое. > Я имею в виду удобство разработки — время/стоимость/etc.
Писать на нем, кстати, было вполне удобно.
> Да, на Лиспе тоже можно писать [хреновый] код. Особенно, если пытаться > писать в Сишном стиле:
Нормальный там стиль, вполне в духе Лиспа — со своим DSLем и т.п.
Кстати, писалось это на CLISPEе.
> C>После этого я пересел на Java/C#, а потом на С++. Вот тут мне темплейты > C>в С++ и понравились — они ОГРАНИЧЕНЫ в функциональности, поэтому их > C>часто намного легче использовать, чем прямое редактирование AST. > Может быть это конечно и дело вкуса, я не один год с плюсовыми темплейтами > работаю... Но думается мне, что тут дело в попытке использовать Lisp > в "чисто императивном" режиме.
Нет, тут дело в слишком низкоуровневых макросах в Лиспе. С++ные шаблоны
работают над _типами_, а не над кодом, в отличие от Лиспа. Поэтому
шаблоны и удобно использовать — но даже они очень часто из-за misuse'а
становятся крайне запутанными и непонятными.
> C>При этом код был всего примерно в 1Мб. Теперь я понимаю, почему > программ > C>больших 10^6 LOC на Лиспе почти нет. > 1 MLoc на CL для большинства задач (даже весьма серьёзных) просто не > нужен. Надо гораздо меньше.
Для Python'а я знаю систему в 2*10^6 LOC, для Lisp'а я не видел ни одной
даже в 1 миллион LOC. При этом разница по строкам в Питоне и Лиспе будет
весьма небольшой.
Здравствуйте, eao197, Вы писали:
E> Представим себе плотника, который виртуозно владеет своей профессией. Насколько, что с помощью одного лишь топора и без единого гвоздя может построить баньку или небольшую часовеньку. Если собрать нескольких таких же плотников, то они, опять же без единого гвоздя, возведут трехглавую деревянную церьковь, которая простоит лет двести-триста. А если дать им больше времени, то они и семиглавую церьковь поставят. И опять без единого гвоздя.
А с чего ты взял, что "без гвоздей" — это именно Лисп, а не С++?
E>Потому, что объем (даже не сложность, а простой объем) задачи полностью нивелирует разницу в профессиональном уровне матерого плотника и начинающего строителя.
чушь. читаем классиков — Брукса, например. Или хотя бы Сполски.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, eao197, Вы писали:
E>> Представим себе плотника, который виртуозно владеет своей профессией. Насколько, что с помощью одного лишь топора и без единого гвоздя может построить баньку или небольшую часовеньку. Если собрать нескольких таких же плотников, то они, опять же без единого гвоздя, возведут трехглавую деревянную церьковь, которая простоит лет двести-триста. А если дать им больше времени, то они и семиглавую церьковь поставят. И опять без единого гвоздя.
Д>А с чего ты взял, что "без гвоздей" — это именно Лисп, а не С++?
Фокус в том, что на место "без гвоздей" можно поставить любой язык.
Только практика показала, что языки, которые требуют серьезной смены сознания (я сталкивался с Lisp и Prolog, чуть-чуть Smalltalk), широкого применения не получают. Вероятно из-за того, что далеко не все хотят менять свое сознание. И имеют на это право.
E>>Потому, что объем (даже не сложность, а простой объем) задачи полностью нивелирует разницу в профессиональном уровне матерого плотника и начинающего строителя.
Д>чушь. читаем классиков — Брукса, например. Или хотя бы Сполски.
Что именно? Что именно чушь? Что именно читаем (хотя бы конкретную главу, а лучше цитату)?
А Сполски уже классик?
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, eao197, Вы писали:
E>>И объем требует, чтобы строителей было много. А раз много, значит их средний проффессиональный уровень будет невысоким. Значит нужно их снабдить такими инструментами и технологиями, которые позволят при невысоком среднем уровне получать гарантированный результат.
IT>Это очень печально. И то что это так совсем не означает, что это хорошо. Хочется как раз быть просветлённым мастером, а не тупым подмастерьей, занимающим 398459-е место с краю в 835709-ой шеренге.
У кого есть такое желание и достаточно трудолюбия -- тому это доступно. Требуется лишь терпение и время.
Смысл моего возражения был несколько иной. Да и не лишним будет напомнить, что "Metaprogramming et al" появился сначала в "C/C++" в ответ на предложение замутить очень амбициозный велосипедный прожект, который якобы должен был убрать часть недостатков C++.
Я исхожу из того, что Lisp не получил такого широкого распространения, как мейнстримовые языки и технологии. Для меня главной причиной этого является как раз "заумность" Lisp-а, которая отталкивает от него начинающих, да и не только программистов. А раз так, то какую ответственность на себя должен брать лидер проекта, который говорит своей команде -- берем Lisp и делаем проект на нем? Особенно, если в этой команде кроме него никто Lisp-а не знает. Сейчас приходится много думать, прежде чем принимать решения о старте новых проектов на C++ -- языке, гораздо более доступном (в плане средств разработки, готовых библиотек, книг и документации). И не маловажными факторами против C++ являются его сложность и высокие требования к квалификации членов команды. Я сам сталкиваюсь с тем, что сейчас проще найти Java и C# программистов, чем C++. Поэтому начинать проект на C++ и держать в уме такой фактор риска, как сложность замены выбывающих по разным причинам участников команды, уже тяжело. А теперь попробуем заменить C++ на Lisp. Ситуация по этим параметрам ухудшается на порядок, если не больше.
Ну и еще один фактор, который лично меня смущает в этой теме. Имхо, здесь слишком часто делаются голословные утверждения о том, что Lisp лучше, Lisp понятнее, на Lisp-е требуется меньше строк и т.д. Сразу вспоминается американская пословица: "Если ты такой умный, то почему ты не миллионер"?
Если Lisp так хорош, да еще и появился бог знает когда, да еще и развивался в лучшую сторону все это время, то почему мы работаем с C/C++, Java, C#, Perl, VB? Почему, если язык так хорош, уважаемый Аноним сетует
на недостаток Open Source библиотек (в то время как для C++, Java, Perl, Python, Ruby, не в курсе про VB и C#, их просто не счесть) /можно еще раз обратиться к статистике, приведенной Олегом БачинымRe[4]: Объем синтаксиса C#, Delphi 7, Java 2, ... (48 Kb)
/? Может все-таки не все так ладно в "датском короллевстве"?
И давайте не будем вспоминать про "миллионов мух, которые не могут ошибаться". В идустрии разработки ПО этих мух действительно миллионы, но они нуждаются в инструментах, которыми они в состоянии воспользоваться. И выигрывает тот, кто такие инструменты предлагает.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Только практика показала, что языки, которые требуют серьезной смены сознания (я сталкивался с Lisp и Prolog, чуть-чуть Smalltalk), широкого применения не получают. Вероятно из-за того, что далеко не все хотят менять свое сознание. И имеют на это право.
А его (создание) автор и не просит менять... Речь идет лишь о расширении сознания. ФЛП вообще, и Lisp с Prolog'ом в частности — эдакий ЛСД для закостенелого структурно-ООП'шного сознания. Потому как грокнуть вносимые в новое поколение языков фичи иначе не получится. По ширине не пройдет