вторник, 29 декабря 2009 г.

[comp.prog.flame] Краткие впечатления от статьи “Элементы функциональных языков”

В третьем номере журнала “Практика функционального программирования” опубликована большая статья Евгения Кирпичева “Элементы функциональных языков”. Хочу поделиться парочкой впечатлений, пока кратко.

Самое важное – это то, что я, похоже, понял, почему ФП до сих пор не попало в мейнстрим. Ведь, в принципе, в тех самых элементах функционального программирования нет ничего сложного. Многие из них можно объяснять буквально на пальцах. Но!

Сейчас ФП завернута в неподходящую упаковку. Во-первых, в объяснениях функционального подхода слишком много научного, наукообразного (больше, чем научного) и восторженного. Думаю, это из-за того, что продвижением ФП занимаются, в первую очень, очень умные люди с чрезвычайно хорошей физико-математической подготовкой. Им удобно изъясняться именно так. Да не хватает умафантазии понять, что рядовому программисту объяснять нужно более простым языком.

Во-вторых, функциональные языки по своему синтаксису очень и очень сильно в стороне от мейнстримовых C- и Pascal-еподобных языков. А нужно-то всего-ничего:

  • обернуть возможности Haskell/OCaml в привычный большинству C-подобный синтаксис;
  • отказаться от использования однобуквенных имен и имен с черточкой. Вместо:
    curry f = f'
         where f' x y = f (x,y)
    писать по-человечески:
    curry func = carriedFunc
         where carriedFunc x y = func (x,y)
  • таки понять наконец, что скобки и запятые при вызове функций нужны! Поскольку при взгляде на:
    a = f x y * g z w
    должно быть сразу понятно, что это:
    a = f(x, y) * g(z, w)
    а не
    a = f(x, y * g, z, w)
    или
    a = f(x, y) * g(z(w))

Не, я конечно понимаю, что все это осваивается, и переломив себя и отказавшись от старых привычек можно легко и спокойно программировать на Haskell-е. Я не понимаю, зачем за это платить такую цену.

В общем, пока развитием функциональных языков будут заниматься ученые-математики, ничего в мейнстриме им не светит. Зато, если какой-нибудь программист-практик засунет часть возможностей Haskell-я в C++/C#/D/Java/you-name-it – вот это будет прорыв.

Кстати, поэтому я не очень верю в шансы Scala – ведь его разрабатывают как раз таки академические ученые ;)

А сама статья мне не понравилась. Но об этом, с конкретными цитатами, в ближайшие дни.

Отправить комментарий