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

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

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

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

[identity profile] veremeenko-alex.livejournal.com 2013-02-06 11:34 am (UTC)(link)
20$

[identity profile] jamhed.livejournal.com 2013-02-06 11:34 am (UTC)(link)
а почему собственно select очевиднее filter?

[identity profile] metaclass.livejournal.com 2013-02-06 11:50 am (UTC)(link)
Вообще зависит от языка, но вопрос больше не в очевидности, а в том, что при сложных правилах составления отчетов реализация их на функциональном языке получается гораздо нагляднее и проще, чем на sql.

(no subject)

[personal profile] alll - 2013-02-06 15:00 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 15:04 (UTC) - Expand

(no subject)

[identity profile] thedeemon.livejournal.com - 2013-02-06 18:56 (UTC) - Expand

(no subject)

[personal profile] alll - 2013-02-06 19:40 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-02-07 05:25 (UTC) - Expand

(no subject)

[identity profile] norguhtar.livejournal.com - 2013-02-07 02:23 (UTC) - Expand

[identity profile] Шура Люберецкий (from livejournal.com) 2013-02-06 11:35 am (UTC)(link)
Правильный ответ - с помощью filter, map и fold можно реализовать select, where и group by, а также еще много чего.

[identity profile] metaclass.livejournal.com 2013-02-06 11:54 am (UTC)(link)
За эти деньги человек еще и требования сам соберет и с заказчиками общаться поедет:)

(no subject)

[identity profile] eleon.livejournal.com - 2013-02-06 11:59 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:04 (UTC) - Expand

(no subject)

[identity profile] eleon.livejournal.com - 2013-02-06 12:05 (UTC) - Expand

(no subject)

[identity profile] berezovsky.livejournal.com - 2013-02-06 12:07 (UTC) - Expand

[identity profile] blackyblack.livejournal.com 2013-02-06 11:51 am (UTC)(link)
15$. А вообще можно убедить заказчика как в первом так и во втором варианте. Всё равно хрен проверишь, а к концу проекта можно уже будет греть кости на пляжу.

[identity profile] metaclass.livejournal.com 2013-02-06 11:53 am (UTC)(link)
Заказчику (если это не модуль к готовой системе) в норме пофиг должно быть, на чем оно написано. Все равно более адекватного по соотношению цена/качество, чем у функциональщиков, обслуживания он не получит.

(no subject)

[identity profile] blackyblack.livejournal.com - 2013-02-06 12:00 (UTC) - Expand

[identity profile] plumqqz.livejournal.com 2013-02-06 12:04 pm (UTC)(link)
Самоочевидно ли то
Мне лично самоочевидно, что очень вероятны проблемы с балансом. Кроме того, еще более вероятны проблемы с производительностью. Ну и, скорее всего, вероятны проблемы с типами (в функциональщине вообще есть тип с фиксированной точностью?)

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

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:20 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:22 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:27 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:29 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:32 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-02-07 04:10 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:35 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:38 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:44 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:47 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:50 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 13:00 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 13:04 (UTC) - Expand

(no subject)

[identity profile] volodymir-k.livejournal.com - 2013-02-06 13:13 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 13:16 (UTC) - Expand

(no subject)

[identity profile] thedeemon.livejournal.com - 2013-02-06 18:59 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-07 08:27 (UTC) - Expand

(no subject)

[identity profile] geniepro.livejournal.com - 2013-02-07 06:39 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-07 07:34 (UTC) - Expand

(no subject)

[identity profile] vinslivins.livejournal.com - 2013-02-07 09:05 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-07 09:09 (UTC) - Expand

(no subject)

[identity profile] vinslivins.livejournal.com - 2013-02-07 09:18 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-07 09:24 (UTC) - Expand

(no subject)

[identity profile] vinslivins.livejournal.com - 2013-02-07 09:27 (UTC) - Expand

(no subject)

[identity profile] vinslivins.livejournal.com - 2013-02-07 09:26 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-07 09:28 (UTC) - Expand

(no subject)

[identity profile] vinslivins.livejournal.com - 2013-02-07 09:32 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-07 09:38 (UTC) - Expand

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

а джойнить данные будет неприятно

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:13 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:19 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2013-02-06 12:23 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:24 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:28 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:33 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:28 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2013-02-06 12:30 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:33 (UTC) - Expand

(no subject)

[identity profile] nealar.livejournal.com - 2013-02-06 17:33 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-07 04:13 (UTC) - Expand

(no subject)

[identity profile] potan.livejournal.com - 2013-02-06 15:17 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 15:21 (UTC) - Expand

(no subject)

[identity profile] si14.livejournal.com - 2013-02-07 11:05 (UTC) - Expand

[identity profile] stdray.livejournal.com 2013-02-06 12:12 pm (UTC)(link)
В конце концов, filter/map/fold большей частью будут отображены на select .. where .. group by. А доступные примитивные типы данных зависят от конкретного языка (платформы), но как правило все тоже самое.

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:22 (UTC) - Expand

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

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 12:24 (UTC) - Expand

(no subject)

[identity profile] avnik.livejournal.com - 2013-02-06 13:11 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 13:12 (UTC) - Expand

(no subject)

[identity profile] sorhed.livejournal.com - 2013-02-06 13:35 (UTC) - Expand

(no subject)

[identity profile] plumqqz.livejournal.com - 2013-02-06 13:36 (UTC) - Expand

(no subject)

[identity profile] jdevelop.livejournal.com - 2013-02-06 14:16 (UTC) - Expand

(no subject)

[identity profile] vshabanov.livejournal.com - 2013-02-06 17:29 (UTC) - Expand

(no subject)

[identity profile] jdevelop.livejournal.com - 2013-02-06 17:36 (UTC) - Expand

(no subject)

[identity profile] vshabanov.livejournal.com - 2013-02-06 18:11 (UTC) - Expand

(no subject)

[identity profile] jdevelop.livejournal.com - 2013-02-06 18:17 (UTC) - Expand

(no subject)

[identity profile] jdevelop.livejournal.com - 2013-02-06 18:18 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-02-07 04:03 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-02-07 04:00 (UTC) - Expand

(no subject)

[identity profile] jdevelop.livejournal.com - 2013-02-07 04:41 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-02-07 05:26 (UTC) - Expand

(no subject)

[identity profile] jdevelop.livejournal.com - 2013-02-07 13:28 (UTC) - Expand

(no subject)

[identity profile] blackyblack.livejournal.com - 2013-02-07 05:29 (UTC) - Expand

(no subject)

[identity profile] swizard.livejournal.com - 2013-02-07 10:27 (UTC) - Expand

[identity profile] theiced.livejournal.com 2013-02-07 03:50 am (UTC)(link)
вот. крокодил в очередной раз показал себя тупым мудаком перепутав "функциональщину" и "типизацию".

более того, код писанный в функциональном стиле в общем случае работает быстрее и обычно работает с иммутабельными данными - то есть никаких "проблем с балансом" быть не может принципиально.

иди секурити аудит проводи, говнище.

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

хотя проблема в том, что 50/50. т.е когда я пилил сложную логику на сиквеле, мне остро не хватало встроенного туда нормального функционального языка.
Edited 2013-02-06 12:11 (UTC)

[identity profile] metaclass.livejournal.com 2013-02-06 12:12 pm (UTC)(link)
джоины можно и в СУБД сделать, перед тем как передать результат в функциональщину.
Кроме того - джоины в 90% случаев - это ссылки на справочник, "подпишем ка этот аналитический код".

(no subject)

[identity profile] dmzlj.livejournal.com - 2013-02-06 12:14 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:16 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2013-02-06 12:27 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:33 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2013-02-06 12:38 (UTC) - Expand

(no subject)

[identity profile] swizard.livejournal.com - 2013-02-06 14:02 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 14:12 (UTC) - Expand

(no subject)

[identity profile] tonsky.livejournal.com - 2013-02-07 05:28 (UTC) - Expand

(no subject)

[identity profile] swizard.livejournal.com - 2013-02-07 10:32 (UTC) - Expand

(no subject)

[identity profile] tonsky.livejournal.com - 2013-02-08 10:14 (UTC) - Expand

(no subject)

[identity profile] dmzlj.livejournal.com - 2013-02-06 12:16 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:22 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 12:19 (UTC) - Expand

(no subject)

[identity profile] geniepro.livejournal.com - 2013-02-06 12:27 (UTC) - Expand

(no subject)

[identity profile] ko-bx.livejournal.com - 2013-02-06 13:44 (UTC) - Expand

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

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

(no subject)

[identity profile] vp.livejournal.com - 2013-02-06 12:14 (UTC) - Expand

(no subject)

[identity profile] theiced.livejournal.com - 2013-02-07 03:51 (UTC) - Expand
(deleted comment)

[identity profile] volodymir-k.livejournal.com 2013-02-06 01:07 pm (UTC)(link)
Потрафить самовосхвалению, мол какой я умный -- основываясь на искажённой картине модности трендов.
(deleted comment)

(no subject)

[identity profile] volodymir-k.livejournal.com - 2013-02-06 13:15 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 13:51 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 14:00 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 14:19 (UTC) - Expand

[identity profile] volodymir-k.livejournal.com 2013-02-06 01:06 pm (UTC)(link)
Вообще-то эта идея -- начала реляционной теории, есть учебник БГУ 1986 что ли года, у нас был одним из 5 рекомендованных книг по курсу программирования и СУБД.

То есть вопрос такой: сколько денег в час попросит студент, который даже осилил прочитать учебники?
Зависит от его опыта, конечно, и ситуации. Найти учебник, найти там главу, почитать... можно в интернете поискать наверное.

[identity profile] metaclass.livejournal.com 2013-02-06 01:21 pm (UTC)(link)
Осилил прочитать, понять и сопоставить с решаемыми задачами. Много попросит :)

[identity profile] demonim.livejournal.com 2013-02-06 01:51 pm (UTC)(link)
Очень интересно, что какой смысл вкладывается в эти два слова "бухгалтерская отчетность"? Тут походу надо так
"Самоочевидно ли то, что с помощью filter/map/fold можно реализовать 'сферического коня в вакууме' более простым и очевидным образом, чем с помощью select .. where .. group by?"
(deleted comment)

(no subject)

[identity profile] demonim.livejournal.com - 2013-02-06 14:00 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 14:11 (UTC) - Expand

(no subject)

[identity profile] demonim.livejournal.com - 2013-02-06 14:19 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2013-02-06 14:21 (UTC) - Expand

(no subject)

[identity profile] demonim.livejournal.com - 2013-02-06 14:25 (UTC) - Expand

(no subject)

[identity profile] falcrum.livejournal.com - 2013-02-06 16:42 (UTC) - Expand

(no subject)

[identity profile] dlebedev8.livejournal.com - 2013-02-07 02:48 (UTC) - Expand

[identity profile] kometa-zxc.livejournal.com 2013-02-06 02:00 pm (UTC)(link)
эммм, а ты зачем?

[identity profile] metaclass.livejournal.com 2013-02-06 02:13 pm (UTC)(link)
Одного меня мало.

[identity profile] dnnx.livejournal.com 2013-02-06 02:46 pm (UTC)(link)
33$

[identity profile] black-angel-by.livejournal.com 2013-02-06 05:01 pm (UTC)(link)
42 ответ на всё ! :)

[identity profile] dlebedev8.livejournal.com 2013-02-07 02:35 am (UTC)(link)
Самоочевидно ли то, что с помощью filter/map/fold можно реализовать бухгалтерскую отчетность более простым и очевидным образом, чем с помощью select .. where .. group by?
А с помощью select .. where .. group by можно реализовать бухгалтерскую отчетность? Данные вносить в систему тоже будете через запросы к БД?

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

[identity profile] nicka-startcev.livejournal.com 2013-02-08 08:33 pm (UTC)(link)
давным-давно, обитатели R.O.C на все подобные вопросы отвечали "$50 в час".