Будет ли Хаскелл хорошим выбором для моей задачи? - PullRequest
12 голосов
/ 11 февраля 2011

Я начинаю новый проект и не знаю, какой язык использовать.

Мои требования «должны иметь»:

  1. Уметь работать в Windows / LinuxMacOs изначально (собственный исполняемый файл) - пользователь должен иметь возможность просто запустить .exe (например, в Windows) и увидеть результаты.
  2. Нет времени выполнения / интерпретаторов (без JVM, CLR и т. Д.) - для запуска приложения должно быть достаточно одной загрузки файла.
  3. Полная поддержка Unicode.
  4. Уметь управлять потоками ОС (создавать их, параллельно выполнять несколько задач на многоядерных процессорах и т. Д.)
  5. Быть достаточно быстрым (производительность на уровне Python и выше).
  6. Чтобы иметь какую-то стандартную библиотеку, которая выполняет низкоуровневые, повседневные задачи.
  7. Не очень нишевая и за этим стоит сообщество, чтобы иметь возможность задавать вопросы.

Мои требования «приятно иметь»:

  1. Язык должен быть функциональным.
  2. Он должен иметь хорошие возможности для работы со строками (не обязательно регулярное выражение).
  3. Не очень трудно учиться.

Я сейчас думаю о Haskell, но также имею в виду и OCaml.

Обновление : Это приложение предназначено для простого анализа и манипулирования языком.

Пожалуйста, советуйте, если мой выбор верен.

Ответы [ 4 ]

14 голосов
/ 11 февраля 2011

Haskell:

1: он работает в Linux, Windows и OS X, во многих случаях без изменений в исходном коде.

2: сгенерированы собственные двоичные файлы.Нет ВМ.

3: Полная поддержка Unicode.Поддерживаются все варианты UTF.

4: Полная поддержка потоков, плюс, если вы хотите только распараллеливание, вы можете использовать «par» со 100% гарантией того, что это влияет только на затраченное время, а не на семантику.

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

6: Стандартная библиотека включена, и«Hackage» имеет гораздо больше пакетов, включая ряд библиотек синтаксических анализаторов.

7: дружественное сообщество по IRC (#haskell) и здесь.

Редактировать: По пунктам «приятно иметь»:

1: Haskell - бескомпромиссно чистый функциональный язык.

2: Он обычно хорошо манипулирует строками, с регулярными выражениями, если они вам нужны.Как кто-то сказал в последующем комментарии, остерегайтесь эффективности встроенного типа «String» (он представляет собой строку в виде связанного списка символов), но библиотеки ByteString и Text решат эту проблему за вас.

3: трудно ли учиться?Это далеко не так сложно, как в C ++, и, вероятно, намного проще, чем в Java или, может быть, в Python.Но его чисто функциональный характер означает, что он сильно отличается от императивных языков.Проблема заключается не столько в изучении Хаскеля, сколько в том, чтобы отучиться от обязательных моделей мышления.

4 голосов
/ 11 февраля 2011

Хаскелл звучит так, как будто идеально подходит для всех.GHC производит нативный код на OS X, Linux и Windows просто отлично, и в целом имеет производительность, которая намного лучше, чем Python (во многих отношениях, не для всех).

Единственный странный запрос - потребность в потоках ОС,Программы, созданные GHC, используют легкие потоки, которые работают намного лучше, чем потоки ОС, и с ними гораздо проще работать, чем с pthreads.

Haskell также отлично подходит для синтаксического анализа языков, используя такие библиотеки, как Parsec.

Мы также достаточно хорошо известны за то, насколько сообщество и сообщество полезны для Хаскелла.

2 голосов
/ 11 февраля 2011

Третий приятный момент: взгляните на Real World Haskell , это бесплатное и очень хорошее введение, включая введение во все нужные вам пункты.(Например, параллельные вычисления, разбор строк и т. Д.).

1 голос
/ 11 февраля 2011

Может быть, «приятно иметь»:

  1. да чисто функциональная и ленивая оценка.
  2. да (как сказано выше).
  3. зависит от тебя, я думаю, что это трудно учиться, но дает вам большие преимущества.
...