Подтвердить что ты не робот

Плюсы и минусы Haskell

Я изучил много языков, но теперь я хочу выбрать один, но язык, который мне больше всего понравился, был Haskell, это как интерпретируемый язык, но скомпилирован. Затем я хочу знать плюсы и минусы этого мощного языка (просто чтобы сделать правильный выбор).

4b9b3361

Ответ 1

Только пару идей, которые у меня есть в голове на данный момент.

Pros

  • Изучение haskell изменит ваш подход к программированию. (люди часто обнаруживают, что пишут код, похожий на хэскел, на другие языки, как только они узнают haskell).
  • Тип безопасности - это километры над основными языками (исключения для исключения нулевого указателя?)
  • Тип вывода означает, что вам не нужно беспокоиться о типах, если это абсолютно необходимо.
  • Он создает исполняемые файлы с высокой производительностью.
  • Parallelism почти тривиально с комбинаторами par и pseq
  • Интерактивная среда (hugs/ghci) позволяет быстро прототипировать идеи.
  • Хорошее сообщество поддержки (irc, списки рассылки и т.д.)
  • Очень выразительный и сжатый синтаксис
  • GHC активно развивается и совершенствуется, в том числе поддержка выполнения кода на графическом процессоре для этого дополнительного удара высокопроизводительных вычислений.
  • QuickCheck > модульное тестирование

против

  • Обучение haskell испортит вам все остальные языки.
  • Довольно сложно попасть в
  • Очень легко писать загадочные программы, которые никто не понимает, даже не через несколько дней.

Ответ 2

Есть минусы использования Haskell для определенных проектов, но нет никаких недостатков в learning Haskell. Это требует времени, но это того стоит. Вы будете лучшим программистом.

Ответ 3

Я также хотел бы подчеркнуть некоторые из практических особенностей Haskell, несмотря на свою простоту:

  • Получается на вашем пути именно там, где это необходимо, и в противном случае избегает вашего пути. Это одна из интересных функций, которая отвечает за почему Haskell просто работает.
  • Имеет отличную систему concurrency, которая готова для высокопроизводительных приложений.
  • Обеспечивает основу для новых, инновационных абстракций и шаблонов проектирования, среди которых мое личное любимое функциональное реактивное программирование.
  • Сложно решить даже очень сложные проблемы, потому что многие вещи, о которых вам нужно подумать на других языках (правильное упорядочение, блокировка, инициализация и т.д.), в Haskell гораздо меньше проблем.
  • Лень - это не просто оптимизация. Это позволяет решать проблемы совершенно новыми способами, которые намного проще в мозге. Нет деструктивных обновлений, но тот же результат с примерно такой же производительностью.

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

Ответ 4

Плюсы:
1) Haskell - самый современный язык программирования. Я сделал некоторые исследования, и haskell, кажется, единственный реальный современный язык программирования. Есть и другие, такие как agda и coq, но они довольно экспериментальные и не имеют возможности для программирования в реальном мире (например, поддержка библиотеки). Лучше всего инвестировать в современный язык программирования.

(примечание: я не спорю о деталях, почему haskell - это современное состояние, и почти любой другой язык программирования - нет. Это займет слишком много времени, поэтому это просто мое субъективное мнение. true для других операторов.)

(примечание: некоторые функции, о которых я упоминал позже, вероятно, специфичны для GHC, но я все еще пишу только haskell)

2) Программисты Haskell, как правило, очень умны. Качество кода библиотек исключительно велико. Кроме того, советы по stackoverflow очень хорошо написаны, а также на высоком уровне (спасибо людям, как Дон Стюарт, просто чтобы назвать их). Я думаю, что одним из лучших способов улучшить программирование является изучение кода других народов. Haskell очень хорош в этом отношении.

3) Императивное программирование на языках ООП большинства устарело. Так что обычный способ программирования с побочными эффектами. Но для декларативного программирования без побочных эффектов очень мало языков программирования. Например, Scala, F #, Ocaml и Erlang не являются свободными от побочных эффектов. (Тем не менее, есть работа, также в академической области на языках ООП, которые явно не устарели. Рассмотрим работу Алана Кей в прошлом или, например, современную академическую работу в области Smalltalk.)

4) Haskell поддерживает программирование абстрактными математическими понятиями (например, монады, функторы, комбинаторы, GADT и т.д.). Я думаю, что это повышает производительность программирования.

5) Система типа Haskell очень гибкая и поддерживает вывод типа. Это значительно облегчает возможные ошибки. Система типов проверяется во время компиляции. Системы типов помогают в качестве документации.

6) Некоторые современные концепции реализованы сначала в haskell (например, в библиотеке QuickCheck). Есть много интересных расширений.

7) Синтаксис haskell очень хорошо разработан. Нет лишних круглых скобок. Код компактный, и синтаксис для сопоставления шаблонов и понимания списка довольно хорош. Такие люди, как Кнут, выступают за грамотное программирование, а haskell/GHC поддерживает его.

8) haskell поддерживает ленивую оценку

Минусы:
1) Это очень трудно узнать, и для овладения хакеллом требуется несколько часов, месяцев. Его еще сложнее без надлежащего информатики. Такие вещи, как Monads и Functors, трудно понять, особенно без математического фона. Поэтому большинство программистов, вероятно, не обладают способностью или не будут изучать haskell. Хаскелл не "прост". В любом случае его невозможно иметь простой язык, поддерживающий все расширенные функции.

2) Параметры IDE не так хороши, как для других языков программирования. Я использую leksah как свою среду IDE, ее очень хорошую, но не сравнимую с Eclipse для разработки Java.

3) Haskell не может использоваться для разработки Android или Iphone. Напротив, Scala может использоваться для разработки Android, а также совместим с java, что является огромным преимуществом.

4) Я думаю, что в некоторых библиотеках нет поддержки людям, которые их поддерживают и совершенствуют. Я использую семантическое веб-программирование в haskell, и поддержка библиотеки может быть лучше.

Haskell не подходит для всех проектов. Если вам нужна каждая миллисекунда производительности, C/С++ по-прежнему, вероятно, лучший вариант. Так haskell подходит для многих проектов, но не для всех.

Haskell обладает многими техническими преимуществами по сравнению с другими языками программирования. Однако может быть политическая причина против использования haskell. Например, Scala лучше интегрируется с существующей инфраструктурой Java.

Ответ 5

но теперь я хочу выбрать один

...

Затем я хочу знать плюсы и минусы этого мощного языка (просто чтобы сделать правильный выбор).

Если вы позволите мне обобщить, выбор языка действительно зависит от проблемы, которую вы пытаетесь решить. Нет никакого выбора, который будет работать на все, и всегда будет какой-то язык, который будет выглядеть лучше, чем тот, который вы используете сейчас.

Продолжайте изучать новые языки, однако, поскольку опыт повысит ваши способности, чтобы знать, когда язык неверен для проекта.

Ответ 6

Что вы хотите написать, какие типы приложений? Какие проблемы вы хотите решить?

Есть некоторые типы проблем, которые Haskell будет превосходить, но, если вы пишете программу, которая требует постоянного изменения состояния, тогда Haskell является плохим выбором.

Если при моделировании проблемы он плохо подходит для функционального программирования, например, для написания программы CAD (компьютерного проектирования), ООП будет лучшим выбором, просто потому, что парадигма программирования лучше подходит для модели.

Но если вы не затронуты этими проблемами, то Haskell может быть отличным языком для использования.