Vladislav
Ну типо вот у меня 150 процедур с зависимой логикой
Vladislav
Чо делать
Vladislav
(Типичный представитель из зала)
Nikolay
Но как вы работаете с ними! На словах то все хорошо звучит
Ну делаешь функцию, которая ходит в базу, передаёшь её аргументом в другую функцию, в другой функции уже вызываешь её, и передаёшь результат вывода в третью функцию, которая этот результат обрабатывает
Nikolay
Как-то так
Nikolay
Зависит
Анна
Pavel
Чо чо? Гле почитать?
https://en.wikipedia.org/wiki/Clean_(programming_language) интересная штука была. круче хаскеля. но так как в отличии от хаскеля не спонсировалась ms то развития не получила
Nikolay
Обрабатывающая функция получается полностью чистая, функция, куда передаёшь функцию, которая в базу ходит будет получистой, её тоже легко тестить можно, подменяя функцию, которая ходит в базу своей
Nikolay
Обрабатывающая чистая
Vladislav
Все что ее трогает уже не чистое
Nikolay
> в третью функцию, которая этот результат обрабатывает
x
Все что ее трогает уже не чистое
В чистую функцию попадает уже результат
Pavel
В чистую функцию попадает уже результат
и что? ключевой вопрос с базой кто работает. а что и куда попадает потом уже не важно
x
и что? ключевой вопрос с базой кто работает. а что и куда попадает потом уже не важно
В смысле не важно? С базой работают края системы, и кормят результатами своей работы чистое ядро. Края нечистые, неудобно юнит тестируются через моки и прочее, а ядро с бизнеслогикой чисто и удобно
x
Суть фп минимизировать код который грязный и максимизировать который чистый
x
100% чистоты быть не может по определению
x
Но к ней надо идти
Pavel
Суть фп минимизировать код который грязный и максимизировать который чистый
новое определение фп? я уже давал определение фп от хаскелистов
x
Я не даю определения фп.
Pavel
В смысле не важно? С базой работают края системы, и кормят результатами своей работы чистое ядро. Края нечистые, неудобно юнит тестируются через моки и прочее, а ядро с бизнеслогикой чисто и удобно
ну-ну. для клина как раз семлп есть. ну был, ща не знаю. нормальный семпл, dx игрушка полноценная - 2d платформер. очень показательно во что выливается эта теоретическая бадяга на практике
x
Для геймдева в основном применяется data oriented programming, не functional
x
Насколько я знаю
Pavel
неважно. внешний мир побочных эффектов одинаков, что для консоли, что для дх драйверов, что для базы данных.
Nikolay
Представь себя интровертом
Pavel
он просто есть и с ним приходится работать, таща его стейт через все приложение
Nikolay
Представь себя интровертом
Ты не должен общаться с внешним миром напрямую
Pavel
Представь себя интровертом
тут не надо ниче представлять. тут достаточно посмотреть упомянутые исходники что б осознать что это тупиковая ветвь
Nikolay
Nikolay
Так работает перемотка в играх, например
Pavel
какое отношение перемотка имеет к стейту который может меняться независимо от пользователя?
Nikolay
Если ты поменяешь стейт, ты не сможешь откатиться назад
Nikolay
Грубо говоря, ты вызываешь функцию getCurrentState, она рассчитывает стейт для тебя
Nikolay
И ты уже отображаешь его
Nikolay
Щас точно не помню, но вроде react/redux так и работает
x
для бд и игр? это как ?
Про бд давно уже известно что update и delete не нужны, информация слишком ценна чтобы с ней обращаться таким образом а носители довольно дешевы. А про игры ещё раз повторюсь, что возможно там фп и не слишком выигрышная стратегия. Особенно в платформерах. А вот в стратежках каких пошаговых так почему бы и нет
Pavel
Про бд давно уже известно что update и delete не нужны, информация слишком ценна чтобы с ней обращаться таким образом а носители довольно дешевы. А про игры ещё раз повторюсь, что возможно там фп и не слишком выигрышная стратегия. Особенно в платформерах. А вот в стратежках каких пошаговых так почему бы и нет
всегда нравилось читать это утверждение что "там носители дешевы и пр".. для бухгалтерии магазинчика бабы веры оно так и есть. а как только дело доходит до систем с лямом активных пользовтелей и выше (телекомы всякие или mmorg) так кол-во желающих повторять эту мантру сразу стремится к 0. про игры еще раз. неважен тип игры. важно что взаимодействие с пользователем тащится практически по всей программе
x
А баба вера как удаляла так и удаляет записи ) ей как раз пофигу
Pavel
А что если я скажу что «системы с миллионом активных пользователей» как раз первые и перешли на новую модель «ничего не удаляем и не меняем»? И получили гиганский профит в виде огромных объёмов протеганых данных для обучения ИИ? Которые стоят бешеных денег теперь
что б так говорить надо работать в телекоме. ты работаешь в телекоме? а то на заборе много что написано и рассказывать тоже можно много что. но до сих пор телекомы работают как то вот с апдейтом твоего баланса в базе на счете после каждого звонка как ни странно.
x
Ну ты же понимаешь что это не апдейт? А инсерт новой записи о каждом звонке?
Pavel
я про баланс а не звонок. ты точно в телекоме не работаешь
x
Конечно нет ) а что тут специфичного именно для телекома?
Pavel
объемы информации, время отклика и толщина потока. короче если ты будешь в приличном обществе рассказывать про компании которы все хранят на тобой будут смеятся (не обязательно вслух). все хранить себе может позволить компаний 10 в мире. остальные апдейтят и трут
x
Это всё какое отношение к балансу имеет?
Pavel
у тебя на балансе 10 рублей. ты позвонил - стало 8 . думаешь ктото будет запись создавать? тебе обновят баланс и свободен
x
И как потом мне узнать куда и сколько у меня ушло денег? Если всё что я знаю -«теперь 8»
Pavel
насыпят в логи куда звонил и сколько с тебя сняли. но основной твой баланс всегда будет обновлятся.
Pavel
весь твой стейт будет всегда обновлятся.
Pavel
не только баланс
x
Ты всерьёз полагаешь, что при запросе истории звонков софт полезет в логи sql server-а?
x
Можно вопрос, сколько лет ты «работаешь в телекоме»?
Pavel
во превых не полагаю. во вторах не те логи о которых ты подумал. логи можно лить куда угодно
Pavel
логи они за приделами real-time стейта о тебе. они не обязаны возвращаться мгновенно
x
Ну ясно.
Hog
:(
Ми сорри :( я всегда так себе и коллегам говорю. Написал грязный код - надо руки хорошо вымыть :) и сразу ощущение грязи пройдёт :)
Romɑn
Это Гослинг?
Éminence grise
Офигеть, сколько написали ни о чем 😊
Éminence grise
Во первых, система с миллионом пользователей сильно отличается от системы с миллионом АКТИВНЫХ пользователей.
Éminence grise
Во вторых логи нужны нв разборе полетов, знвчит вопрос их хранения и передачи уходит из системы в обеспечение.
Éminence grise
В третьих - хочется полного контроля - уходить на event source model, но объяснить бизнесу( тем кто платит), что объем дисков и оплата будет рости геометрически.
Éminence grise
А все остальное правда.
Éminence grise
И последнее - в чем разница в этом между fSharp и другими языками. Первый раз скажу, оф топ
Éminence grise
Спасибо! Яблочки с медом все покушали?
Hog
Да я что-то всё больше по пивку :)
Éminence grise
А я и то и другое успел 😊
Éminence grise
Никак не думал, что кото знает, что у на рош-гашана!