пятница, 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 комментариев:

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

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

eao197 комментирует...

2Rustam:

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

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

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

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

sin x + y * cos x/2

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

Rustam комментирует...

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

Анонимный комментирует...

VladD2 тоже критикует практичность примеров ;-)

eao197 комментирует...

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

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

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