Какой язык лучше подходит для программирования общего назначения, F # или Haskell?[закрыто]

StackOverflow https://stackoverflow.com/questions/142878

  •  02-07-2019
  •  | 
  •  

Вопрос

В настоящее время я изучаю Haskell, какой язык (F # или Haskell) вы предпочитаете для программирования приложений общего назначения?

Какой язык, по вашему мнению, более сильный?

Это было полезно?

Решение

Я бы выбрал Хаскелла. Хакагедб это отличная коллекция библиотек, которые написаны специально для данного языка.В случае F # вам пришлось бы использовать в основном библиотеки, которые не написаны с учетом функционального языка, поэтому они не будут такими "элегантными" в использовании.Но, конечно, это во многом зависит от объема функционального программирования, которым вы хотите заниматься, и ограничений проекта, для которого вы хотите его использовать.Даже "общего назначения" не означает, что его следует использовать во всех случаях ;)

Другие советы

Я предпочитаю Haskell.

Утверждение Джона Харропа о том, что у Haskell плохие инструменты, заставило меня немного задуматься, поскольку я с этим совершенно не согласен.Я думаю, что проблема здесь отчасти связана со стилем разработки.Давайте сравним несколько характеристик F # и GHC, связанных с инструментами:

  1. F # обладает обширными визуальными инструментами, а GHC их не имеет.Для меня отсутствие визуальных инструментов не имеет значения:Я работаю с vi, командной строкой Unix и сильно настраиваемой системой сборки.Отсутствие поддержки моего стиля разработки в F # было бы для меня очень тяжелым испытанием.С другой стороны, если вы предпочитаете работать в среде типа Visual Studio, у вас было бы совершенно противоположное мнение.

  2. Насколько я понимаю, в F # и / или .NET есть очень хороший отладчик.GHC имеет только ограниченный отладчик, который запускается в интерпретаторе.Я годами не пользовался отладчиком (во многом это связано с использованием разработки, основанной на тестировании), и когда вы работаете в основном с чистыми функциями, как в Haskell, отладчик гораздо менее необходим.Так что для меня отсутствие этого инструмента совершенно не имеет значения.

  3. Библиотеки.В основном это зависит от того, какие библиотеки вам нужны, не так ли?Множество хороших библиотек не поможет, если той, которая вам нужна, там нет, а наличие множества плохо разработанных библиотек может оказаться не столь полезным.В Haskell, конечно, меньше библиотек, чем в .NET, но у него есть разумный выбор, и качество дизайна API во многих из них очень, очень высокое.

Я не знаю, на что похож интерфейс F # к библиотекам машинного кода, но GHC отлично подходит для этого, благодаря фантастическому FFI.Я написал сервер Windows DDE полностью на Haskell (да — ни строчки на C, даже для обработки обратных вызовов из библиотек Windows C), и это заняло значительно меньше времени и было значительно проще, чем делать то же самое на C или C ++.Если вам нужны интерфейсы с машинным кодом, Haskell, безусловно, лучший выбор.

"Непредсказуемость" использования памяти и производительности - хороший момент.Haskell кажется мне на самом деле достаточно предсказуемым, если вы знаете, что делаете, но вы не будете знать, что делаете, когда начнете, и вам придется многому научиться.F # гораздо больше похож на другие языки .NET.

В целом, этот вопрос, вероятно, больше связан с платформой, чем с языком:огромная разница между "миром Unixy" GHC, генерирующим машинный код, и "миром Windowsy" F #, работающим на .NET, не является языковой проблемой.

Я бы сказал, F #, поскольку вы можете получить доступ ко всему .Net framework.Однако это скорее библиотечная вещь.

Это зависит от того, что вы хотите сделать:

Haskell - более чисто функциональный язык из этих двух.

F # - это скорее гибридный язык, и он не является чисто функциональным, но имеет отличный набор библиотек базовых классов, которые вы можете использовать для простой работы с современными программами в Windows или Mono.

Я думаю, что Джон Харроп по какой-то причине серьезно недоволен Haskell.Это просто неправда, что он не используется за пределами академических кругов, на самом деле он широко используется в инвестиционном банкинге и гораздо больше, чем F # и OCaml, и на то есть веские причины.Если вы хотите получить работу по функциональному программированию, то изучайте Haskell, поскольку для программистов на Haskell рекламируется гораздо больше должностей, чем на F # или OCaml.Я уверен, что F # будет набирать популярность, поскольку за ним стоит Microsoft, и он начинает с нуля, но на данный момент у Haskell явное лидерство.

Вероятно, 2-3 года назад OCaml лидировал в области практических функциональных языков, но с тех пор Haskell обогнал его благодаря большему количеству библиотек, большему количеству функций, лучшей производительности и более широкому коммерческому использованию.

Возможно, вы сочтете эту запись в блоге Нила Митчелла информативной:

F # С точки зрения Haskell

Комментарии также проливают свет на ситуацию.

Я бы сказал, это зависит от того, почему вы этому учитесь.Если вы делаете это ради ознакомления с чистым функциональным языком, выбирайте Haskell.Но если вы определенно собираетесь использовать этот язык не только для этого, F # is может быть лучшим выбором.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top