Я бы скорее предположил, что ваша реакция на разного рода функциональщину является следствием комплексов. Но точно так же может быть, что это напускная тупость, которая так популярна среди троллей.
Но точно так же может быть, что это напускная тупость, которая так популярна среди троллей. Это не напускная тупость, это удивление перед бесконечным разнообразием жизни.
Меня давно интересует парадокс - как в общем неглупые люди могут заниматься какой-то странной херней. То вроде нормальные ребята разведут такой оопизм, в котором сами начинают отчаянно путаться, то вот функциональщики - последние, к счастью, все еще остаются в массовом сознании чучелами. Неужели не видят, что изобретают?
В том то и дело, что это не странная херня. Теории, на которых построена разного рода функциональщина, для вычислений являются примерно тем же, чем реляционная модель является для баз данных.
Да это все замечательно; но вот какой с этого прок крокодилам? Я лет шесть назад, сознаюсь, не от большого ума полистал книжку по, кажется, хаскелю и, к своей чести, довольно быстро ее выкинул. Почему? Потому что ни одной моей проблемы это не решало.
Мои решило. Правда, не хаскель (который я изучил, но на практике почти не использую), а F# и Clojure. Первое генерит код, второе считает бухгалтерские отчеты. В первом случае, кроме функциональщины вообще слабо что пригодно, во втором - она используется как "более мощный sql, чем сам sql" :)
Представление AST кода наиболее естественным образом выглядит в двух случаях - или это лиспообразные языки, где код от данных и AST не отличается, или же нужны развесистые деревья с разнообразными структурами данных, которые проще всего на функциональных языках описываются.
Еще можно было бы генерить код без AST, а как любой текст - из текстовых шаблонов, но даже для этого входные данные проще описывать на функциональных языках.
Я пытался сделать кодогенератор сначала на C# - получился откровенный неподдерживаемый бред. Ну по аналогии - как SQL запросы руками на обычных языках имитировать, над курсорами :) На F# то же самое получилось гораздо понятнее и лаконичнее.
Ничто не умеет, хинты я руками ставлю, там где они нужны. При генерации запросов из LINQ я как-то не обращал внимания, ставит ли оно хинты, потому что в большинстве случаев оптимизатор отрабатывает корректно.
Ну "большие объемы", как ты их не хинти, уткнутся в i/o. У меня есть одна задача, где это придется решать дурным методом (запоминать результаты запросов, условно говоря "по всей БД" и далее анализировать, какие из запросов нужно пересчитывать при изменении данных). Вроде бы в мощных субд есть materialized views для такого, но я их руками не трогал и СУБД оные у меня не используются :)
no subject
Date: 2013-02-08 09:27 am (UTC)no subject
Date: 2013-02-08 09:28 am (UTC)no subject
Date: 2013-02-08 09:29 am (UTC)no subject
Date: 2013-02-08 09:30 am (UTC)no subject
Date: 2013-02-08 09:31 am (UTC)no subject
Date: 2013-02-08 09:31 am (UTC)no subject
Date: 2013-02-08 09:33 am (UTC)no subject
Date: 2013-02-08 09:35 am (UTC)Но точно так же может быть, что это напускная тупость, которая так популярна среди троллей.
no subject
Date: 2013-02-08 09:40 am (UTC)Это не напускная тупость, это удивление перед бесконечным разнообразием жизни.
Меня давно интересует парадокс - как в общем неглупые люди могут заниматься какой-то странной херней. То вроде нормальные ребята разведут такой оопизм, в котором сами начинают отчаянно путаться, то вот функциональщики - последние, к счастью, все еще остаются в массовом сознании чучелами. Неужели не видят, что изобретают?
no subject
Date: 2013-02-08 09:48 am (UTC)no subject
Date: 2013-02-08 09:52 am (UTC)no subject
Date: 2013-02-08 09:55 am (UTC)no subject
Date: 2013-02-08 10:09 am (UTC)no subject
Date: 2013-02-08 10:08 am (UTC)Первое генерит код, второе считает бухгалтерские отчеты.
В первом случае, кроме функциональщины вообще слабо что пригодно, во втором - она используется как "более мощный sql, чем сам sql" :)
no subject
Date: 2013-02-08 10:11 am (UTC)no subject
Date: 2013-02-08 10:30 am (UTC)Еще можно было бы генерить код без AST, а как любой текст - из текстовых шаблонов, но даже для этого входные данные проще описывать на функциональных языках.
Я пытался сделать кодогенератор сначала на C# - получился откровенный неподдерживаемый бред. Ну по аналогии - как SQL запросы руками на обычных языках имитировать, над курсорами :)
На F# то же самое получилось гораздо понятнее и лаконичнее.
no subject
Date: 2013-02-08 10:08 am (UTC)no subject
Date: 2013-02-08 10:25 am (UTC)При генерации запросов из LINQ я как-то не обращал внимания, ставит ли оно хинты, потому что в большинстве случаев оптимизатор отрабатывает корректно.
no subject
Date: 2013-02-08 10:32 am (UTC)no subject
Date: 2013-02-08 10:40 am (UTC)У меня есть одна задача, где это придется решать дурным методом (запоминать результаты запросов, условно говоря "по всей БД" и далее анализировать, какие из запросов нужно пересчитывать при изменении данных). Вроде бы в мощных субд есть materialized views для такого, но я их руками не трогал и СУБД оные у меня не используются :)
no subject
Date: 2013-02-08 10:55 am (UTC)no subject
Date: 2013-02-08 11:09 am (UTC)no subject
Date: 2013-02-08 02:41 pm (UTC)Причем, у белых людей давно уже все написано. Правда, стоит денег.
Приходит человек, знакомый с Ораклом, смотрит на эту мускль (файрберд) и спрашивает - а зачем оно надо? И в чем-то он прав.
no subject
Date: 2013-02-08 02:55 pm (UTC)А вот Postgresql вроде вполне приемлемо, для проектов где оракл по деньгам не проходит.
no subject
Date: 2013-02-09 08:54 am (UTC)— Сколько денег стоит ваш Oracle?
— А сколько денег вы готовы потратить?
UPD: хм, таки конкретные цифры имеются — https://shop.oracle.com/pls/ostore/f?p=dstore:product:0::NO:RP,6:P6_LPI:4509382199341805719938
no subject
Date: 2013-02-09 10:04 am (UTC)no subject
Date: 2013-02-09 01:54 pm (UTC)no subject
Date: 2013-02-08 10:05 am (UTC)no subject
Date: 2013-02-08 01:48 pm (UTC)Кстати, кто не знает - CSS это Counter Strike Source.
Так-то!
no subject
Date: 2013-02-08 02:03 pm (UTC)no subject
Date: 2013-02-08 10:06 am (UTC)no subject
Date: 2013-02-08 10:09 am (UTC)no subject
Date: 2013-02-08 10:27 am (UTC)no subject
Date: 2013-02-08 11:23 am (UTC)