
Mykola
14.12.2017
23:48:32
мы берем чистую математику и радуемся, а если она не подходим - то пытаемся приблизить нашу программу к математике
а это не работает, так как программа работает с реальным миром
тут нужна обобая математика, темпоральная логика и всякие системы с оракулами

kana
14.12.2017
23:49:22

Google

kana
14.12.2017
23:50:26

Mykola
14.12.2017
23:51:27
в программировании математика и теория типов - тоже особая
и тоже допускает разные трактовки

kana
14.12.2017
23:52:41
ну да, это есть такое, тот же bottom

Mykola
14.12.2017
23:52:57
пример: тайпклассы
если есть клюв - значит птица
но это не всегда работает в реальном мире
еще алан кей пример прекрасный приводил, о ролях

kana
14.12.2017
23:54:16
так, стоп, это просто проблема нейминга

Mykola
14.12.2017
23:54:31
вот все говорят, что нейминга

kana
14.12.2017
23:54:32
есть есть клюв, то ЕстьКлюв

Mykola
14.12.2017
23:54:38
берем утконоса, он не птица
но у него есть клюв

Google

Mykola
14.12.2017
23:54:55
переименуем клюв у утконоса?
чтоб тайпкласы не нарушать

kana
14.12.2017
23:57:28
наличие клюва не является достаточным для определения птицы
мы заранее берем какое-то понятие и формализируем его. То есть мы вводим свое понятие "Птица - есть клюв и летает". И уже делаем тайплкассы на основе этой формализации. И если некий утокон имеет клюв и летает, то он птица, потому что мы так формализовали птицу
есть есть клюв, то ЕстьКлюв

Mykola
14.12.2017
23:57:28

kana
14.12.2017
23:57:58

Mykola
14.12.2017
23:58:16
ну мы же пишем программы постоянно, мы не формализируем один раз
мы меняем наши формализмы в процессе
и по сути нам нужна птица, а не ЕстьКлюв, так как это семантично

kana
15.12.2017
00:02:13
ну это смотря как посмотреть
если есть какая-то операция, которая требует клюв и только клюв. Эта операция не должна требовать на вход птицу, она должна требовать на вход HasКлюв. И утконос сюда подходит вполне
А есть операция, которая требует клюв и крылья. То есть HasКлюв ∩ HasКрылья, и сюда уже не пройдет утконос.
именно так алгебра и работает, мы отнимаем и добавляем по свойству и доказываем всякие теоремы для вещей с некоторыми свойствами, а не для птиц

Mykola
15.12.2017
00:03:34
тогда что именно мы програмируем? :)

kana
15.12.2017
00:03:46
интернет-магазины
я не понял вопрос)

Mykola
15.12.2017
00:04:51
ну мы програмируем некую абстрактную систему, в которой есть непонятные сущности, и что-то с ними происходит, но хрен его знает что
главное чтоб типы сходились
а в задаче стоял вопрос, скажем, накормить птицу... а оказалось, что у нас нет птицы, зато ЕстьКлюв

kana
15.12.2017
00:05:35
не-не, вполне понятно что. Интернет магазины продает продаваемое, покупатели покупают покупаемое.

Mykola
15.12.2017
00:05:55
на пхп их гораздо больше
не будем про то, что они выполняют задачу

Google

Mykola
15.12.2017
00:06:17
будем о программировании
как искусстве)

kana
15.12.2017
00:07:16
но я так и не понял, какое тайпклассы имеет отношение к тому, что мы неверно что-то формализуем
просто я увидел тенденцию в фп все максимально обобщать
а, хм, возможно твой посыл что это все слишком точно

Mykola
15.12.2017
00:10:59
ладно, буду закругляться, но подитожу: мы слишком упоролись в статический подход проектирования систем, и забываем важные вещи касательно действительности:
- программы и формализмы могут создаваться непрерывно, это процесс а не результат
- выполнение программы - это тоже процесс, а не формула
- оба этих процесса связаны, и мы об этом не думаем
- оба эти процесса имеют стохастическую и темпоральную составляющую
вот под это надо специальную математику

kana
15.12.2017
00:13:58
буду пытаться понять эти вещи)

Pavel
15.12.2017
05:56:08
тут есть dotnet'чики из Краснодара?

Victor
15.12.2017
06:58:08
Есть один в сишарп чате

Roman
15.12.2017
07:01:39

Enterpise
15.12.2017
08:35:07
- оба эти процесса имеют стохастическую и темпоральную составляющую
огласите весь список, ожалуйста!

Aleh
15.12.2017
08:38:53

kana
15.12.2017
08:41:49
так весь код работы со значением находится внутри Promise<T>. Я говорю не про то, что код внутри типа промиса, а про то, что наш код какбы помечен эффектом Promise
это совсем не то, про что говорил Бугагенко, я об этом уже писал

Aleh
15.12.2017
08:42:40

Enterpise
15.12.2017
09:22:11

Sergey
15.12.2017
09:25:26

Enterpise
15.12.2017
09:29:07

Sergey
15.12.2017
09:29:20
дочитай а потом комменти

Google

Sergey
15.12.2017
09:29:23
мы уже все это обсудили

Maksim (Ellrion)
15.12.2017
09:31:56
дочитай а потом комменти
А вот в случае с эвентами. Как я могу узнать какие действия происходят во время определенного бизнес процесса (вот с той же регистрацией. как узнать что и вип может добавиться и еще что то, учитывая что эвенты бросаются непонятно где). не затрудняет ли это отладку? и вообще понимание системы?
и еще как быть с транзакциями в такой системе? когда действия вроде независимы и реагируют на эвенты. но при этом они должны пройти транзакцеонно
или я вообще не въехал?)

Sergey
15.12.2017
09:35:07
ну то есть минусы тоже есть, конечно, но большую их часть можно невилировать если с умом подойти к вопросу
если у тебя система не подразумевает каких-то длительных процессов состоящих из кучи логических транзакций (а на самом деле - это большинство систем) - то проблем будет мало


Maksim (Ellrion)
15.12.2017
09:40:38
не приятнее ли например команд бас? так же дает независимость элементам системы
ах ну и еще раз заговорили, нет ли проблем с порядком обработки эвентов?


Sergey
15.12.2017
09:46:17


Maksim (Ellrion)
15.12.2017
09:50:46
я видимо как то себе не так это представляю ибо опираюсь на знакомые мне реализации.
но не похоже ли это на сайд эффекты? вроде произошла регистрация а на самом деле еще куча всего.
и одно дело когда эти сайд эфеекты уровня отправки уведомлений\записей логов и т.п. и другое когда это бизнес процессы

Sergey
15.12.2017
09:52:25

Maksim (Ellrion)
15.12.2017
09:52:52

Sergey
15.12.2017
09:53:14
так а почему не шина?
потому что "хэнделр команды" будет принадлежать одному контексту, а тебе надо с 5-ю что-то сделать
и да, шина команд вообще никому не нужна
ну только если у тебя обработка команд не асинхронна конечно

Maksim (Ellrion)
15.12.2017
09:54:10
короче я понял что я нихуя не понимаю) но спасибо за ответы)

Sergey
15.12.2017
09:55:43
короч если что - меня подтолкнуло к этому проблема того, что "когда все явно - все в каше и это никак не помогает разбираться с бизнес логикой"
когда все на ивентах и не явно - это тоже не удобно

Google

Sergey
15.12.2017
09:56:14
доменные ивенты - это что-то посередине
в пределах одного контекста я стараюсь не использовать ивенты, хотя иногда это удобно

Roman
15.12.2017
09:56:49
Не нативные же юзать

Sergey
15.12.2017
09:57:05
погугли)
штука распространенная

Roman
15.12.2017
09:57:19

Aleh
15.12.2017
09:57:31

Roman
15.12.2017
09:58:09

Sergey
15.12.2017
09:58:16
Медиатор?
медиатор это медиатор, доменные ивенты это доменные ивенты

Roman
15.12.2017
09:58:32

Sergey
15.12.2017
09:58:51
C#
nservicebus значит можешь взять)
https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/domain-events-design-implementation
неужто так сложно погуглить...
тем более как мне кажется эта тема наиболее развита как раз в .net сообществе...

Roman
15.12.2017
09:59:54

Sergey
15.12.2017
10:00:43