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

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

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

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

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

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

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

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-02-06 01:00 pm (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2013-02-06 01:04 pm (UTC) - Expand

(no subject)

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

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2013-02-06 01:16 pm (UTC) - Expand

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

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

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

Date: 2013-02-06 12:13 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Да везде есть decimal (который 64-128 бит целого числа+десятичный scale).

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

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

Prelude> product [1..1000]
402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000


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


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

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

(no subject)

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

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

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

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

(no subject)

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

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2013-02-06 05:33 pm (UTC) - Expand

(no subject)

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

Date: 2013-02-06 03:17 pm (UTC)
From: [identity profile] potan.livejournal.com
На то есть list comprehension. Если о производительности не сильно заботиться.

Date: 2013-02-06 03:21 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Смотря какой join. Если, как у меня - "подписи из справочника", то можно загрузить справочник в мап и доставать из него для каждой записи основной таблицы.
Полноценное декартово произведение не так часто нужно.

Date: 2013-02-07 11:05 am (UTC)
From: [identity profile] si14.livejournal.com
Люди рекомендуют datalog движок из datomic'а, кстати. Он не только с datomic'ом работает, но и с произвольными коллекциями в памяти.

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

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

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

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

Date: 2013-02-06 01:11 pm (UTC)
From: [identity profile] avnik.livejournal.com
да == "типы есть"
А если и нет, то можно написать, один раз.

Кто-то ([livejournal.com profile] sorhed?) рассказывал как биржевой софт писали на хаскеле именно по этой причине, он гарантировал несмешение валют, которые формально все decimal но при этом разные.

Date: 2013-02-06 01:12 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
Я не знаю, что там с биржевым софтом, я знаю, что проблемы с неправильных сложенией рублей с долларами весьма редки, а вот с неправильным сложением рублей с рублями сплошь и рядом.

(no subject)

From: [identity profile] sorhed.livejournal.com - Date: 2013-02-06 01:35 pm (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2013-02-06 01:36 pm (UTC) - Expand

Date: 2013-02-06 02:16 pm (UTC)
From: [identity profile] jdevelop.livejournal.com
биржевой софт - на хаскеле?


это неправда, это не может быть правдой.

(no subject)

From: [identity profile] vshabanov.livejournal.com - Date: 2013-02-06 05:29 pm (UTC) - Expand

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-02-06 05:36 pm (UTC) - Expand

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

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

(no subject)

From: [identity profile] jdevelop.livejournal.com - Date: 2013-02-07 01:28 pm (UTC) - Expand

(no subject)

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

(no subject)

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

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

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

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

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 23rd, 2025 11:40 pm
Powered by Dreamwidth Studios