Я провел последние 18 месяцев, получив контроль над функциональным программированием, начиная с изучения OCaml и уже несколько недель Haskell. Теперь я хочу сделать следующий шаг и реализовать какое-то реальное приложение: простой редактор ландшафта в реальном времени. Я написал многочисленные механизмы рендеринга в реальном времени, поэтому это знакомая тема. И используемые рекурсивные алгоритмы и структуры данных кажутся очень подходящими для функциональной реализации.Что действительно более показательно? Haskell или OCaml
Учитывая, что это приложение в реальном времени, я, естественно, ищу лучшую производительность, которую я могу получить. Теперь некоторые (IMHO весьма раздражающие) сторонники OCaml довольно часто суют против Haskell медленным по сравнению с OCaml или F #. Но в соответствии с The Computer Language Benchmarks Game Хаскелл часто бьет OCaml, если только довольно небольшими фракциями - остается проблема, что в этом тесте взяты только очень конкретные образцы.
Правильная вещь, конечно же, будет реализовывать программу на обоих языках и затем сравнивать, но я просто не хочу делать двойную работу.
Но, может быть, другие люди делали сопоставимые приложения в OCaml и Haskell и давали некоторые цифры?
@Trufa, я бы посмел сказать, что принцип DRY применяется при меньших «деталях», чем целое приложение; это будет иметь большее значение для метода или уровня класса. Я согласен с OP, что вы можете напрямую сравнивать только два языка и платформы, когда они по сути делают то же самое, но, конечно, это довольно экстремальный способ узнать и не очень практичен в большинстве случаев. – stakx 2010-11-29 21:18:03
@Trufa: Написание двух эквивалентных программ для сравнения их характеристик производительности не имеет ничего общего с принципом DRY. DRY имеет один канонический источник для части информации, не так много независимых источников. В этом случае ни одна из программ сама по себе не содержит необходимой информации, поэтому DRY будет только вступать в игру, если вы уже написали сравнение и рассматривали ее снова по какой-то загадочной причине. Два - это минимальное количество программ, необходимых для сравнения, поэтому я не вижу, что это может быть «простой неэффективностью» по сравнению с. – Chuck 2010-11-29 21:19:52
@stakx, хорошо, что вы на самом деле правы (удалил мой первый комментарий, чтобы избежать путаницы), Может быть, он применит, мне следовало бы не повторять себя, и нет, чтобы не повторить сам принцип :) Я не знаю, но если не это очень маленькая часть программного обеспечения, для меня нет смысла строить ее дважды, просто хотел указать на это. – Trufa 2010-11-29 21:23:05