singlepost

Очередной набег на ФП. << На главную или назад  

Делаю очередной набег на функциональное программирование. Подбодрите что ли…

135 ответов в теме “Очередной набег на ФП.”

  1. 34
    Серега Абрамян ответил:

    не ну это понятно что скачать мало… но я другое имел ввиду

  2. 33
    Евгений Гаврин ответил:

    Как показывает практика и опыт предков – скачать мало )

  3. 32
    Серега Абрамян ответил:

    sicp я уже скачал…

  4. 31
    Жека Кирпичев ответил:

    И то и другое, но сначала лисп (SICP) :)

  5. 30
    Серега Абрамян ответил:

    а что бы Вы порекомендовали haskell или lisp??

  6. 29
    Серега Абрамян ответил:

    спасибо

  7. 28
    Жека Кирпичев ответил:

    Кстати, я недавно, кажется, выработал Единственно Верный Способ Объяснения Монад – он сработал на умном парне, который начал учить хаскелл, но монады не знал – вроде, минут за 15 он их просек, хотя конечно надо еще проверить :)

  8. 27
    Евгений Гаврин ответил:

    А мне по хаскелу эта штука понравилась…
    //learnyouahaskell.com/chapters

    Кстати говоря, Харрисон и Филд у меня пошли гораздо легче SICPа

  9. 26
    Жека Кирпичев ответил:

    Начать изучение в любом случае стоит с книги SICP. Она свободно доступна в инете в электронном виде на английском и русском языке; также свободно доступен курс видео-лекций от авторов на английском. Эту книгу уже столько раз восхваляли в интернете и в этой группе, что повторять восхваления не буду :)

    По хаскеллу две самых лучших, но очень разных книжки – это "Real World Haskell" (она также свободно доступна в инете: //book.realworldhaskell.org/read/) и книга Richard Bird "Introduction to functional programming using Haskell".

    Первая концентрируется на решении практических задач, вторая концентрируется на достижении мастерства в самом функциональном стиле проектирования и преисполнена невероятно красивых примеров. Любой уважающий себя хаскеллист должен прочитать обе :)

    Вообще же учебных материалов по хаскеллу навалом. Достаточно зайти на //haskell.org/ и посмотреть в секцию "Learning". Если что-то становится непонятно – спрашивать в списке рассылки haskell-cafe@haskell.org или на IRC-канале #haskell @ chat.freenode.net. Коммунити хаскеллистов также, по-моему, не знает себе равных по уровню взаимоуважения и вежливости общения, желанию и умению помогать новичкам, и тем более по профессионализму (и там, и там сидят в числе прочих участников – десятки докторов наук). Так что можно смело спрашивать – без помощи не останешься.

  10. 25
    Серега Абрамян ответил:

    А какую книжку посоветуете по хаскелл? и вообще какой ФП начать изучать?

  11. 24
    Жека Кирпичев ответил:

    Хаскелл, кстати, на несколько голов опережает все остальные языки программирования по возможностям многопоточного и параллельного программирования. У него есть:
    - Обычная многопоточность на зеленых и не-зеленых нитях. Его зеленые нити и примитивы синхронизации работают быстрее эрланговских и неприлично быстрее "родных" нитей и примитивов ОС. К сожалению, родных средств распределенного программирования у хаскелла нет; правда, есть библиотеки.
    - Неявный параллелизм
    - Data Parallel Haskell
    - Транзакционная память (STM)
    См. //donsbot.wordpress.com/2009/09/03/parallel-pro...

  12. 23
    Жека Кирпичев ответил:

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

    2: в ФП языках есть огромное количество механизмов абстракции и повторного использования кода:
    - Функции высшего порядка. Мощнее них, пожалуй, ничего и не придумаешь – например, большинство паттернов GOF в функциональных языках сводятся к простенькому применению ФВП и не заслуживают специального названия.
    - Ленивые вычисления
    - Классы типов
    - Семейства типов
    - Экзистенциальные типы (подходят для эмуляции некоторых фич ООП)
    - view patterns
    - Модули как пространства имен
    - Модули в более мощном смысле этого слова в OCaml
    - Монады
    - …

  13. 22
    Александр Микинас ответил:

    "Прошу аргументировать."
    1. "Опасность лиспа в том, что он слишком гибкий, и дает слишком мало гарантий корректности. Если несколько членов команды понапишут, например, своих "единственно верных" макросов на все случаи жизни, программа превратится в полную кашу"
    2. Это скорее не аргумент, а вопрос: А какими средствами обеспечить например модульность и возможность заменять компоненты. Это основной козырь ОО подхода. Там для этого есть классы, интерфейсы, паттерны, пространства имен и т.д. А что есть в ФП языках ? Насколько этим просто воспользоваться ?

  14. 21
    Серега Абрамян ответил:

    хм… ну наверно со временем пойму… спасибо

  15. 20
    Жека Кирпичев ответил:

    Сложность хаскелла – попробуй объяснить своим коллегам, что такое ContT. Или ладно, без Cont можно и обойтись. А вот почему у функций для работы с STArray именно такие типы и что они, блин, вообще означают :)

    Опасность лиспа в том, что он слишком гибкий, и дает слишком мало гарантий корректности. Если несколько членов команды понапишут, например, своих "единственно верных" макросов на все случаи жизни, программа превратится в полную кашу. См. пост gaperton: //gaperton.livejournal.com/37289.html#cutid1

  16. 19
    Серега Абрамян ответил:

    ну сложность хаскелла я особо наверно пока не понял, вроде пока все понятно, может со временем пойму. А чем лисп опасен?

  17. 18
    Жека Кирпичев ответил:

    Думаю, да. Хаскелл слишком сложный, лисп слишком опасен в неопытных руках, и читаемость его, скажем так, на любителя.

  18. 17
    Серега Абрамян ответил:

    а разве у лиспа и хаскела меньше шансов как Вы говорите пойти в массы?

  19. 16
    Жека Кирпичев ответил:

    Ну из функциональных языков F#, Scala и Erlang, несомненно, наиболее перспективные в плане шансов пойти в массы.

    Но это не значит, что не надо учить лисп и хаскелл ;)

  20. 15
    Евгений Гаврин ответил:

    Есть предположение, что если F# пойдет в массы, то мейнстрим не заставит себя ждать

  21. 14
    Жека Кирпичев ответил:

    1 – Эрланг гораздо более медленный во всем, что НЕ касается многозадачности и сетевого ввода-вывода. В вычислительных задачах он почти такой же тормозной, как Ruby, или даже хуже.
    2:
    а) Да, тут не поспоришь.
    б) А какие нужны инструменты?
    в) Прошу аргументировать. Мне кажется, это не так.

  22. 13
    Александр Микинас ответил:

    1. Компилятор питона не из быстрых, это не для кого не секрет.
    2. Я не пользуюсь ФП языком, не за то что он быстрый или медленный, а по следующим причинам:
    a) Это не мэинстрим, потому меньше готовых решений, труднее найти специалистов
    б) Как следствие первого пункта, меньше доступных инструментов.
    в) Затруднена разработка в составе группы, ОО языки намного лучше с этим справляются.

    Вместе с тем, я уважаю ФП, прежде всего за простоту и математическую основу. Изучать его надо, для расширения кругозора. Да и в последнее время многие ОО языки стали добавлять ФП приемы в свой арсенал.
    Вывод мой отнюдь не глубокомысленный и к теме имеет такое же отношение как и ваш пост: если читать его с правильным настроем, вполне подбадривающий…

  23. 12
    Серега Абрамян ответил:

    спасибо…

  24. 11
    Жека Кирпичев ответил:

    ghc, конечно :)

  25. 10
    Серега Абрамян ответил:

    Может вопрос не в тему.
    Какой компилятор посоветуете для haskell?

  26. 9
    Жека Кирпичев ответил:

    Ооо, поздравляю :)

  27. 8
    Евгений Гаврин ответил:

    Я, кстати, хвастался, что сумел найти и купить SICP в русском издании?

  28. 7
    Жека Кирпичев ответил:

    Антон, почитай статью "Обзор литературы об ФП" в журнале fprog.ru :) Если понадобится еще информация – спрашивай здесь.

  29. 6
    Антон Кононов ответил:

    А есть "ФП для чайников?" 0_о для себя спрашиваю

  30. 5
    Жека Кирпичев ответил:

    Для тех, кто не знает английского или ленится, ретранслирую:

    Tornado – веб-фреймворк на питоне, написанный в Facebook с прицелом на масштабируемость.

    Написанный на эрланге "влоб", без всяких ухищрений, примитивный веб-сервер рвет его на сцаные тряпки.
    Можно было бы сказать, что дело в том, что веб-фреймворк тяжелый, а примитивный сервер – легкий, поэтому, дескать, можно простить масштабируемому фреймворку то, что он нихера не масштабируется – но дело в том, что эрланговский тяжелый веб-фреймворк Yaws тоже рвет Tornado на, пусть и чуточку менее сцаные, но тряпки.

    ФП тут при том, что Erlang – функциональный язык, и тест следует воспринимать как очередной аргумент против странных утверждений, что-де функциональные языки – бесполезные игрушки.

    Кстати, Лев Валкин – CTO в компании js-kit.com, у которой 600 тысяч коммерческих клиентов, и бОльшая часть серверного софта написана на Erlang+OCaml+Haskell (часть переписана с перла и С++ с сокращением кода в 4-5 раз).

  31. 4
    Жека Кирпичев ответил:

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

  32. 3
    Александр Микинас ответил:

    "Лев Валкин измерил производительность веб-серверов на эрланге и питоне."
    зависит от компиллятора и прокладки между стулом и клавой, фп здесь не причём.

  33. 2
    Евгений Гаврин ответил:

    Жека, ты быстрый, очень. =)
    За журнал – спасибо. Завтра распечатаю, буду читать.

  34. 1
    Жека Кирпичев ответил:

    28 сентября выйдет 2й номер журнала //fprog.ru. Он будет большой частью состоять из описаний применения ФП в продакшн-системах.

    Лев Валкин измерил производительность веб-серверов на эрланге и питоне. Эрланг всех рвет на сцаные тряпки. //lionet.livejournal.com/42016.html

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.