metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-02-06 02:33 pm
Entry tags:

Функциональщина в бухгалтерии

Самоочевидно ли то, что с помощью filter/map/fold можно реализовать бухгалтерскую отчетность более простым и очевидным образом, чем с помощью select .. where .. group by?

Нет, наверно я хотел задать не этот вопрос. Правильный вопрос: сколько в час денег попросит человек, способный за неделю-две разобраться в вышеописанном вопросе?

[identity profile] metaclass.livejournal.com 2013-02-06 12:16 pm (UTC)(link)
Давай пример, мне вечно не хватает задач, выходящих за рамки привычного :)

[identity profile] metaclass.livejournal.com 2013-02-06 12:19 pm (UTC)(link)
Кстати, о джоинах вручную. На всяком лиспообразном под это ж можно DSL запилить.
В х-ле как с расширяемыми записями и выводом их типов сейчас?

[identity profile] avnik.livejournal.com 2013-02-06 12:19 pm (UTC)(link)
Да
При этом будет нельзя сложить например рубли с долларами.(ну и вообще теплое с мягким)

[identity profile] plumqqz.livejournal.com 2013-02-06 12:19 pm (UTC)(link)
Бигинта мало.

[identity profile] plumqqz.livejournal.com 2013-02-06 12:20 pm (UTC)(link)
А с производительностью все очень просто: первоначальная выборка производится в СУБД, средствами SQL
Ах это...

[identity profile] plumqqz.livejournal.com 2013-02-06 12:22 pm (UTC)(link)
Ну да, я уже понял - чтобы, значить, умение даром не пропадало.

[identity profile] metaclass.livejournal.com 2013-02-06 12:22 pm (UTC)(link)
Хм.
Я их (датасеты такие) сразу отображаю юзерам, сейчас вот еще буду дорабатывать, чтобы мемоизировать результаты на будущее.
В таких задачах джоины нужны разве что параметры из каких-нибудь справочников по кодам аналитики доставать и это можно сделать предобработкой на SQL в три строчки.

А часто оказывается, что тот параметр нужен для 1 отчета, и его можно прямо в долбаном описании настроек оставить в виде константы.

[identity profile] metaclass.livejournal.com 2013-02-06 12:22 pm (UTC)(link)
Нема дурных фетчить 1005000 проводок, даже если считалка отчетов рядом с СУБД запущена :)

[identity profile] dmzlj.livejournal.com 2013-02-06 12:23 pm (UTC)(link)
точно мало?

Prelude> product [1..1000]
402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000


ну, целочисленная арифметика с произвольной точностью везде есть


[identity profile] plumqqz.livejournal.com 2013-02-06 12:24 pm (UTC)(link)
Э-э-э... а что, собственно, "да"?
Что касается проблемы сложения рублей с долларами, то, честно говоря, я не могу назвать ее, так сказать, наболевшей.

[identity profile] metaclass.livejournal.com 2013-02-06 12:24 pm (UTC)(link)
у них бигинт это 64 бита :)

[identity profile] geniepro.livejournal.com 2013-02-06 12:27 pm (UTC)(link)
Был O'Haskell с расширяемыми записями и АлгТД, но что-то ненужным оказался... ((

[identity profile] plumqqz.livejournal.com 2013-02-06 12:27 pm (UTC)(link)
Ну да, да - СУБД вам и изоляцию сделает, чтобы все аккуратненько было, и отфильтрует - схеширует, и вот уж тогда поверх наложицо ФП, придавая окончательный шарм всей конструкции.
Особенно сильно ей рады будут невиновные и непричастные. Приходишь - и вместо привычного говоноооп говнофп.
Отличная идея, по-моему.

[identity profile] dmzlj.livejournal.com 2013-02-06 12:27 pm (UTC)(link)
ну, я джойнил маршруты с эвентами по ключу, вычисляемому оконными функциями, т.к прямой связи между текущей локацией ТС и маршрутом не было (ну, например, то, что автобус сейчас находится в точке D, совсем не означает, что он успешно следует по маршруту A-B-C-D-E-F, а факт того, что он следует сейчас именно по этому маршруту выводился из его предыдущей истории некоторыми эвристиками).

что-то написал и подумал, что уж это точно проще было загрузить целиком и
обработать на нормальном языке

[identity profile] plumqqz.livejournal.com 2013-02-06 12:28 pm (UTC)(link)
И что, не очень сильно тормозит?

[identity profile] plumqqz.livejournal.com 2013-02-06 12:28 pm (UTC)(link)
У них где надо numeric.

[identity profile] metaclass.livejournal.com 2013-02-06 12:29 pm (UTC)(link)
Разного рода сложносочиненная постобработка на ФП выглядит гораздо гуманнее, чем на SQL.
Хотя бы потому, что структур данных, доступных там, сильно больше, чем одних реляционных множеств кортежей на все про все.

[identity profile] dmzlj.livejournal.com 2013-02-06 12:30 pm (UTC)(link)
как везде. а что, РСУБД волшебным образом умеют быстро работать с данными, которые в машинное слово на целевой платформе не влезают?

влезает в слово --- будет быстро, не влезает --- как получится. такая история.

[identity profile] plumqqz.livejournal.com 2013-02-06 12:32 pm (UTC)(link)
Разного рода сложносочиненная постобработка на ФП выглядит гораздо гуманнее, чем на SQL.
Это вам кажется, что гуманно - по мне так совершенно антигуманно чуть ли не до медицинского уровня.

[identity profile] metaclass.livejournal.com 2013-02-06 12:33 pm (UTC)(link)
Ты маньяк.
Я в таком же самом алгоритме тупо грузил текущую поездку в память (за некий интервал времени) и обрабатывал теми же самыми эвристиками уже в виде графа объектов. А результат затем ложил в БД в пригодном для обработки SQL запросами виде (список посещений точек маршрута и проч.)

[identity profile] plumqqz.livejournal.com 2013-02-06 12:33 pm (UTC)(link)
Ну молодцы, чё.

[identity profile] metaclass.livejournal.com 2013-02-06 12:33 pm (UTC)(link)
А, для длинных нумериков представление другое, да.

[identity profile] plumqqz.livejournal.com 2013-02-06 12:35 pm (UTC)(link)
Кстати, что-то не припомню я там никаких структур. Множество, список, хеш - ничего выдающегося.

[identity profile] dmzlj.livejournal.com 2013-02-06 12:38 pm (UTC)(link)
беда в том, что эта херь была нужна в отчёте, который, теоретически, мог модифицировать усер. т.е просто была запилина хп, которая всё это и делала, а юзер ее звал. выбор встроенных языков в pg как-то невелик, я пытался поиграться со встроенной схемой или питоном, но быстро сдался. а процессинг на нормальном языке как-то в архитектуру не вписывался. возможно, надо было бы данные как-то более лучше денормализовать, что ли.

[identity profile] metaclass.livejournal.com 2013-02-06 12:38 pm (UTC)(link)
+Алгебраические типы данных, если это не кложурь и прочие лиспы.
+Вектора(массивы)
И возможность комбинировать это все произвольным образом.

Page 2 of 6