Haskell не так сложен, как люди любят думать, чтобы учиться. Haskell открывает для вас новый мир, о существовании которого вы даже не подозревали. Его так же важно выучить, как и любой другой язык. Возможно, вы не найдете работу, требующую от вас программирования на Haskell, но действительно ли это означает, что язык бесполезен?
Haskell научит вас многому новому и покажет, как программировать на языке еще лучше. языки, с которыми вы / работаете / работаете. С его помощью вы можете заниматься своими личными проектами в свободное время.
Haskell на самом деле мало используется в «реальном мире», если вы определяете «реальный мир» как «генератор денег». Так что если это ваша цель, то вам, возможно, придется переосмыслить цели: p
Кроме того, мне не очень нравится эта часть выбранного ответа «как выучить haskell». Чтобы овладеть любым языком, не только Haskell, нужны месяцы или годы. В зависимости от того, как вы определяете «хозяин». Я могу использовать Haskell с довольно хорошей степенью эффективности, я изучаю его всего месяц, и даже медленно.
По крайней мере, изменение мышления, которое дает изучение Haskell, поможет вам, когда вам придется вернуться к использованию тех процедурных языков, которые все еще используются на рабочем месте.
Функциональная парадигма начинает проникать в различные основные приложения и языки - даже C ++ собирается добавить (урезанную) лямбду в C ++ 0x.
Вы также можете посмотреть на некоторые гибридные языки, такие как Scala или OCaml. Scala используется в Twitter, а OCaml используется на Jane's Street в финансовой торговой платформе.
Вероятно, вам не следует ожидать использования Haskell где-либо почти так же часто, как язык семейства C в профессиональных условиях. Если вопрос в том, будет ли вам полезно изучать Haskell и парадигмы функционального программирования, ответ - да. Вы можете применить свое расширенное понимание программирования ко всей своей работе.
В отличие от процедурных языков, будет ли мне полезно изучать Haskell и парадигмы функционального программирования?
Если наличие расширенного набора навыков полезно, тогда: да.
Один Преимущество, которое вы можете получить: параллельное и параллельное программирование. Процедурные языки прошлого, как правило, не имели четкого представления о побочных эффектах, в результате чего писать на них параллельные программы трудно. Функциональные языки (в частности, те, которые ограничивают побочные эффекты, такие как Haskell) могут намного больше сказать о продуктивном параллельном программировании.
Наличие этого навыка в рукаве не повредит.
Я вижу, что функциональное программирование может быть плюсом в производственной среде, если его очень легко использовать нефункциональным кодом. Думаю, MS тоже это заметил, когда они придумали F #.
Поскольку они оба компилируются в IL, вы можете решать проблемы, требующие функционального подхода, и очень легко использовать эти решения в своем процедурном коде.
Таким образом, функциональный код может легко найти свой путь в производственной среде понемногу
Поэтому, поскольку база пользователей MS такая большая, я предполагаю, что если F # не приживется в ближайшем будущем, то и Haskell тоже.
Расширение кругозора поможет вам стать лучшим программистом независимо от того, какой язык вы используете в данный момент. Вы никогда не будете смотреть на программирование таким же образом, например, после того, как напишете макросы Lisp. После того, как вы начнете мыслить в терминах Haskell, вы обнаружите, что составляете функции и желаете замыканий на менее продвинутых языках.
Судя по положительным особенностям C #, таким как лямбда-выражения, вывод типов, замыкания, и так далее ], изучение Haskell даст вам преимущество в завтрашнем дне в распространенных языках.
Некоторым людям нравится программировать на Haskell. Если вы можете выбрать свое окружение, и удовольствие - это соображение, тогда, может быть, вам стоит вмешаться.
Многие программисты не в состоянии выбирать свои инструменты, и удовольствие не является фактором для их выбора. Многие из них используют C / Java / и т. Д. На своем рабочем месте в качестве «основного источника проекта», но затем также выбирают или нуждаются в использовании Python для «скриптов», таких как скрипты сборки с SCons, другие скрипты, которые генерируют Java / т. Д. код, системы тестирования, проверки концепций и т. д. И в других местах Python также используется в «основном проекте».
Через 8 лет это будет Haskell, а не Python, который «придет в ты". Но вы можете прийти к этому раньше.
Многие из них используют C / Java / и т. Д. На своем рабочем месте в качестве «основного источника проекта», но затем также выбирают или нуждаются в использовании Python для «скриптов», таких как скрипты сборки с SCons, другие скрипты, которые генерируют Java / т. Д. код, системы тестирования, проверки концепций и т. д. И в других местах Python также используется в «основном проекте».Через 8 лет это будет Haskell, а не Python, который «придет в ты". Но вы можете прийти к этому раньше.
Многие из них используют C / Java / и т. Д. На своем рабочем месте в качестве «основного источника проекта», но затем также выбирают или нуждаются в использовании Python для «скриптов», таких как скрипты сборки с SCons, другие скрипты, которые генерируют Java / т. Д. код, системы тестирования, проверки концепций и т. д. И в других местах Python также используется в «основном проекте».Через 8 лет это будет Haskell, а не Python, который «придет в ты". Но вы можете прийти к этому раньше.
который будет «приходить к вам». Но вы можете прийти к этому раньше. который будет «приходить к вам». Но вы можете прийти к этому раньше.В отличие от процедурных языков, будет ли мне полезно изучать Haskell и парадигмы функционального программирования?
Нет, если вы не хотите быть несчастным. Люк Плант говорит в Почему изучение Haskell / Python делает вас худшим программистом :
Итак, изучение Python и Haskell деморализовало меня и воодушевило мне написать причудливый и трудный для понимания код ...
(Это не совсем шутка.)
Я думаю, что бороться стоит. Это поможет вам понять, как решаются проблемы, а не только как работает компьютер.
Возможно, одна конкретная проблема - это сам Haskell - как чисто функциональный язык, это своего рода «хардкор», который, с другой стороны, может даже усложняют ситуацию.
Функциональное программирование вместо этого может быть чрезвычайно полезным в очень прагматической манере - многие объектно-ориентированные / императивные языки теперь включают функциональные элементы по этой причине (Linq, анонимные функции, значения только для чтения, указатели / делегаты функций, вывод типов) : Вы можете сконцентрироваться на том, что должно быть сделано, что позволит вам выразить больше с помощью меньшего количества кода (что еще менее подвержено ошибкам).
Не чисто функциональные языки (стандартные функциональные языки), такие как Scala или F #, могут быть легко интегрированы в существующая Java или. NET-проектов, поэтому вы можете комбинировать преимущества обеих парадигм там, где они необходимы. Типичные преимущества функциональных языков см. В этой ветке . Просто подумайте о чрезвычайно мощном синтаксическом анализе (комбинаторы монадического синтаксического анализатора / Parsec) или параллельном программировании, которое возможно с функциональными языками, и вы увидите, насколько они полезны.
Вы можете комбинировать использование функционального программирования и прагматично
Все современные языки сценариев, включая JavaScript или Lua, допускают использование функциональной парадигмы.
Функциональная концепция набирает обороты. Обратите внимание на всплеск активности и интереса к Ruby. Я также заметил, что в последнее время немного больше интереса к JavaScript, чем к простому языку сценариев браузера. Вы можете опередить игру, ныряя в нее сейчас, хотя потраченное время может не окупиться в этом или следующем году.
Это зависит от вашего общего плана игры. Вы занимаетесь программированием как самоцелью или как средством для достижения цели? Если это первое, сходите с ума с Haskell. В последнем случае придерживайтесь основных, «пригодных для работы» языков. Подождите, пока Haskell взлетит, а затем прыгайте.