LINUX.ORG.RU
ФорумTalks

[недоумение][разочарование] LISP vs. Java - полное фиаско :(

 


0

0

Всем привет...

Хочу поблагодарить всех, кто мне помогал с задачкой (http://www.linux.org.ru/view-message.jsp?msgid=3746388), хотя результат получился, мягко говоря, плачевный :( а если честно говорить - жидко обкакались :)

Короче, я поговорил со знакомым лисп-гуру, он мне предложил код по разбору DSL и манипуляции XML... Всё с самого начала пошло наперекосяк :( Кода, кстати, реально много, десятки файлов... Сперва оно просто не запускалось: у них там Аллегро LISP, у нас SBCL, там разные конструкции... После того как подпилил, стало запускаться. Но тормозит просто по-чёрному, не знаю, может у SBCL под нашу платфору JIT какой-то недоделанный. Потом оказалось, что отрабатываются только INSERT и DELETE, апдейты не отрабатываются, гуру не дописал... шаблоны файлов не обрабатываются, zip-формат не поддерживается... тимлид посмотрел на эту гору кода со скобками, покрутил пальцем у виска, теперь они все на меня странно смотрят в коридоре :)

Что самое обидное, жабщики это сделали ещё в пятницу, безо всяких шеллов, файндов и XSLT... Распарсили DSL при помощи JavaCC, надыбали какой-то Schema Aware процессор, прикрутили Ant для паттернов файлов, зип-формат там "искаропки"... Реально за пару часов сделали, я сам смотрел в VCS, кода всего несколько килобайт, всего три класса - парсер, лексер и что-то для Ant. И, главное, работает офигенно быстро всё.

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

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

Такая вот "история неуспеха" :) Жалко, что из-за неудачного дебюта путь для LISP будет закрыт в нашу организацию... ни для каких серъёзных задач его не станут теперь пробовать, раз с такой мелочовкой не справился.

PS. Кстати на bash+find+xsltproc я тоже попробовал ради интереса - всё равно медленнее, чем на Java!!! наверно потому, что xsltproc не schema aware... я вот думаю, может на Haskell надо было попробоывать? что скажете?

>bash+find+xsltproc я тоже попробовал ради интереса - всё равно медленнее, чем на Java!!!

Ещё можно c интерпретируемым basic'ом попробовать сравнивать скорость :}

Deleted
()

>может на Haskell надо было попробоывать? что скажете?

Не надо изобретать велосипед. JAVA надо было с самого начала, и не ипать моск.

vada ★★★★★
()

стоит изучить хотя бы один инструмент, а не искать sb

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

> Не надо изобретать велосипед. JAVA надо было с самого начала, и не ипать моск.

Ну я решил по принципу "для каждой задачи - наиболее подходящий инструмент"... Тут вроде и DSL, и интеллектуальная обработка XML, я подумал что самое оно. Оказалось - не подходит :( и даже бородатый гуру не помог :)

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

> Я одного не пойму - как твой пост пролез в браузер...

Ну извини, что многабукф :) Я думаю, те, кто мне помогал, имеют право знать чем всё закончилось

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

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

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

> Ну я решил по принципу "для каждой задачи - наиболее подходящий инструмент"... Тут вроде и DSL, и интеллектуальная обработка XML, я подумал что самое оно. Оказалось - не подходит :( и даже бородатый гуру не помог :)

я таких историй могу придумать за час аж полсотни. Покажи чтоль код, который тебе гуру прислал :)

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

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

Ну, легко говорить - ты мол не знаешь лиспа, нечего на него валить теперь. Дело в том, что код-то мне писал дядька с 15-летним стажем лиспа из Бритиш Эйрвейз, я думаю там кого попало не держат :)

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

Я бы конечно рад, но у нас разработка под NDA, извините :) а код я уже коммитнул... так что мне будет секир-башка, а я ещё тут поработать хочу :)

Вы кстати программируете на лисп?

Ignatik
() автор топика

>Короче, я поговорил со знакомым лисп-гуру, он мне предложил код по разбору DSL и манипуляции XML...

Гуру все такие гуру. А ты не подумал, что проблема в реализации парсера? Кто знает, как и что там эта гура реализовала? Сам говоришь, что кода много. Ты в нем разбирался вообще? А то вот из сообщения это непонятно (залатывание дыр, чтобы запускалось, можно чаще всего и без вникания в код делать). Причем тут конкретные реализации Common Lisp и Common Lisp как язык? Я не вижу логики. Первым дело я бы блеймил библиотеку и только потом, когда убедишься, что она написана хорошо и эффективно (спроси у гуры, как в ней разобраться быстрее, и где там что), можно винить реализацию Common Lisp.

Zubok ★★★★★
()

Я как бы лиспа не знаю, но хотел прояснить.

Я правильно понял, что вы не зная толком языка, пытались его самостоятельно применить к задаче, а потом сравнили результат с работой группы людей собаку на этом съевшими на java и самой задаче?

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

> А ты не подумал, что проблема в реализации парсера?

Какого? Там валидирующий парсер DSL самописный
И ещё XML-парсер - http://common-lisp.net/project/cxml, как тут рекомендовали
Какой имеется в виду?

Разобраться пытался, пока без особого успеха... Если Вы сами разбирались в больших лисп-проектах, должны меня понять :) это ж не ПХП... как он етот парсер породил ума не приложу

В Java кстати более понятно, они там грамматику в EBNF описывают, и сразу получают парсер-лексер, а тут руками надо :(

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

> Я правильно понял, что вы не зная толком языка, пытались его самостоятельно применить к задаче, а потом сравнили результат с работой группы людей собаку на этом съевшими на java и самой задаче?

Нет не совсем.

Я сам конечно начинающий, но я привлёк в помощь классного специалиста... Тут была распространена идея, что "один опытный лиспер одной левой сделает трёх жаба-мартышек", вот, я её проверил на практике :)

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

>Ну я решил по принципу "для каждой задачи - наиболее подходящий инструмент"

Ну и?... Тема же для JAVA родная. Ну еще парсер подобрать пошустрее можно... Хотя, нагуя, спрашивается. На JAVA там действительно пара классов и пара методов вся реализация. Пока гуру на LISP скобочки топчут, эти пара классов чинят документы.

vada ★★★★★
()

Было бы интересно выполнить задачу на Scala. Думаю, результаты были бы очень неплохи.

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

>Читайте внимательнее... Я не сам писал, я привлёк специалиста со стажем

а во сколько тебе обошлось его привлечение, если не секрет?

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

>Тут была распространена идея, что "один опытный лиспер одной левой сделает трёх жаба-мартышек", вот, я её проверил на практике :)

Да это идея тех кто JAVA не осилил. :) Уже мерялись письками и в скорости работы и в скорости разработки... И, не смотря на распространненую идею, JAVA всех рвала, или не уступала польше 1-3%

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

>Я сам конечно начинающий, но я привлёк в помощь классного специалиста... Тут была распространена идея, что "один опытный лиспер одной левой сделает трёх жаба-мартышек", вот, я её проверил на практике :)

Видимо предполагалось что этим лиспером должны быть вы, а не дядя с бородой и пивным пузиком - ho-ho-ho ;)

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

>Думаю, результаты были бы очень неплохи.

А попробуй. И время потраченное на разработку потом в студию :)

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

> Пока гуру на LISP скобочки топчут, эти пара классов чинят документы.

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

Ignatik
() автор топика

Может и немного не в тему, но у меня тоже после предыдущего "обсуждения" остались сомнения по поводу липа.

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

О макросах лиспа. Опять, как для нетривиальных случаев( где и препроцессор С бы справился) создать систему типов для верификации, чтобы не тестировать/руками смотреть на развороты этого макроса? Далее если dsl делать, то как там, например, добавить оптимизации разворачивания и те же типы? Интересует хотя бы теоретический пример.

Ещё интересует фп на лиспе, в связи с многопоточностью( вроде утверждают, что для этого очень хорошо фп подходит). Но опять таки примеры с кодом.

P.S. Это не в плане требований( как некоторые, которые считают, что им все должны), но просто подобные сомнения возникли у меня при поверхностном знакомстве с лиспом. В предыдущей ветке я так и не увидел каких-либо объяснений. Да, извиняюсь, если я там немного троллил и задел кого-то.

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

Про Scala он наверное имеет в виду то, что там XML прямо в язык встроен, можно прямо писать var = <foo><bar/></foo> но не знаю поможет ли здесь это... может, там упрощённый синтаксис для манипуляции нодами

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

> Я бы конечно рад, но у нас разработка под NDA, извините :) а код я уже коммитнул... так что мне будет секир-башка, а я ещё тут поработать хочу :)

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

> Вы кстати программируете на лисп?

Как и положено в советской россии - лисп программирует меня :)

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

> ( как это сочетается с парадигмой фп?).

никак. иди дальше читай про лисп.

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

> Ну ты на лиспе то крест не ставь. Есть и его сектор задач, где равных нет.

Кодогенерация, экспертные системы, ИИ, семантик веб? Это да

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

> Да это идея тех кто JAVA не осилил. :) Уже мерялись письками и в скорости работы и в скорости разработки... И, не смотря на распространненую идею, JAVA всех рвала, или не уступала польше 1-3%

не флейма ради - откуда дровишки? С моей стороны вот www.flownet.com/gat/papers/lisp-java.pdf. Разумная критика приветсвуется.

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

В JDK 1.2 еще нормального JIT не было. Так что... старо сравнение. Очень старо.

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

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

Sun-ch
()
Ответ на: комментарий от paranonymous

"In a recent study Prechelt (1999) compared the relative performance of Java and C++ in execution time and memory usage.", сама статья за 2000 год, продолжать?

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

А я говорил.

>Не надо изобретать велосипед. JAVA надо было с самого начала, и не ипать моск.

Вот и я с самого начала говорил, что нужно воспользоваться тем инструментом, которым умеешь пользоваться.

Camel ★★★★★
()
Ответ на: комментарий от Sun-ch

> Лисп со статической типизацией называется Qi.

Это отдельный язык - отличный от CL, который мы как раз таки и обсуждаем. Хотя он транслируется в CL (идет работа над транслированием его в python), если я ничего не путаю.

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

Выборка из меня будет не слишком репрезентативна, у меня борода всего 5 миллиметров:) Да и желания нет, for fun я сейчас другой велосипед делаю на Scala.

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

>> А попробуй. И время потраченное на разработку потом в студию :)

>К сожалению, оно будет не показательно :(

Вот в этом иногда и проблема. :( JAVA не столько язык программирования, сколько платформа. Для нее столько всего наразработано, что просто пипец. Трудно не найти библиотеки, которая решает твою задачу.

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

> сама статья за 2000 год, продолжать?

Конечно, вообще-то нас интересует время разработки, а вряд ли за 10 лет с явой произошли какие-то радикальные изменения, повлиявшие на это. Вообще говоря, я хотел сбросить вот эту ссылку http://www.flownet.com/gat/papers/lisp-java.pdf - там расписана методика оценки и более подробно что, зачем, как и почему. Пожалуйста, комментировать ее.

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

Там есть всё вплоть до PM нод, что позволяет играть с документами как душе угодно. А ещё там есть parser combinator-ы.

Zenom ★★★
()

Как говорят в данном случае всякие каратисты: побеждает не школа, но мастер.

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

> > А попробуй. И время потраченное на разработку потом в студию :)

> К сожалению, оно будет не показательно :(

Как я уже замечал, даже если вы невъ...нно крутой снайпер с винтовкой штучной работы и идеально сбалансированными патронами, на дистанции 10 метров вас уделает первый же гопник с дробовиком времен гражданской войны и рубленными гвоздями вместо дроби.

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

> Как я уже замечал, даже если вы невъ...нно крутой снайпер с винтовкой штучной работы и идеально сбалансированными патронами, на дистанции 10 метров вас уделает первый же гопник с дробовиком времен гражданской войны и рубленными гвоздями вместо дроби.

Тут просто многие считают, что LISP - это не только снайперка, но и дробовик, и гранатомёт, и рейлган, и BFG-2000 в одном флаконе :))) в результате промазывают по банкам, в то время как "гопники" сносят одним выстрелом весь ряд

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

И тем не менее, хотелось бы уточнить сумму, в которую обошлась работа "гуру".

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