В Haskell много ажиотажа, однако трудно получить информацию о том, как он используется в реальных приложениях. Какие проекты / использования Haskell наиболее популярны и почему они превосходны в решении этих проблем?
В Haskell много ажиотажа, однако трудно получить информацию о том, как он используется в реальных приложениях. Какие проекты / использования Haskell наиболее популярны и почему они превосходны в решении этих проблем?
Ответы:
Каковы некоторые общие применения для этого языка?
Быстрая разработка приложений.
Если вы хотите узнать «почему Haskell?», То вам нужно рассмотреть преимущества функциональных языков программирования (взято с https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming ):
Функциональные программы имеют тенденцию быть намного более краткими, чем их аналоги ImperativeLanguage. Часто это приводит к повышению производительности программиста
FP поощряет быстрое создание прототипов. Таким образом, я думаю, что это лучшая парадигма разработки программного обеспечения для ExtremeProgrammers ... но что я знаю?
FP является модульным в измерении функциональности, где ObjectOrientedProgramming является модульным в измерении различных компонентов.
Возможность съесть свой торт и съесть его. Представьте, что у вас сложная система обработки сообщений OO - каждый компонент может вносить изменения в состояние в зависимости от сообщения, а затем пересылать сообщение некоторым объектам, на которые он ссылается. Разве это не было бы слишком круто, чтобы иметь возможность легко откатить каждое изменение, если какой-то объект глубоко в иерархии вызовов решил, что сообщение ошибочно? Как насчет истории разных государств?
Многие домашние задачи сделаны для вас: деконструкция структур данных (PatternMatching), хранение привязок переменных (LexicalScope с замыканиями), строгая типизация (TypeInference), GarbageCollection, выделение хранилища, использовать ли в штучной упаковке (указатель на значение) или в штучной упаковке (значение напрямую ) представление...
Безопасная многопоточность! Неизменяемые структуры данных не подчиняются условиям гонки данных и, следовательно, не должны быть защищены от блокировок. Если вы всегда выделяете новые объекты, а не разрушительно манипулируете существующими, блокировка может быть скрыта в системе выделения и GarbageCollection.
Помимо этого у Haskell есть свои преимущества, такие как:
1 / 0
в качестве первого элемента списка, и он все равно будет работать, если вы используете только второй элемент.Вы можете проверить следующие ссылки:
x = 5;
гарантирует, что после его выполнения x
содержит значение 5
.
operator =
это называется. И это гарантирует, что произойдет, если вы не определитеoperator =
Я думаю, что люди в этом посте упускают самый важный момент для тех, кто никогда не использовал функциональный язык программирования: расширение вашего разума. Если вы новичок в функциональном программировании, то Haskell заставит вас думать так, как вы никогда не думали раньше. В результате ваше программирование в других областях и на других языках улучшится. Как много? Трудно определить количественно.
Есть один хороший ответ на вопрос, для чего хорош язык общего назначения, такой как Haskell: написание программ в целом.
Для чего он используется на практике, у меня есть три подхода к установлению этого:
Указывает, что это хорошо для графики, сетей, системного программирования, структур данных, баз данных, разработки, обработки текста ...
И, наконец, мое мнение о том, в чем оно действительно сильное:
Я надеюсь, что это дает вам представление о том, насколько широк ваш вопрос, если на него нужно ответить с какой-либо конкретностью.
Из Haskell Wiki :
Haskell широко используется в коммерческих целях - от аэрокосмической и оборонной промышленности до финансов, для веб-стартапов, фирм по разработке оборудования и производителей газонокосилок. На этой странице собраны ресурсы по промышленному использованию Haskell.
Согласно Википедии, язык Haskell был создан из-за необходимости объединить существующие функциональные языки в общий язык, который можно было бы использовать для будущих исследований в области функционально-языкового проектирования.
Судя по имеющейся информации, очевидно, что он перерос свое первоначальное назначение и используется не только для исследований. В настоящее время считается универсальным функциональным языком программирования.
Если вы все еще спрашиваете себя: «Зачем мне это использовать?», Тогда прочитайте « Зачем его использовать»? раздел Введение в Haskell Wiki.
Haskell - это язык программирования общего назначения. Он может быть использован для всего, что вы используете любой другой язык. Вы ничем не ограничены, кроме своего собственного воображения. Для чего он подходит? Ну, почти все. Есть несколько задач, в которых функциональный язык не превосходит.
И да, я Рейн из Dreamincode. :)
Я также хотел бы отметить, что, если вы не читали страницу Википедии, функциональное программирование - это парадигма, как объектно-ориентированное программирование - это парадигма. На всякий случай, если вы не знали. Haskell также функционален в том смысле, что он работает; это работает довольно хорошо в этом.
Тот факт, что язык не является объектно-ориентированным языком, не означает, что язык ограничен чем-либо. Haskell - это язык программирования общего назначения, и он так же универсален, как и Java.
У меня есть крутой, Facebook создал автоматизированный инструмент для переписывания кода PHP. Они анализируют источник в абстрактном синтаксическом дереве, делают некоторые преобразования:
if ($f == false) -> if (false == $f)
Я не знаю почему, но это, кажется, их особый стиль, и тогда они довольно печатают его.
https://github.com/facebook/lex-pass
Мы используем haskell для создания небольших специфичных для домена языков. Огромные объемы обработки данных. Веб-разработка. Веб пауки. Тестирование приложений. Написание сценариев системного администрирования. Бэкэнд-скрипты, которые общаются с другими сторонами. Сценарии мониторинга (у нас есть DSL, который прекрасно работает вместе с munin, значительно облегчает написание корректного кода монитора для ваших приложений.)
Все виды вещей на самом деле. Это просто повседневный язык общего назначения с некоторыми очень мощными и полезными функциями, если вы немного склонны к математике.
false
слева, я не вижу смысла в использовании инструмента для его автоматического выполнения: если у вас уже есть ==
оператор, то вы уже знаете, что у вас нет ошибки, которую эта часть lex-pass предназначен для ловли, и если у вас есть =
вместо этого нет надежного способа определить, намеренно ли это так или нет.
Из Хаскелла :
Haskell - это стандартизированный, чисто функциональный язык программирования общего назначения с не строгой семантикой и строгой статической типизацией. Он назван в честь логика Хаскелла Карри.
По сути, Haskell может использоваться для создания практически всего, что вы обычно создаете, используя другие языки общего назначения (например, C #, Java, C, C ++ и т. Д.).
Это довольно хороший источник информации о Haskell и его использовании: