Будет ли Haskell хорошим выбором для моей задачи?
Я начинаю новый проект и не знаю, какой язык использовать.
Мои требования должны быть:
- Возможность запускать на Windows/LinuxMacOs изначально (собственный исполняемый файл) - пользователь должен иметь возможность запускать .exe(например, в Windows) и видеть результаты.
- Отсутствуют исполняемые файлы/интерпретаторы (без JVM, CLR и т.д.) - для загрузки приложения должно быть достаточно одной загрузки файла.
- Полная поддержка Unicode.
- Уметь управлять потоками ОС (создавать их, параллельно запускать несколько задач на многоядерных процессорах и т.д.).
- Быть достаточно быстрым (производительность уровня Python и лучше).
- Чтобы иметь какую-то стандартную библиотеку, которая выполняет низкоуровневые, мирские задачи.
- Не очень нишу и у нее есть сообщество, чтобы иметь возможность задавать вопросы.
Мои "хорошие" требования:
- Язык должен быть функциональным.
- Он должен иметь хорошие возможности манипуляции строками (не обязательно регулярное выражение).
- Не очень трудно учиться.
Теперь я думаю о Haskell, но также помню OCaml.
Обновление:
Это приложение предназначено для простой утилиты для анализа и манипуляции языком.
Пожалуйста, совет, если мой выбор правильный.
Ответы
Ответ 1
Haskell:
1: он работает на Linux, Windows и OS X, во многих случаях без изменений исходного кода.
2: Созданы исходные двоичные файлы. Нет виртуальной машины.
3: Полная поддержка Unicode. Поддерживаются все варианты UTF.
4: Полная поддержка потоковой передачи, плюс, если вам нужна только параллелизация, вы можете использовать "пар" со 100% гарантией того, что она влияет только на время, а не на семантику.
5: Как можно быстрее, хотя некоторые настройки могут потребоваться, требуемые навыки в настоящее время довольно неясны, и, по-видимому, незначительные изменения могут иметь воздействие на несколько порядков.
6: включена стандартная библиотека, а в "Hackage" есть еще много пакетов, включая ряд библиотек-парсеров.
7: Дружелюбное сообщество в IRC (#haskell) и здесь.
Изменить: в пунктах "nice to have":
1: Haskell - бескомпромиссно чистый функциональный язык.
2: В целом он хорошо справляется с строкой, с регулярными выражениями, если вы хотите их. Как сказал кто-то в более позднем комментарии, остерегайтесь эффективности встроенного типа "String" (он представляет строку как связанный список символов), но библиотеки ByteString и Text будут решать это для вас.
3: Трудно ли учиться? Его нигде не так сложно, как С++, и, вероятно, намного проще, чем Java или даже, возможно, Python. Но его чистый функциональный характер означает, что он очень отличается от императивных языков. Проблема заключается не столько в обучении Хаскелла, сколько в устранении императивных мыслеобразов.
Ответ 2
Haskell звучит так, как будто он отлично подходит для счета. GHC создает собственный код на OS X, Linux и Windows просто отлично, и в целом имеет производительность, которая намного лучше, чем Python (для многих вещей, а не для всего).
Единственный странный запрос - необходимость в потоках ОС. Программы, созданные GHC, используют легкие потоки, которые работают намного лучше, чем потоки ОС, и намного легче работать с pthreads.
Haskell также отлично подходит для разбора языка, используя библиотеки, такие как Parsec.
Мы также хорошо знаем, как строка и полезно сообщество вокруг Haskell.
Ответ 3
К вашему третьему приятно иметь: взгляните на Real World Haskell, это бесплатно и очень хорошее введение, в том числе введение ко всем необходимые вам очки. (Например, параллельные вычисления, синтаксический анализ строк и т.д.).
Ответ 4
Может быть, "приятно иметь":
- да чистая функциональная и ленивая оценка.
- yes (как было сказано ранее).
- зависит от вас, мне сложно учиться,
но дает вам некоторые большие преимущества.