LINUX.ORG.RU

Покритикуйте программу на ocaml.


0

0

По всем вопросам: алгоритмически, синтаксически, "устойчивые выражения" языка, indentation в конце концов 8)

Архив и pretty-printed версию выложил на http://zulu.in.ua

Суть программы -- демон грейлистинга для почтового сервера. слушает сокет, на сокет получает запрос, отвечает grey или white. После часа простоя в grey просящий перемещается в white на N часов. если за это время обратился, то становится white надолго; если нет, то выбрасывается .

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

Это проблема с генерацией html. Исправлено.

Zulu ★★☆☆
() автор топика

Я вот чего не пойму. Зачем такое делать на окамле? Стиль ведь - Сишный, обычное структурное программирование. То есть, если захотеть, всё это чуть ли не построчно можно переписать на С/С++. И это даже было бы лучше: надеюсь никто не будет спорить, что С/С++ куда более читабельнее, нежели нагромождение всяких закорючек окамла?

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

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

нет.

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

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

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

> надеюсь никто не будет спорить, что С/С++ куда более читабельнее, нежели нагромождение всяких закорючек окамла?

Бредишь. OCaml гораздо понятее и читабельнее, чем кривенький ущербный Си.

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

> И закорючек там особых нет.

Ну как знаешь. Тебе виднее, конечно. Но так... с первого взгляда - обычные условные переходы + функции + i/o. В чем "фишка"?

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

>Да, действительно, очень по сишному написано. У меня тот же код был бы раза в 3 короче и читабельнее.

А ради чего я запостил? Фрагмент, который решен идеологически неверно, и правильный вариант. Этого и прошу 8)

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

фишка?
Скорость разработки и сбоеустойчивость на уровне скриптового языка плюс рантайм по эффективаности на уровне C.
Взялся писать после того, как реализация от третьих лиц на питоне уперлась в производительность 2x2ГГц оптерона (да, у меня много почты...) Текущая эффективней и по памяти, помимо проца.

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

> Но так... с первого взгляда - обычные условные переходы + функции + i/o. В чем "фишка"?

В pattern matching-е и удобных ексёпшынах.

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

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

так Зулу и просит народ \m/ народ показать пример ;)

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

На Хаскелле оно бы дико тормозило.

OCaml тут адекватный выбор. Но, возможно, Erlang был бы лучше, он под такие задачи нехило заточен.

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

Почему тормозило бы? Мне тут вещали, что решения весьма скоростные получаются за счет правильной работы компилятора (ghc). Или я чего-то упустил?

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

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

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

Нет. Рельный размер хеша, по которому проводится поиск -- порядка 500 000 записей. Так что поиск и замена в нем должны быть быстрыми.

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

> Ну как знаешь. Тебе виднее, конечно. Но так... с первого взгляда - обычные условные переходы + функции + i/o. В чем "фишка"?

+ 1. Такую программу можно было бы и на Си/Cи++ накатать юез особых проблем. Видно, что смысла использовать окамл не было.

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

> Ну как знаешь. Тебе виднее, конечно. Но так... с первого взгляда - обычные условные переходы + функции + i/o. В чем "фишка"?

+ 1. Такую программу можно было бы и на Си/Cи++ накатать юез особых проблем. Видно, что смысла использовать окамл не было.

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

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

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