Lev Walkin ([info]lionet) wrote,

Языки программирования в условиях, приближенных к боевым

Кросс-пост из http://users.livejournal.com/_adept_/99574.html:

Существует классическая статья "Haskell vs. Ada vs. C++ vs. Awk vs. ... An Experiment in Software Prototyping Productivity", написанная в 1994 году. За 15 лет многое изменилось, и, думается, многим было бы интересно прочитать подобную статью про положение дел сегодня.

В связи с этим ищутся:
1) Условия подходящей задачи (критерии см. ниже)
2) Желающие реализовать ее на Haskell/C+/Ocaml/Java/Scala/C#/... с тем, чтобы ваш код был нещадно сравнен с другими и опубликован для всеобщего обозрения.


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

Q: Чем не устраивает The Great Language Shootout?
A: Тем, что там отдается предпочтение "быстрым и грязным" решениям, которые всячески "срезают углы". Во-первых, в таком стиле пишется дай бог чтобы 5% от всех программ, во-вторых, людям, не знающим язык X, строго противопоказано смотреть на решения на языке X в Language Shootout — останется превратное впечатление.

Q: Как будут сравниваться решения, чтобы определить победителя?
A: Никак, т.к. победителей не будет. Будут приведена определенная статистика по всем решениям, без выводов.

Q: Какой тогда стимул участвовать?
A: На других посмотреть, себя показать :)

Какой должна быть задача?
1) Не заточенной под конкретную ОС (т.е. "Реализовать компонент, встраеваемый в Word" или "плагин для libpam" — не катит)
2) Не заточенной под конкретный язык/фреймворк/... (т.е. "получить список сигнатур методов всех объектов указанной сборки .Net" — не катит)
3) Если глубокие знания в предметной области дают решающее преимущество — это fail (т.е. "реализовать DES-CBC" — не катит)
4) Чтобы она не была из категории "мне не нужно, чтобы плац был чистый, а нужно, чтобы вы задолбались" (т.е. "распарсить XLS-файл, не пользуясь библиотеками" — не катит)
5) Задача не должна требовать много времени на реализацию (если это будут человеко-недели - никто за нее не возьмется)

Какой должна быть реализация?
1) Чтобы ее было не стыдно показать другим. В частности, чтобы решение на языке X не заплевали бы как кривое и неидиоматичное другие программисты, знающие язык X.
2) Идеально было бы давать две реализации: первую с ориентиром на "красоту", "образцово-показательность" и легкость поддержки/развития кода (т.е. пишем как пример кода, который будет прилагаться к резюме :), а вторую — "грязную и быструю".
3) Т.к. библиотеки — это неотъемлемая часть силы и популярности языка, библиотеками "общего назначения" (контейнеры, парсинг, ...) пользоваться можно и нужно
4) Но! Решение, которое свелось к исключительно к нахождению и использованию какой-то (узкоспециальной) библиотеки никому не интересно и рассматриваться не будет.

Выбирать подходящее условие будет жюри, представляющее апологетов всех течений и направлений, в том числе — включающее тех, кто критически отзывался о материалах, уже вышедших в fprog.ru.

Если у вас есть идея подходящией задачи и вы хотите ей поделится — напишите комментарий, а?

([info]lionet: Так как исходный пост уже порядком замусорен, я оставляю комментарии открытыми здесь. Может быть, это даст какой-то более позитивный эффект. Если хотите предложить решение — добро пожаловать! Первый уровень комментариев — только по делу: предложения задач. Для того, чтобы поболтать, идите всё-таки в исходный пост.)

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    Your reply will be screened

    Your IP address will be recorded 

  • 28 comments

[info]kika

November 6 2009, 01:11:34 UTC 2 years ago

TCP a-la RFC793, то есть без блекджека и шлюх модных наворотов.

[info]lionet

November 6 2009, 01:15:35 UTC 2 years ago

А, да. Я предоставлю версию на Visual Basic тогда.

[info]il_agent

November 6 2009, 05:34:38 UTC 2 years ago

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

Тема уже затевалась вот тут:
http://www.progz.ru/forum/index.php?s=&showtopic=189&view=findpost&p=184330
Но так до ума и не была доведена.

[info]ln_123

November 6 2009, 06:52:52 UTC 2 years ago

Может сделать реализацию PDP и PEP из стандарта XACML?
Из плюсов вижу следующее:
1) есть стандарт который нужно реализовать так что разночтения в задаче вряд ли возможны.
2) Дело довольно полезное т.к. иметь библиотеку реализующую стандарт на политики безопасности на своем любимом языке это не плохо.
3) Задача по времени довольно подъемная
4) С другой стороны стандарт довольно сложный и будет где развернуться.

[info]levgem

November 6 2009, 08:41:36 UTC 2 years ago

У меня есть такое предложение (из наболевших): сервер, который стримит лежащее на диске либо по http mp4-видео в какой-нибудь rtp стриминговый протокол. Должен работать для кучи пользователей.

Обоснование такое: работы немного, не надоест участникам. Хорошо показываются проблемы и плюсы тех или иных языков, связанные с работой в сети. Плюс оно практичное и очень легко тестируется (VLC + файлик с ютуба).

У тех, кто выберет C будет фора засчет наличия библиотек для разбора mp4.

[info]tzirechnoy

November 6 2009, 12:05:08 UTC 2 years ago

Чисто любопытствую: а почему их наболевшых?

[info]levgem

November 6 2009, 12:14:06 UTC 2 years ago

Потому что этим на работе занимаюсь.

[info]tzirechnoy

November 6 2009, 13:34:36 UTC 2 years ago

Так из наболевшых-то почему? Чем vlc не устраивает?

[info]levgem

2 years ago

[info]tzirechnoy

2 years ago

[info]levgem

2 years ago

[info]virtan

November 6 2009, 08:42:22 UTC 2 years ago

1. HTTP сервер, сообщающий состояние машины на которой запущен.
(сеть+парсинг+расширяемость+многопользовательность(многопоточность либо многотредовость)+приведение типов+понятная задача)

2. Прочитать ролл из каких-нибудь простых структур из файла.
Сделать пейджинг, сортировку по разным полям, фильтрацию.
(файловые операции+парсинг+сортировки+приведение типов)
;)

[info]lucifer4ik

November 7 2009, 13:09:52 UTC 2 years ago

2. Что в данном случае противопоставить например spring + struts на Java на том же C? Про библиотеки в задаче сказано было...

[info]virtan

November 8 2009, 19:06:58 UTC 2 years ago

" Т.к. библиотеки — это неотъемлемая часть силы и популярности языка, библиотеками "общего назначения" (контейнеры, парсинг, ...) пользоваться можно и нужно"

На C: bison+flex для парсинга, какие-нибудь готовые контейнеры для сортировок.

[info]jek_hor

November 6 2009, 08:57:45 UTC 2 years ago

Недавно вставшая на гис-лабе (gis-lab.ru) проблема: дан OSM-файл (OpenStreetMap XML) с данными по России. Даны полигоны обрезки в географических координатах. Нужно нарезать Россию по регионам, да так, чтобы пути, лежащие на границе, не резались пополам, а входили в дамп целиком. Существующие для этой цели инструменты не справляются за вменяемое время.

[info]levgem

November 6 2009, 12:14:34 UTC 2 years ago

прекрасная задача!

[info]levgem

November 6 2009, 12:17:09 UTC 2 years ago

на пути её решения захочется использовать наивные и красивые алгоритмы с экспоненциальной сложностью =)

[info]tzirechnoy

November 6 2009, 13:38:55 UTC 2 years ago

Десктопный picture viewer. Основные требования: быстрое открытие, масштабирование на экране, работа с относительно большыми картинками, поворот на кратные 90 градусам углы, печать, удобный или настраиваемый интэрфейс.

[info]zamotivator

November 6 2009, 20:14:42 UTC 2 years ago

Влияние Витуса чувствуется невооруженным глазом =)))

[info]tzirechnoy

November 7 2009, 10:17:42 UTC 2 years ago

А что — влияние? Скан 600dpi A4 не все открывают. Постоянно думаешь, то-ли gimp открывать (который тормоз), то ли к винде с ACDSee идти.

[info]ysae

November 7 2009, 19:37:50 UTC 2 years ago

gqview вроде бы вполне сносно работал.

[info]thedeemon

November 6 2009, 18:22:56 UTC 2 years ago

А мне нравится задачка из старого сравнения:
http://norvig.com/java-lisp.html
Там уже есть кое-какая статистика, но она устарела, и некоторых интересных языков нет.
Задачка не привязана к системе/платформе, требует 2-10 часов на реализацию и 20-500 строк кода.

Сам на днях собирался с аналогичными целями предложить ее нынешней публике.

[info]alexander_mikh

November 8 2009, 19:39:49 UTC 2 years ago

Релизовать Wavelet packet transform

Релизовать Wavelet packet transform lifting scheme. и дать 1 GB bitmap на обработку.

[info]nealar

November 9 2009, 06:22:38 UTC 2 years ago

Re: Релизовать Wavelet packet transform

Вэйвлет - это, как ни крути, числодробление. Рулит си или асм или кодогенерация.

[info]alexander_mikh

November 9 2009, 09:49:45 UTC 2 years ago

Re: Релизовать Wavelet packet transform

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

Anonymous

November 13 2009, 04:50:00 UTC 2 years ago

ЛОР-контест?

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

Пойдет?

[info]eugine_kosenko

November 13 2009, 05:21:30 UTC 2 years ago

ЛОР-контест?

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

[info]_slw

November 23 2009, 13:39:20 UTC 2 years ago

http 1.1 сервер
насчет блэкджека и шлюх (cgi, встроенное скриптование, виртуальные сервера) вопос обсуждаемый

основное -- сервер должен крутиться долго, что бы нивелировать разницу от GC когда ему не надо освобождать память и free, которая вызывается даже если в данном случае можно свалить подчистку выделенной памяти на ОС
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…