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

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

Как вы думаете, какой язык сильнее?

F# принадлежит Microsoft, следовательно, Haskell.

L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳ 18.12.2010 08:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
1
2 130
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

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

Но это с другой платформой, он не заслуживает голоса против.

Rayne 27.09.2008 09:29

F# - это язык интерфейса командной строки; следовательно, это та же платформа.

TraumaPony 27.09.2008 09:30

спасибо ребята, исправленное описание.

Brian R. Bondy 03.11.2008 16:09

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

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

Ответ принят как подходящий

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

Вы можете найти это сообщение в блоге Нила Митчелла информативным:

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

Комментарии тоже поучительны.

Я предпочитаю 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, не является проблемой языка.

Все по справедливости. Я думаю, что Windows Presentation Foundation - очевидный контрпример в контексте библиотек: он гораздо лучше разработан и более мощный, чем все, что доступно в Haskell (например, Qt). Я также посоветовал бы техническим пользователям серьезно подумать о смене платформы только на использование F#. Я предпочитаю Linux Windows, но .NET сейчас далеко впереди всего, что доступно в Linux или Mac OS X ...

J D 31.07.2009 20:08

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

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

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