metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-08-20 11:20 am
Entry tags:

Офигенная статья, объясняющая ВСЕ про FP

http://blog.jelastic.com/2012/07/24/functional-programming-is-a-ghetto/
So why is functional programming, despite its virtues, a ghetto? The answer is that we tend to insist on good design, to such a degree that we avoid taking jobs where we’re at risk of having to deal with bad designs.

PS: В статье позитивная айседовщина. "IDE не нужны, потому что на продакшен сервере за тридевять земель вам они не помогут", "только идиоты начинают разработку на жабе или С++ в 2012 году" и прочее такое.

Еще того же автора: http://michaelochurch.wordpress.com/2012/04/13/java-shop-politics/

[identity profile] jdevelop.livejournal.com 2012-08-20 11:04 am (UTC)(link)
даешь монады, стрелки!

[identity profile] nivanych.livejournal.com 2012-08-20 12:21 pm (UTC)(link)
Главное, это их трансформеры!
А без них — зачем они вообще нужны? (c) migmit ;-)

[identity profile] migmit.livejournal.com 2012-08-23 06:59 pm (UTC)(link)
Я правда так сказал?

[identity profile] nivanych.livejournal.com 2012-08-24 02:30 am (UTC)(link)
Да. Со смайликом в конце.
Отыскивать не возьмусь.

[identity profile] jakobz.livejournal.com 2012-08-20 12:33 pm (UTC)(link)
Да они уже лезут под видом всяких LINQ, MVC-датабиндинговых библиотек, IoC-контейнеров и т.п. и т.д.

Все хорошее что происходит сейчас под видом прогресса в ООП - это именно обкатанные идеи из этой ФП-тусы. Так получается по определению: почти вся наука в программирование делается в ФП-тусовке, хотя бы потому что ФП хорошо математически формулируется.

ООП-шники не из ФП-тусы иногда придумывают что-нибудь свое гуманитарное, иногда даже оказывающееся относительно удачным, но это больше как исключение - строить всякие ракеты без понимания физики и математики могут лишь редкие кулибины.

[identity profile] nivanych.livejournal.com 2012-08-20 02:06 pm (UTC)(link)
Вот давно меня интересует.
Индусский говнокод и хацкельное ФП — это взаимоисключающие понятия или нет? ;-)
Хотя я понимаю, что если постараться, я бы придумал таакой говнокод! :-)
Но может ли он родиться естественным путём?

[identity profile] metaclass.livejournal.com 2012-08-20 02:50 pm (UTC)(link)
Может. Достаточно не написать комментариев и захардкодить констант :)

[identity profile] nivanych.livejournal.com 2012-08-20 06:25 pm (UTC)(link)
Гм. Вообще-то, да...
Это способ гораздо проще, чем мне прикидывалось! ;-)
Ну а если запретить им административно, то что ещё смогут придумать?

[identity profile] blackyblack.livejournal.com 2012-08-21 04:54 am (UTC)(link)
Напишут свою реализацию цикла while, макру для if и перепишут всё а-ля бейсик. Я так в своё время на прологе писал - разбираться времени не было.

[identity profile] migmit.livejournal.com 2012-08-23 07:06 pm (UTC)(link)
Из лично виденного:
max' (x:[]) = x
max' (x:xs) = if x > max' xs then x else max' xs

[identity profile] tzirechnoy.livejournal.com 2012-08-20 03:41 pm (UTC)(link)
А что, под видом прогрэсса в ООП происходит что-то хорошэе?

Фигассе новость.

[identity profile] jakobz.livejournal.com 2012-08-20 08:18 pm (UTC)(link)
Происходит.

Например, происходит не сильно связанная с ФП, а более с JS, руби, питоном и линуксом, back-to-the-basics-движуха: no-sql оттудова, convention over configutation, и все что типа "делай простое просто" - оно оттудова.

IoC - тоже хорошее ООП-изобретение, я считаю. У пацанов какими-то гуманитарными шифрами получилось придумать то, для чего монады. Но монады не коммутируют, а тут типа и замаха на такое нет. Зависимости от внешнего мира видно, на композицию не претендуем. Отличная тема.

Всякое такое. Много хорошей адаптации ФП к ООП, скажем LINQ тот же, или тренды с датабиндингом в UI.

[identity profile] blackyblack.livejournal.com 2012-08-21 04:55 am (UTC)(link)
А Линк живой разве ещё?

[identity profile] jakobz.livejournal.com 2012-08-21 07:23 am (UTC)(link)
Живой конечно. Там только Linq2SQL разве что заморозили. Но есть Entity Framework, есть всякие Linq2XML, пацаны вон даже парсеры пишут на нем - http://code.google.com/p/sprache/

Это же монадо-подобная штука, на ней много чего прикольного можно слепить.

[identity profile] w00dy.livejournal.com 2012-08-21 07:25 am (UTC)(link)
А чего ему умирать? Да, nhibernate городит какую-то свою хуйню, но ef и linq2sql живут и работают.

[identity profile] metaclass.livejournal.com 2012-08-21 07:38 am (UTC)(link)
LINQ-To-Entities формально живой, на практике там какой-то анус. EntityFramework огорчает невыносимо.
обычный LINQ никуда не денется, это ж просто синтаксический сахар для запросов к коллекциям.

[identity profile] tzirechnoy.livejournal.com 2012-08-21 06:55 am (UTC)(link)
>no-sql оттудова,

Я спрашывал про хорошэе.

>и все что типа "делай простое просто" - оно оттудова.

Нет, делай простое просто -- это немного раньшэ.

>IoC - тоже хорошее ООП-изобретение, я считаю.

Для ООП -- можэт быть. А так -- эта эпическая битва за управление потоками отражает только слабость абстракцый ООП как таковую и выходящее из неё отсутствие методов инжэнерного синтэза потоков управления.
И, надо заметить, в функцыональном программировани то, что называется IoC -- это основы программирования и естественный ход событий. Монады -- это ужэ сильно более высокие уровни инжэнерного анализа.

> скажем LINQ

Это этот очередной embedded SQL, до неюзабельности криво реализованный какими-то индусами, и, видимо, передранный с эрланга -- это достижэние ООП?

> или тренды с датабиндингом в UI.

Вообще не понимаю о чём Вы. То есть у меня есть несколько предположэний (каждое, впрочем, тошнотворное) -- но лучшэ Вы сами расскажэте, если захотите.

[identity profile] jakobz.livejournal.com 2012-08-21 07:30 am (UTC)(link)
No-SQL - хорошая штука если по месту юзать.

IoC к многопоточности отношения не имеет - оно про более правильную организацию зависимостей между подсистемами.

LINQ в купе с лямбдами и expression trees - не очередной embedded SQL, а хитрая монадо-подобная штуковина, неплохо подходящая для лепки DSL. Вот, скажем, парсер на ней: http://code.google.com/p/sprache/

Тренды с датабиндингом - это все что угодно про стрелки и реактивное программирование в UI. Тот же MVVC в WPF, или современные "MVC"-фреймворки для javascript-а.

[identity profile] w00dy.livejournal.com 2012-08-21 07:30 am (UTC)(link)
>> скажем LINQ
> Это этот очередной embedded SQL

Да вы батенька не в курсе. Под LINQ-ом лежит для начала extension methods, а потому уже мега вещь под названием expression trees. А вот то что вы назали очередных embedded sql это не более чем сахар для соотв. extension методов.

[identity profile] kurilka.livejournal.com 2012-08-21 10:34 am (UTC)(link)
Один из людей за линком - http://research.microsoft.com/en-us/um/people/emeijer/ErikMeijer.html
На той странице Erlang встречается только в ссылке, где они с Джо Армстронгом интервью вместе давали, хаскеля же несколько больше, скажем так