пятница, 26 декабря 2008 г.

Why FP doesn't matter yet? ;)

В последнее время в определенных кругах наблюдается повышенный шум по поводу функционального программирования (ФП). В одном из обсуждений ФП подкинули ссылку на статью Why Functional Programming Matters. Меня, как завзятого скептика по отношению к ФП статья не впечатлила. Уж сильно обсуждаемые там примеры далеки от того, чем мне приходится заниматься. Но, в попытке разобраться с примерами кода из статьи я хорошо понял, почему ФП, не смотря на свой почтенный возраст, до сих пор широко не распространено. А вот почему:
easydiff f x h = (f(x+h)-f x) / h

Мозги приходится напрягать уже для того, что бы выделить разные синтаксические элементы (список параметров, места вызова функций). Нет, что бы записать нормально:

easydiff(f, x, h) = (f(x+h)-f(x))/h

Глядишь, и народ бы к ним потянулся :)

6 комментариев:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. Просто у тебя нет навыка чтения функций в ML стиле, все вполне читабельно

    ОтветитьУдалить
  3. 2Rustam:

    Ну, во-первых, я просто шутил :)

    А, во-вторых, если я еще что-то помню, из школьного курса математики, то в математике принято аргументы функций в выражениях заключать в скобки. Т.е. писать как-то так:

    sin(x)+y*cos(x/2)

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

    sin x + y * cos x/2

    Может быть поэтому в свое время я Бейсик и Паскаль осваивал просто в лет, поскольку запись математических операций в них была очень близка к привычной мне.

    ОтветитьУдалить
  4. Скобки в ML образных плохой стиль, мешают частичному применению, бородатые злобные функциональщики таких шуток не поймут :)

    ОтветитьУдалить
  5. VladD2 тоже критикует практичность примеров ;-)

    ОтветитьУдалить
  6. Ну я не сказал, что примеры не практичные. Просто они очень далеки от меня :)

    Не так давно мне попалась статья о баге, который нашли в .Net-овском JIT (http://research.microsoft.com/apps/pubs/default.aspx?id=76524). Я впечалился количеством и размером формул, которые там используются. Вероятно, ФП для таких задач -- самое оно. И для тех, кто такими задачами занимается, примеры вполне практичные.

    Но ведь я смотрю со своей колокольни :)

    ОтветитьУдалить