dastapov: (Default)
[personal profile] dastapov
Написал короткую статью про ФП для developers.org.ua. Читайте, ругайте :)

(no subject)

Date: 2007-04-20 06:23 am (UTC)
From: [identity profile] filonov.livejournal.com
Излишне кратко имхо. Упомянуть pugs стоило бы.

(no subject)

Date: 2007-04-20 06:54 am (UTC)
From: [identity profile] ivoyt.livejournal.com
а для меня вообще в новинку. узнал что-то новое, спасибо! продолжение в студию!

(no subject)

Date: 2007-04-20 07:06 am (UTC)
From: [identity profile] alexott.livejournal.com
я оставил там комментарий.
в принципе, статья хорошая - именно, чтобы заинтересовать людей.
про альфа и бета редукции и ФП, можно будет почитать на русском после окончания перевода "Introduction to Functional Programming" - у харрисона очень хорошо там написано

(no subject)

Date: 2007-04-20 07:35 am (UTC)
From: [identity profile] vorotylo.livejournal.com
Обидно читать C++/Java/Python на одном дыхании. Питон все-таки... другой. Троеточие поставил бы, что ли, змей! :)

(no subject)

Date: 2007-04-20 07:46 am (UTC)
From: [identity profile] palm-mute.livejournal.com
Во-первых, спасибо за общественно-полезное дело.
Согласен с [livejournal.com profile] alexott, для того, чтобы заинтересовать, статья в самый раз. Можно было бы собрать большее примеров _практического_ применения - финансовая аналитика на Haskell в банке Credit Suisse, применение в криптографии, security - Galois Connections. Все-таки не всех впечатлит проект Эйлера.

В терминологии, на мой взгляд, есть огрехи, но в такого рода статье это несущественно.

ОО-полиморфизм - это inclusion polymorphism (согласно L.Cardelli), ad-hoc polymorphism - это перегрузка. И каким образом переименование переменных (альфа-конверсия) позволяет оптимизировать программы?

(no subject)

Date: 2007-04-20 07:48 am (UTC)
From: [identity profile] palm-mute.livejournal.com
s/большее/больше/

(no subject)

Date: 2007-04-20 08:01 am (UTC)
From: [identity profile] rigidus.livejournal.com
Умеешь остановить работу! Зачот!

(no subject)

Date: 2007-04-20 08:02 am (UTC)
From: [identity profile] blacklion.livejournal.com
За примеры низачот. mldonkey хорош только на безрыбьи, ejabberd -- со своими закидонами притча воязыцах, кто пользуется darcs'ом я не знаю, даже у hg аудитория больше...

А mldonkey и ejabberd представляют собой типичную болезнь OSS -- если есть что-то хоть как-то работающее, то с большой вероятностью оно единственным и останется, хотя бы и было качеств поганых.

(no subject)

Date: 2007-04-20 08:17 am (UTC)
From: [identity profile] p1r4nh4.livejournal.com
Поддерживаю, mldonkey и ejabberd - убожища еще те. :(

(no subject)

Date: 2007-04-20 09:01 am (UTC)
From: [identity profile] tarantul.livejournal.com
А есть у нас русскоговорящее коммьюнити по ФП ? Если да, то где ?

(no subject)

Date: 2007-04-20 09:16 am (UTC)
From: [identity profile] jerom.livejournal.com
С проектом Эйлера аргумент совсем слабый, во-первых там больше всего C/C++/C#, во-вторых главное там - алгоритм.

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

Больше половины тех, кто у меня в ленте написал о смерти John Backus, любит ФП.

(no subject)

Date: 2007-04-20 09:23 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Ну, удобство/неудобство/закидоны - они как бы мало зависят от языка, больше от архитектуры, подхода и т.п. Я ж не говорил, что приведу примеры _хорошего_ софта, я привел примеры просто софта :)

В принципе, критика по делу, но она - деструктивная :) Давай альтернативные примеры :)

(no subject)

Date: 2007-04-20 09:25 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Оба пункта - принимаются. Плохо, когда вычитываешь после написания всего один раз :)

(no subject)

Date: 2007-04-20 09:31 am (UTC)
From: [identity profile] blacklion.livejournal.com
Нету конструктивных. Ходят слухи что в AMD дофига софта на лиспе, еще где-то, чуть не в Боинге, etc. Вообще -- пойти на сайт того же францз-лиспа и посмотреть, там список впечатляющий. только не подтверждён теми, кто в нём упомянут :)

(no subject)

Date: 2007-04-20 09:38 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Fixed и терминологию, и примеры.

(no subject)

Date: 2007-04-20 09:39 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Принимается. Но я свой некорректный аргумент в статье все-таки оставлю :)

(no subject)

Date: 2007-04-20 09:43 am (UTC)
From: [identity profile] palm-mute.livejournal.com
Я забыл уточнить, что Galois Connections применяют Ocaml ;)

(no subject)

Date: 2007-04-20 09:46 am (UTC)
From: [identity profile] lomeo.livejournal.com
"С высоты моего положения не видно разницы даже между Вами и королем" (с) Стругацкие ;-)

(no subject)

Date: 2007-04-20 10:20 am (UTC)
From: [identity profile] palm-mute.livejournal.com
Если не конкретный софт, а подобные слухи или ссылки на людей, использующих ФП в работе в известных компаниях, то можно упомянуть:
Главные разработчики GHC, Simon Peyton Jones (http://research.microsoft.com/~simonpj/) и Simon Marlow (http://research.microsoft.com/~simonmar/), работают под крылом Microsoft. Ralf Laemmel (http://blogs.msdn.com/ralflammel/) работает там же. Как говорил Винни Пух, это неспроста - все "революционные" изменения в C# попадут туда из Haskell.
Philip Wadler, один из главных авторитетов в мире CS и Haskell в частности, работал над generics в Java (http://homepages.inf.ed.ac.uk/wadler/topics/gj.html).
Автор блога Good Math, Bad Math (http://www.scienceblogs.com/goodmath/) Mark Chu-Carroll работает в Гугле.
Лиспер Питер Норвиг (http://norvig.com/) работает в Гугле.
Выдающаяся личность современности, Олег Киселев (http://okmij.org/ftp), взрывающий людям мозг при помощи Haskell, Scheme и Ocaml, работает на американских военных (https://www.fnmoc.navy.mil/PUBLIC/index.html).
John Harrison (http://www.cl.cam.ac.uk/~jrh13/), известный своими учебниками по ФП, работает в Intel.
Joel Reymont (http://wagerlabs.com/) - вы должны были заметить это имя, если изредка читаете мейл-листы Haskell, Ocaml, Erlang. Фрилансер, поднимает довольно-таки сложные проекты в одиночку (игровой сервер, финансовый софт), используя все вышеупомянутые технологии.
Список можно продолжать.

(no subject)

Date: 2007-04-20 10:23 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Точнее, Haskell, OCaml и что-то еще. Я это помню абсолютно отчетливо.

(no subject)

Date: 2007-04-20 10:25 am (UTC)
From: [identity profile] blacklion.livejournal.com
Все вот эти ``работает там-то'' не очень интересны, потому что я-то знаю, что у таких компаний еак Гугл, Интел и Майкрософт есть специальный класс людей, которые формально работают, а реально выхода от них никто не ожидает (хотя иногда он случается, и тогда выигрыш -- ОГО-ГО!!!) -- т.е. фактически академическая наука внутри корпорации... Мало кто так крут, что бы оказатся в таких условиях...

И чем поможет FP (прив сём моем к нему уважении) обычному среднему оффисному кодеру -- не ясно. А таких программистов -- 99.9%

(no subject)

Date: 2007-04-20 10:28 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Типа, использование "filter p (map f lst)" в питоне вместо двух циклов за помощь не считается? :)

(no subject)

Date: 2007-04-20 10:31 am (UTC)
From: [identity profile] blacklion.livejournal.com
Ну, а проекты фрилансера -- это безумие для заказчика. Потому что что они будут делать через год для развития, кроме как нанимать ЕГО ЖЕ -- не ясно. Такая первая доза бесплатно.

(no subject)

Date: 2007-04-20 10:32 am (UTC)
From: [identity profile] blacklion.livejournal.com
Ну, я и на JavaScript так пишу, и на perl (на питоне вовсе не пишу), но это именно крохотные кусочки. Они проникают, конечно. Но всё же в основной массе я бы их не считал.

Так же как любой программист, пишушщий Make-файл пишет на прологе. Но это не значит, что пролог -- промышленный язык :)

(no subject)

Date: 2007-04-20 10:38 am (UTC)
From: [identity profile] alexott.livejournal.com
а F# - это вообще неспроста :-) и он в последнее время стал очень часто упоминаться во всяких журналах и статьях. Стали даже выпускать F# Journal, но по заоблачным ценам :-((((

(no subject)

Date: 2007-04-20 10:46 am (UTC)
From: [identity profile] palm-mute.livejournal.com
Проблемы экономического и организационного характера, естественно, имеют значение.
Но т.к. мы обсуждаем статью для программистов, лучше сфокусироваться на технических проблемах, которые лучше решаются в рамках ФП. Пример Реймонта показывает, что сложность проектов, которые можно реализовать в сжатые сроки в одиночку, довольно высока; решаемые проблемы - не академические, а практические; я уверен, что Реймонт, пользуясь "игрушками для математиков", заработал совершенно реальные деньги.
Это важный момент, т.к. компаний, применяющих ФП на всю катушку, немного - можно повысить _собственную_ эффективность, решать _собственные_ локальные задачи на ФЯ, работая где угодно.

(no subject)

Date: 2007-04-20 10:49 am (UTC)
From: [identity profile] blacklion.livejournal.com
Т.е. filter p (map f list) пишется и на plain c (ладно, ладно, да, memory manahment). Это вопрос библиотеки по сути для оффисного программиста :)
Знать FP для того, что бы этими пользоватся, не надо.

(no subject)

Date: 2007-04-20 01:00 pm (UTC)
From: [identity profile] xineohp-drol.livejournal.com
раздумываю о haskell :)

(no subject)

Date: 2007-04-20 01:14 pm (UTC)
From: [identity profile] tarantul.livejournal.com
Я вот не решил ни одной локальной задачи средствами ФП. Потому как мне, как тупому админу никода не понять зачем люди придумали
1. этот нечеловеческий синтаксис
2. монады для IO
Поэтому тупо фигачу на python. Жаль что функциональный подход в нем как-то совершенно неразвит. Хотя я неверно хочу невозможного.

(no subject)

Date: 2007-04-20 01:45 pm (UTC)
From: [identity profile] palm-mute.livejournal.com
Монады - это долгая песня в дюнах, поднимать эту тему здесь не стоит (скажу только, что их применение не гораничивается вводом-выводом). Если они являются серьезным препятствием, можно взглянуть на другие языки, в которых ввод-вывод не использует монады.
А что такого нечеловеческого в синтаксисе?
increment = (+1)
even x = x `div` 2 == 0

Напоследок, пара ссылок на решения админских задач на Haskell (вторая более практичная, но, к сожалению, без понимания монад там не разобраться):
http://haskell.org/haskellwiki/Simple_unix_tools
Practical Haskell: shell scripting with error handling and privilege separation (http://cgi.cse.unsw.edu.au/~dons/blog/2007/03/10#programmable-semicolons)

(no subject)

Date: 2007-04-20 01:46 pm (UTC)
From: [identity profile] palm-mute.livejournal.com
s/гораничивается/ограничивается/

(no subject)

Date: 2007-04-20 02:00 pm (UTC)
From: [identity profile] geniepro.livejournal.com
В Проекте "Эйлер" главный язык, по-моему, - ассемблер... :о)

(no subject)

Date: 2007-04-20 02:05 pm (UTC)
From: [identity profile] jerom.livejournal.com
Ну я к первой сотне подошёл на perl :-)

(no subject)

Date: 2007-04-20 06:23 pm (UTC)
From: [identity profile] tarantul.livejournal.com
Про неограничивается я знаю. Может где-то они и нужны и полезны. Но IO через них - это издевательство над моим маленьким мозгом. Из чисто функциональных и не использующих монады мне известен только Clean. Всем хорош, но несколько нестабилен и его создатели любят винду, а я нет.
Теперь про синтаксис. Примеров приводить не буду, но на мой взгляд синтаксис недружелюбный для новичка. Я посмотрев на код почти любой haskell программы с ходу не скажу что она делает. Про python вот скажу, там все просто и понятно, а про haskell - нет. Конечно можно сказать что все придет со временем, но для этого это время у меня должно быть.

(no subject)

Date: 2007-04-21 09:11 am (UTC)
From: [identity profile] guerrero de terracota (from livejournal.com)
Хм, какой-то эффект она на меня странный проивзела - на лисп потянуло :))
А ещё Эрик Реймонд вспомнился, как-то он рассуждал о том что есть разные языки и что их все полезно знать.

(no subject)

Date: 2007-04-24 07:27 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Чистый перл, без всякий Math::PARI и аналогов? Сильно.

(no subject)

Date: 2007-04-24 07:27 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Pencil & paper :)

(no subject)

Date: 2007-04-24 07:34 pm (UTC)
From: [identity profile] jerom.livejournal.com
Math::BigInt в паре примеров (но обошёлся бы и без него).

(no subject)

Date: 2007-04-24 07:40 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
(мы, имхо, стремительно катимся ко спору о вкусах)

Я бы сказал, что знание о том, что можно писать filter p (map f list) ценно не тем, что какой-то там язык дает возможно так написать, а ценно само по себе. Например, тем, что человек будет видеть возможности для генералиации там, где они есть, и использовать их.

Можно я еще резко вильну от конкретных паттернов кодирования к, например, type inference при статической типизации в контексте фразы "в чем польза от FP для офисного программера"? Будет ли обычному офисному кодеру польза от того, что ему не прийдется писать руками сигнатуры типов для всех или части функций? несомненно будет, особенно при рефакторинге кода.

Соответственно, даже если офисный программер пишет на языке без type inference, но знает о нем, то при необходимости выбрать язык для задачи/проекта (такое редко, но бывает) потенциально сможет облегчить себе жизнь.

Ну, и на закуску можно вспомнить хороший пример от, кажется, Пола Грэхема. Офисный программинг - это дело тоже непостоянное. 8 лет тому назад ява была экзотикой, а приложения полагалось писать только на С++. Сегодня в яве появляются generics и closures - еще один шаг в направлении ФП. И появляются отнюдь не потому, что это модно звучит ... Раз появляются - то это кому-то нужно.

(no subject)

Date: 2007-04-24 07:42 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Как было справедливо замечено, монады - это действительно долгая песня.

Надо нести монады в массы :) Например, привести пример кода, который простым изменением монады с Maybe на List изменяет свою функциональность с "поиск первого решения" на "поиск всех решений" ...

(no subject)

Date: 2007-04-24 07:45 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Ну, удобство написания и удобство чтения - это tradeoff, как не печально. Плюс - tradeoff сугубо индивидуальный.

Просто для сравнения поделюсь своим опытом.

Мне, например, сложнее понять, что делает питоновский код (как вспомню поптыки разобраться в потрохах bittorrent по reference реализации на питоне без единого комментария - так вздрогну) потому, что его сложнее "препарировать" и пробовать на зуб мелкими частями. Плюс - типы не выводятся, и чтобы понять, что делает метод от 7 аргументов, приходится его вычитывать ... Бррр...

(no subject)

Date: 2007-09-28 01:31 pm (UTC)
From: [identity profile] deadgeny.livejournal.com
Fixed.

А жаль. Людей, программирующих на perl, этот факт скорее оттолкнет, чем заинтересует.

(no subject)

Date: 2007-09-28 08:26 pm (UTC)

(no subject)

Date: 2007-09-28 09:28 pm (UTC)
From: [identity profile] deadgeny.livejournal.com
Потому что perl6 - это страшный уродец, фактически похоронивший perl, как язык.

(no subject)

Date: 2007-10-08 08:21 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Perl is long-time dead? :)

http://steve.yegge.googlepages.com/ancient-languages-perl

(no subject)

Date: 2007-10-08 09:38 pm (UTC)
From: [identity profile] deadgeny.livejournal.com
Да. Но была надежда - до появления внятной информации о perl6.
Это несколько печально, для некоторых задач perl весьма удобен. Например, описанная вами задача (http://users.livejournal.com/_adept_/74058.html) решается на нем надежнее и проще.

А ссылку я утащу к себе в журнал.

Profile

dastapov: (Default)
Dmitry Astapov

May 2022

M T W T F S S
       1
2345678
9101112131415
161718 19202122
23242526272829
3031     

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags