@oop_ru

Страница 138 из 785
Aleh
03.03.2017
20:00:03
ну да

вот это первый шаг к позднему связыванию

а потом Кей решил

а что если в рантайме ебануть)

Google
Sergey
03.03.2017
20:00:33
ну подозреваю что как-то так и было

точнее как

Aleh
03.03.2017
20:00:36
хотя может это еще от симулы

надо почитать

Sergey
03.03.2017
20:00:44
Кей хотел язык который позволяет обновлять систему не выключая ее

"микросервисы"

может наоборот надо пойти

ну мол смотри

паскать - компилируемый язык

ты не можешь ничего в рантайме просто так подменить, максимум через какой-то медиатор который будет проксировать вызовы на нужную реализацию

даже взять ту же java

там у тебя типа есть late binding

но тебе все же нельзя просто взять и подменить объект-зависимость

Google
Sergey
03.03.2017
20:04:42
максимум через промежуточную проксю которая будет проксировать сообщения другим объектам

точно так же и импорты модулей

импортировал - юзай

надо что-то другое - значит надо перезагрузить модули для которых надо подменить зависимости

или я не прав?

Aleh
03.03.2017
20:06:09
ну не совсем улавливаю

Sergey
03.03.2017
20:06:22
ну тип late binding это про диспетчиризацию

кому адресовать сообщение

в языках типа js, python, java...

ты не можешь взять и переодресовать все сообщения для foo на bar

"подменить" foo на bar что бы никто не заметил

что бы это сделать надо "перезагрузить" все модули/объекты которые юзают foo и новые инстансы уже будут юзать bar

> OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme LateBinding of all things.

http://wiki.c2.com/?AlanKaysDefinitionOfObjectOriented

> C++, of course, does early binding everywhere it can--up to the point of performing StaticDispatch as a default (you have to ask for DynamicDispatch with the "virtual" keyword when you want it. [and even that, as in many other languages like Java, is only single dynamic dispatch. If you want "late binding everywhere," you need a much more powerful dispatch system, e.g. CommonLispObjectSystem's generics]).

http://wiki.c2.com/?SmalltalkLateBinding

последняя ссылка оч интересная

как по мне

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

подменяешь ты модули или подменяешь ты зависимости через фабрики/сервис локатор/контейнер зависимости

Google
Sergey
03.03.2017
20:21:00
результат остается такой же

если у тебя есть модуль/объект который импортировал/заинджектил в себя зависимость

что бы ее подменить тебе надо реинициализировать все зависимые штуки

а это сводит на нет все различие

ну а late binding по хорошему - duck typing

так что когда у тебя есть модули - у тебя автоматически есть IoC

что-то очень похожее на сервис локатор

более того

у тебя еще и сегрегация интерфейсов модулей есть

import {foo, bar} from 'module';

@mkusher что думаешь?

Aleh
03.03.2017
20:24:45
еще думаю)

da horsie
03.03.2017
20:29:42
поясните мне за double dispatch. допустим иерархии A и B связываются через DD. правильно я понимаю, что double он потому что два раза происходит маршрутизация вызова: первый раз это от интерфейса к конкретному классу в иерархии A, а второй раз к конкретному методу из интерфейса B?

смысл названия хочу понять

Sergey
03.03.2017
20:32:14
именно так

da horsie
03.03.2017
20:32:25
Спасибо

Sergey
03.03.2017
20:32:29
хотя погоди

> правильно я понимаю, что double он потому что два раза происходит маршрутизация вызова тут правильно

а дальше - хз)

хотя походу ты прав

Google
da horsie
03.03.2017
20:34:33
"К конкретному методу" я имею в виду к одному из набора однотипных методов

Sergey
03.03.2017
20:36:21
да да

da horsie
03.03.2017
20:36:29
Спасибо

Sergey
03.03.2017
20:38:34
https://www.cs.cmu.edu/~charlie/courses/15-214/2014-fall/slides/25-history-oo.pdf

вот еще интересная штука

Hell
03.03.2017
21:14:04
symfony! chat I want symfony chat!

Aleh
04.03.2017
11:42:48
что-то очень похожее на сервис локатор
Да по сути это сервис локатор со всеми глобальными привязками к пространству имен

Admin
ERROR: S client not available

Sergey
04.03.2017
12:10:39
А что с сегрегацией?)
ну ты юзаешь только то из модуля что юзаешь. Хотя хз

Aleh
04.03.2017
12:13:24
а, нуу, может быть

окей, пусть так A: index glueWithB B: index вот в этом glueWithB, в случае модулей, мы прямо сделаем import B from "B" и там делаем нужную нам обертку

Sergey
04.03.2017
12:20:43
немного не понимаю что есть glue

фасад над модулями?

Aleh
04.03.2017
12:21:00
ну типа

Sergey
04.03.2017
12:21:01
или модуль выше

Aleh
04.03.2017
12:21:57
не, условно говоря A и B два модуля

в пыхе\жаве ж принято было бы A: index NeededDependency // here goes an interface B: index GlueForAandBImplementingInterface

Sergey
04.03.2017
12:23:02
эээээм

у тебя есть два модуля, должен быть третий

Google
Sergey
04.03.2017
12:23:12
который их юзает

Aleh
04.03.2017
12:23:36
окей, да

Sergey
04.03.2017
12:23:42
ну то есть... никакого клея, просто модуль. То что внутри нас не интересует

ну мол как по мне если не придумывать клеи и т.д. и воспринимать просто как элементы декомпозиции - то проще воспринимать

есть например модуль "платежки" и есть модуль "заказы". И есть модуль "сделать заказ и оплатить"

Aleh
04.03.2017
13:05:31
не уверен что мне не нравится в этих пирамидках, хм

Sergey
04.03.2017
13:18:40
неявное управление зависимостями?)

хз

Aleh
04.03.2017
14:13:26
Проблема кажется будет с тем, что это будет стимулировать вносить изменения прямо в модуль, а не создавать маленький модуль и заворачивать

Т.е. ситуация как использование конкретных классов и ioc framework с autowire

Нет абстракций)

Sergey
04.03.2017
14:31:42
Т.е. ситуация как использование конкретных классов и ioc framework с autowire
1. удобно 2. и без autowire мало интерфейсов используют

ну то есть проблема не с тем что autowire поощряет что-то там

а в том что люди не понимаю зачем это надо)

Aleh
04.03.2017
14:32:17
Проблема не в autowire, а то что теперь интерфейсов нет совсем

Sergey
04.03.2017
14:32:24
это как "автокомплит поощряет неадекватные названия"

> а то что теперь интерфейсов нет совсем у меня есть и я оооочень активно юзаю autowire

Aleh
04.03.2017
14:32:52
Остались только конкретные классы

Так а в модулях тогда где они?

Сам модуль не интерфейс, это уже конкретная реализация

Страница 138 из 785