Расскажите-ка мне про функциональные языки программирования.
Что в них интересного, сложно ли изучить, стоит ли вообще с ними связываться?
ФЯП
Расскажите-ка мне про функциональные языки программирования.
Что в них интересного, сложно ли изучить, стоит ли вообще с ними связываться?
|
Популярные блоги ↓
|
| © 2009 — 2011 FreeGeo |
Комментарии Фильтр
(не-сложно «учи Scheme»)
Так или иначе все будет сводиться к «формулировке» задачи на языке задачи. Т.е. в ФЯП ты имея некие примитивы на руках строишь из них новый язык, на котором твоя задача описывается легко и естественно. Разумеется есть много готовых библиотек.
Однако, основная, на мой взгляд, проблема все без исключения ФЯП — отсутствие УДОБНОЙ среды разработки. Все остальное с ФЯП полный порядок. Другой вопрос — зачем с ними связываться? Опять же — большинство задач вполне себе удобно решать в императивном стиле. Но мастер тем и отличается, что на каждую задачу он подбирает наиболее подходящий инструмент. К чему я клоню понятно, ФЯП не всемогущи, но для определенных задач подходят гораздо лучше, чем языки императивные.
Во-первых он достаточно скромен и прост в плане синтаксиса (я бы сказал удивительно прост — основное правило — любое выражение нужно заключать в скобки — см. коммент выше :) ).
Во-вторых язык этот семейства Lisp и переходить на более «крутых» собратьев потом будет проще.
Отдельной строкой напишу про Haskell — да он адово крут, но для его изучения самому надо быть адово крутым (в большинстве случаев достаточно имень Н-ое количество бабла, что бы нанять того самого «адово крутого» и это будет круче и практичне… хм, увлекся).
Потом уже перейду к Erlang и Scheme :)
OCaml — на мой взгляд не камильфо, могу ошибаться.
Сервера писать, например :)
Хотя он пока действительно мне не особо и нужен, но будет интересно повозиться.
> OCaml — на мой взгляд не камильфо, могу ошибаться.
Вроде ничего так. Он мультипарадигменный, можно писать в императивном стиле, и даже есть ООП :)
Но в то же время присутствуют: а) понятный и отличный туториал для C++ и Perl-программистов б) все «красивости» функциональных языков — замыкания, лямбда-выражения, ленивые вычисления, карринг, и прочее и прочее.
По крайней мере, мне он показался нормальным, хотя я еще толком не смотрел Лисп… :)
Нет, где его применять можно, я в курсе. Не понятно что с ним делать фриленсеру, например :)
Ну я Эрланг и прочие непопулярные языки и не с этой позиции рассматриваю. Выгоду напрямую оно может и не принесет — но зато расширит кругозор, что всегда полезно.
Кормят-то меня исключительно PHP и JavaScript, но кроме них мне очень нравится, к примеру, Python — хотя я им пока не заработал ни копейки :)
Ну, расскажешь потом о впечатлениях :)
Erlang настолько крут, что даже Node.js остается только сосать петушки. :)
Scheme — прекрасен, но пока до практического применения я не дошел.
Ruby — сочетает в себе качества Лиспа и Smalltalk. Тормозит. :) Но для гибкой веб-разработки в ее нынешнем, не-асинхронном виде еще ничего лучше Rails не придумали. А для асинхронного будущего есть Node.js, Erlang и диалект Лиспа — Clojure.
Python — для меня уже выглядит немного серо на фоне всех вышеперечисленных. Тем не менее, для GUI из кроссплатформенных языков по-моему пока нет ничего лучшего.
Вот эти 4 на ближайший год — мои фавориты, покрывающие 90% потребностей.
PHP остается забыть как страшный сон. :)
Посоветуй по Erlang литературу годную, что ле :)
И я только сегодня его начал учить — а уже доставляет в огромных масштабах. :)
В чем я вижу плюсы Node:
1) Знакомый язык — JavaScript.
2) V8 — очень быстрая виртуальная машина от Гугла.
И чем по-моему хорош Erlang:
1) Функциональная природа и вселяющий ужас синтаксис. Вот, к примеру, классическая функция map:
map([Head|Tail], Fun) ->
[Fun(Head)|map(Tail, Fun)];
map([], _) ->
[].
map([1, 2, 3], fun (Item) -> Item * 2 end) # [2, 4, 6]
2) Фантастическая расширяемость — миллионы легковесных процессов, бесплатная распаралелливаемость. Грубо говоря — добавляем 2 ядра к процессору (или пару компьютеров в кластер) — программа начинает работать быстрее. Автоматически. И в этом плане Эрланг уделывает тот же JavaScript по полной.
Нода имеет все шансы стать мэйнстримом. Но на Эрланге пишут системы управления поездами метро, а на Ноде — преимущественно веб-сервисы. :)
Выглядит интересно.
learnyousomeerlang.com/
Примеры доставляют море удовольствия. :)
В целом очень не плохо. Там основной смак в возможностях VM.
А сам язык — да, архаичен (и не представляет из себя что-то особенное — тот же Хаскель на голову выше) — многое утянуто из Пролога 40-летней давности, да и самому Эрлангу 25 лет уже.
А (почти) гениальным сочетание языка и платформы я считаю из-за простейшей конструкции Pid! Message, которая позволяет строить кластеры любого масштаба без лишнего труда.
Это не говоря уже о работающей горячей замене кода. Обновление живой системы двумя командами git pull & make upgrade — это очень, очень круто. :)
Scheme (Racket) достучался до моего сердца :)
Прекрасный язык. К черту Ocaml :))
По маленьку — всем. Когда есть время, я стараюсь что-нибудь изучить, а не сделать, что бы знать потом что можно, а чего низя (а это куда важнее самого навыка создания).
Вот наборчег:
DrScheme
LispWorks
GHCi
WinHugs
— Сайты у меня в закладках, которые я иногда посещаю:
www.daansystems.com/
lisper.ru/
lisp.ru/
— (print 'Удачи)