LINUX.ORG.RU

ЛОР-конкурс: LISP vs. Everything


0

0

Дорогие друзья!

За несколько лет идея превосходства LISP (и функциональных языков вообще) над императивными языками стала настоящим феноменом ЛОРа.

Каждый раз эта тема, возникнув в рамках обсуждения какой-либо новости, приводит к жарким, невероятно интересным дискуссиям. С обеих сторон звучат вполне убедительные и красноречивые доводы. Рассматривается как технологическое, так и экономическое превосходство языков и технологий. В контексте одной из недавних новостей ("50 лет языку LISP", http://www.linux.org.ru/view-message.jsp?msgid=3184185) прозвучала идея наконец поставить точку в историческом противостоянии при помощи практического эксперимента, а именно - конкурса разработчиков.

Формат конкурса представляется таким. Выдвигаются три команды (например, LISP Nerds, Java Monkeys и C/C++ Jerks), каждая из которых должна быть представлена двумя составами. Размер состава - два-три человека. Командам предлагаются задачи по следующим восьми категориям:

1. Системное программирование;
2. Бизнес-приложения;
3. Веб-приложения;
4. Анализ текстов, компиляция и интерпретация;
5. Искусственный интеллект;
6. HPC-вычисления;
7. Компьютерные игры;
8. Desktop-приложения.

Список категорий отражает реальные задачи современного мира информационных технологий; детализация списка и подробные ТЗ последуют, обсуждение списка приветствуется.
Задачи выполняется первыми составами каждой команды. Затем проводится изменение ТЗ (ощутимое, но не кардинальное), и изменения реализуются вторым составом при условии неучастия второго состава в первом раунде. Т.е. цель второго раунда - показать, насколько возможно сопровождение программного продукта при смене команды разработчиков.
Результаты обоих раундов каждого этапа оцениваются жюри и сообществом по нескольким критериям: время, затраченное на решение; качество кода; качество продукта и соответствие требованиям; управляемость проектом, лёгкость (или сложность) поддержки и рефакторинга.
Сразу стоит отметить, что задачи будут представлять собой реальные (но сильно упрощённые) примеры задач из жизни. Упрощённые - потому что надо отдавать себе отчёт в том, что участники, скорее всего, будут весьма занятыми людьми, и их время надо уважать.

Хочется понять, вызывает ли эта идея интерес ЛОРовцев как таковой. Заинтересованным в участии (и в организации) буду благодарен за их мнения по поводу затеи. Скорее всего, это будет классический проект "Just for fun", хотя идеи насчёт организации фонда денежного приза (за счёт спонсоров, например) приветствуются. С организационной точки зрения стоит отметить необходимость площадок для развёртывания и тестирования; понадобятся также репозитории исходных текстов (SVN, GIT).

Приглашаю делиться идеями насчёт формулировки задач. Черновые формулировки уже составлены, но очень хотелось бы, чтобы от конкурса была реальная польза для сообщества, т.е. можно было брать в качестве задач bounties или просто нерешённые вопросы значимых opensource-проектов.

Отдельное спасибо зарегистрированным коллегам за освещение проекта в разделе форума Talks.

anonymous

команда лисперов - это фантастика >.> системное программирование на ява - туда же

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

>команда лисперов - это фантастика

По утверждению представителей лагеря LISP, "Лисп давно в энтерпрайзе" (при этом обычно добавляют: "только вам, простым смертным, это недоступно"). Вы можете себе представить разработку и поддержку больших корпоративных систем кустарём-одиночкой? пускай даже и гением? Я - нет. Энтерпрайз же, я полагаю, от такой ситуации бежит, как от огня. Никакой вменяемый руководитель не допустит незаменимого слабого звена, не допустит того, чтобы судьба предприятия зависела от какой-то одной личности. Но давайте всё же перенаправим этот вопрос представителям лагеря LISP. Вопрос звучит так: "Возможна ли успешная работа над LISP-проектами силами большой команды? Если нет, то каким образом (по вашему утверждению) LISP снискал признание в области enterprise?"

>системное программирование на ява


Заметьте, к участию приглашаются и программисты на С/C++. Кстати, рекомендую ознакомиться с проектами OpenFire и ApacheDS - это хорошие примеры системного программирования на Java.

anonymous
()

Это где такие специалисты водятся, которые

а) одинаково адекватны в каждой из 8 областей;

б) используют один ЯП для всех этих областей.

Ы?

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

>одинаково адекватны в каждой из 8 областей

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

>используют один ЯП для всех этих областей.


Апологеты LISP уверяют, что LISP превосходит остальные языки во всех этих областях.

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

> Апологеты LISP уверяют, что LISP превосходит остальные языки во всех этих областях.

Мне бы никогда не пришло в голову использовать ни один из упомянутых в топике языков для пунктов 4 и 8.

naryl ★★★★★
()

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

// wbr

klalafuda ★☆☆
()

1. При чем здесь функциональщина? Лисперы делают упор на широкие возможности метапрограммирования.

2. Почему так убог список языков? Нету D, Forth, OCaml, Haskell, Scala, Python, Perl и прочих православных вещей.

3. Где же, наконец, tailgunner?

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

> Почему так убог список языков? Нету D, Forth, OCaml, Haskell, Scala, Python, Perl

+1. Ещё можно добавить tex ;) Только кто возьмётся?

Готов поучавствовать за D и/или tcl.

naryl ★★★★★
()

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

>понадобятся также репозитории исходных текстов (SVN, GIT).

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

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

Re^2: ЛОР-конкурс: LISP vs. Everything

>> Почему так убог список языков? Нету D, Forth, OCaml, Haskell, Scala, Python, Perl
> +1. Ещё можно добавить tex ;) Только кто возьмётся?


Тогда уж ещё и XSLT до кучи, а то у нас уж больно много любителей программировать на xml-е развелось :)

gaa ★★
()

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

gaa ★★
()

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

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

gaa ★★
()

Ну если LISP vs. Everything, то и условия должны быть соответствующими: две команды, вторая может использовать всё, что угодно, кроме LISP.

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

>> 1. Системное программирование;

>> 4. Анализ текстов, компиляция и интерпретация;

> 1, 4 без сравнения с perl. Какой-то неадекват получается

С каких это пор перл начал рулить в системном программировании и компиляции? Может назовете хоть один компилятор, написанный на перле?

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

>две команды, вторая может использовать всё, что угодно, кроме LISP

Террорист! ЛОРовцы передушат друг друга на этапе выбора языка.

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

> Готов поучаствовать, если команда по Haskell'ю соберется.

Готов поучаствовать в той же команде.

pierre
()

Каков минимальный размер команды? Боюсь даже четырёх D-программеров на ЛОРе не найти.

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

два-три судя по комментам найдётся
Вообще на D было бы интересно посмотреть/поучаствовать -- если уж C++ и Java есть в списке, D сам Брайт велел. Пункт 6 на D пожалуй под вопросом, но если уж на С/С++ есть тот же MPI/OpenMP, обёртками его спортировать в D можно.
Заодно это бы практически показало его применимость по сравнению с С/С++. Пункт 2 тоже у D под вопросом, впрочем, как и у С++ по сравнению с Java, но тоже вполне реально, дело за конкретным ТЗ.

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

>> Апологеты LISP уверяют, что LISP превосходит остальные языки во всех этих областях.

>Мне бы никогда не пришло в голову использовать ни один из упомянутых в топике языков для пунктов 4 и 8.


4, интерпретация и компиляция на Java -- есть например, ANTLR, SableCC, и ещё вагон и маленькая тележка. На D -- есть SableCC-d, Dparser, GOLDparser (который примерно как Ragel, вообще генерирует конечные автоматы -- поэтому у него есть с десяток бекендов на разных языках, новый прикручивается шаблонами за 5 минут), навороченный language machine, D-to-D и т.п.

8 на яве -- это да, интересное чудо должно быть. Одно энтерпрайз-приложение шло с инсталлятором JBoss/firebird/само приложение, один такой огромный jar на 528 мб. Впрочем, в варианте gnome-java оно довольно симпатично (кстати, раз gnome/gtk, напрашивается Vala и Mono).

Список языков надо разумно ограничить, чтобы набрался кворум апологетов этого языка. Понятно, что сходу можно придумать десяток самых разных вариантов, но нужно практически отобрать: есть команды на этом языке -- он участвует, не набирается команда -- этот язык идёт лесом.

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

> Пункт 6 на D

кстати, видел реализацию GLSL шейдеров на D, там и до CUDA/OpenCL недалеко

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

Во-первых, я не утверждал что этого никто не делает, во-вторых, под упомянутыми в топике я имел ввиду первый пост, т.е. Lisp, Java, C/C++ (да простят меня авторы gcc)

И ИМХО в пункт 4 должен входить только фронтэнд компилятора.

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

> Где же, наконец, tailgunner?

Он пытается представить системное программирование на Лиспе.

Идея конкурса какая-то странная - писать драйвер на Лиспе? O_o Писать экспертную систему на Си? o_O

Кстати, LOR contest объявлен уже года два назад в эпическом треде "Фраза о Лиспе".

tailgunner ★★★★★
()

Со списком категорий можно согласиться, но, думаю, основная сложность будет в составлении ТЗ. Готов приступить к обсуждению его содержания. Считаю что LISP vs. Everything стоит ограничить до LISP vs С++/Java, так как для каждой из категий можно найти специализированый язык программирования, который покажет лучший результат, чем данная тройка. Не против поучавствовать по 1, 6 и 8 за С++.

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

> Не против поучавствовать по 1, 6 и 8 за С++.

тогда дело за малым - найти дурака, который был бы не против сделать то-же самое на Lisp.

// wbr

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

> Считаю что LISP vs. Everything стоит ограничить до LISP vs С++/Java, так как для каждой из категий можно найти специализированый язык программирования, который покажет лучший результат, чем данная тройка.

Честно говоря, не вижу никакой связи между причиной и выводом.

Тогда уж ограничить до неспециализированных языков или языков, на которых есть возможность реализовать все 8 заданий. (эх... tex отпадает %)

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

> Тогда уж ограничить до неспециализированных языков или языков, на которых есть возможность реализовать все 8 заданий. (эх... tex отпадает %)

почему отпадает? отнюдь. безумству храбрых поём мы песню. welcome with tex.

// wbr

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

> 8 на яве -- это да, интересное чудо должно быть.

Уже год как пишу 8 на яве. Сегодня вспоминал маму Гослинга всего 3 раза. Рекорд. (Пришлось "изобретать" линейный поиск. В jdk есть только бинарный)

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

in two dimensions чёта просто. Давайте лучше 4D замутим.

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

По несортированным массивам. Конечно можно было преобразовать к списку, у которого уже есть indexOf и lastIndexOf... хватит оффтопить.

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

> Он пытается представить системное программирование на Лиспе.

Сходи в музей, посмотри на Symbolics.

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

> посмотрел. не впечатлило.

Ну, твоё мнение особого интереса не представляет, ты ж не специалист, чтоб адекватное мнение иметь. Важно другое - это именно что системное программирование. И именно на Лиспе.

А чтобы оно впечатлило, надо сравнивать с другими системами того времени (85й год). Все другие отставали лет на десять в развитии. Ну да откуда тебе это знать?

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

> А чтобы оно впечатлило, надо сравнивать с другими системами того времени (85й год). Все другие отставали лет на десять в развитии. Ну да откуда тебе это знать?

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

// wbr

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

>> Может тогда что-нибудь одно реализовывать? Например игры Жизнь?

Может быть начнём составлять более-менее чёткое ТЗ?

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

Мне это видится как-то так...

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

>> Он пытается представить системное программирование на Лиспе.

> Сходи в музей, посмотри на Symbolics.

Да-да, Genera и Movitz (еще что-нибудь есть?). Об ОС для Symbolics я читал почти 20 лет назад в книге финнов %) Но одна работала на Лисп-машине (и ее писали упертые Лисперы), вторая стала зомби еще до рождения. А мы сейчас говорим о гипотетическом соревновании в текущих условиях.

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

> Может быть начнём составлять более-менее чёткое ТЗ?

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

http://www.linux.org.ru/wiki/en/LOR-contest

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

> Сходи в музей, посмотри на Symbolics.

В музей не обязательно, есть эмулятор Genera

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