?

Log in

No account? Create an account
dump -0f - /dev/mind
Я знаю Haskell, OCaml, GSM, эндофункторы и много других страшных слов
Несем опиум в народ :) 
20th-Apr-2007 09:15 am
Написал короткую статью про ФП для developers.org.ua. Читайте, ругайте :)
Comments 
20th-Apr-2007 09:31 am (UTC)
Нету конструктивных. Ходят слухи что в AMD дофига софта на лиспе, еще где-то, чуть не в Боинге, etc. Вообще -- пойти на сайт того же францз-лиспа и посмотреть, там список впечатляющий. только не подтверждён теми, кто в нём упомянут :)
20th-Apr-2007 10:20 am (UTC)
Если не конкретный софт, а подобные слухи или ссылки на людей, использующих ФП в работе в известных компаниях, то можно упомянуть:
Главные разработчики GHC, Simon Peyton Jones и Simon Marlow, работают под крылом Microsoft. Ralf Laemmel работает там же. Как говорил Винни Пух, это неспроста - все "революционные" изменения в C# попадут туда из Haskell.
Philip Wadler, один из главных авторитетов в мире CS и Haskell в частности, работал над generics в Java.
Автор блога Good Math, Bad Math Mark Chu-Carroll работает в Гугле.
Лиспер Питер Норвиг работает в Гугле.
Выдающаяся личность современности, Олег Киселев, взрывающий людям мозг при помощи Haskell, Scheme и Ocaml, работает на американских военных.
John Harrison, известный своими учебниками по ФП, работает в Intel.
Joel Reymont - вы должны были заметить это имя, если изредка читаете мейл-листы Haskell, Ocaml, Erlang. Фрилансер, поднимает довольно-таки сложные проекты в одиночку (игровой сервер, финансовый софт), используя все вышеупомянутые технологии.
Список можно продолжать.
20th-Apr-2007 10:25 am (UTC)
Все вот эти ``работает там-то'' не очень интересны, потому что я-то знаю, что у таких компаний еак Гугл, Интел и Майкрософт есть специальный класс людей, которые формально работают, а реально выхода от них никто не ожидает (хотя иногда он случается, и тогда выигрыш -- ОГО-ГО!!!) -- т.е. фактически академическая наука внутри корпорации... Мало кто так крут, что бы оказатся в таких условиях...

И чем поможет FP (прив сём моем к нему уважении) обычному среднему оффисному кодеру -- не ясно. А таких программистов -- 99.9%
20th-Apr-2007 10:28 am (UTC)
Типа, использование "filter p (map f lst)" в питоне вместо двух циклов за помощь не считается? :)
20th-Apr-2007 10:32 am (UTC)
Ну, я и на JavaScript так пишу, и на perl (на питоне вовсе не пишу), но это именно крохотные кусочки. Они проникают, конечно. Но всё же в основной массе я бы их не считал.

Так же как любой программист, пишушщий Make-файл пишет на прологе. Но это не значит, что пролог -- промышленный язык :)
20th-Apr-2007 10:49 am (UTC)
Т.е. filter p (map f list) пишется и на plain c (ладно, ладно, да, memory manahment). Это вопрос библиотеки по сути для оффисного программиста :)
Знать FP для того, что бы этими пользоватся, не надо.
24th-Apr-2007 07:40 pm (UTC)
(мы, имхо, стремительно катимся ко спору о вкусах)

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

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

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

Ну, и на закуску можно вспомнить хороший пример от, кажется, Пола Грэхема. Офисный программинг - это дело тоже непостоянное. 8 лет тому назад ява была экзотикой, а приложения полагалось писать только на С++. Сегодня в яве появляются generics и closures - еще один шаг в направлении ФП. И появляются отнюдь не потому, что это модно звучит ... Раз появляются - то это кому-то нужно.
20th-Apr-2007 10:31 am (UTC)
Ну, а проекты фрилансера -- это безумие для заказчика. Потому что что они будут делать через год для развития, кроме как нанимать ЕГО ЖЕ -- не ясно. Такая первая доза бесплатно.
20th-Apr-2007 10:46 am (UTC)
Проблемы экономического и организационного характера, естественно, имеют значение.
Но т.к. мы обсуждаем статью для программистов, лучше сфокусироваться на технических проблемах, которые лучше решаются в рамках ФП. Пример Реймонта показывает, что сложность проектов, которые можно реализовать в сжатые сроки в одиночку, довольно высока; решаемые проблемы - не академические, а практические; я уверен, что Реймонт, пользуясь "игрушками для математиков", заработал совершенно реальные деньги.
Это важный момент, т.к. компаний, применяющих ФП на всю катушку, немного - можно повысить _собственную_ эффективность, решать _собственные_ локальные задачи на ФЯ, работая где угодно.
20th-Apr-2007 01:14 pm (UTC)
Я вот не решил ни одной локальной задачи средствами ФП. Потому как мне, как тупому админу никода не понять зачем люди придумали
1. этот нечеловеческий синтаксис
2. монады для IO
Поэтому тупо фигачу на python. Жаль что функциональный подход в нем как-то совершенно неразвит. Хотя я неверно хочу невозможного.
20th-Apr-2007 01:45 pm (UTC)
Монады - это долгая песня в дюнах, поднимать эту тему здесь не стоит (скажу только, что их применение не гораничивается вводом-выводом). Если они являются серьезным препятствием, можно взглянуть на другие языки, в которых ввод-вывод не использует монады.
А что такого нечеловеческого в синтаксисе?
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
20th-Apr-2007 01:46 pm (UTC)
s/гораничивается/ограничивается/
20th-Apr-2007 06:23 pm (UTC)
Про неограничивается я знаю. Может где-то они и нужны и полезны. Но IO через них - это издевательство над моим маленьким мозгом. Из чисто функциональных и не использующих монады мне известен только Clean. Всем хорош, но несколько нестабилен и его создатели любят винду, а я нет.
Теперь про синтаксис. Примеров приводить не буду, но на мой взгляд синтаксис недружелюбный для новичка. Я посмотрев на код почти любой haskell программы с ходу не скажу что она делает. Про python вот скажу, там все просто и понятно, а про haskell - нет. Конечно можно сказать что все придет со временем, но для этого это время у меня должно быть.
24th-Apr-2007 07:42 pm (UTC)
Как было справедливо замечено, монады - это действительно долгая песня.

Надо нести монады в массы :) Например, привести пример кода, который простым изменением монады с Maybe на List изменяет свою функциональность с "поиск первого решения" на "поиск всех решений" ...
20th-Apr-2007 10:38 am (UTC)
а F# - это вообще неспроста :-) и он в последнее время стал очень часто упоминаться во всяких журналах и статьях. Стали даже выпускать F# Journal, но по заоблачным ценам :-((((
This page was loaded Nov 21st 2019, 8:12 am GMT.