@oop_ru

Страница 154 из 785
Sergey
15.03.2017
15:38:16
в php не лечится еще??
в php это пока не самое узкое место)

но JIT там грозятся завести да

но не одним php мир един

Like
15.03.2017
15:47:11
Пора с пыхи сваливать, хех

Google
Evgeniy
15.03.2017
15:47:29
на делфи

?
15.03.2017
15:47:41
?

Like
15.03.2017
15:47:41
перл

Rodion
15.03.2017
15:49:18
на js тогда уж, хех

Like
15.03.2017
15:49:47
Ох не. Я с асинхроностью боролся большую часть времени. Может лучше машинный код угадывать?

Evgeniy
15.03.2017
15:52:51
ага и услугу гадание на машинных кодах, порча, сглаз, утечки памяти

Like
15.03.2017
15:52:59
Вообще круто

Evgeniy
15.03.2017
15:53:20
разыменование указателей

Sergey
15.03.2017
16:46:01
ну и на статической диспетчеризации можно ехать только недалеко

da horsie
15.03.2017
17:00:51
https://www.thoughtworks.com/insights/blog/composition-vs-inheritance-how-choose
очень хорошая статья. даже добавил сюда https://oopru.github.io/

Alexander
15.03.2017
17:02:33
очень хорошая статья. даже добавил сюда https://oopru.github.io/
будьте добры, сделайте кто-нибудь перевод на русский для чучмеков вроде меня ?

Google
da horsie
15.03.2017
17:20:13
стыдно должно быть, товарищ

f4rt~
15.03.2017
17:28:02
Пол часика до старта, собираемся ребятки

?
15.03.2017
17:28:52
Ждем

f4rt~
15.03.2017
18:49:59
@f3ath не хочешь сам попробовать в таком же формате?

Paul
16.03.2017
04:17:25
это путь слабых духом
Здравых разумом

ну и на статической диспетчеризации можно ехать только недалеко
Чего это вдруг? Динамическая реально нужна крайне редко, при этом мешает оптимизациям + накладывает ограничения: нельзя, скажем, иметь шаблонный/дженерик виртуальный метод (это касается компилируемых япов, в жабе и шарпах же будет генерироваться в рантайме)

Конечно, если у тебя система на полиморфизме подтипов (то есть используется наследование), то выбора у тебя нет и ты должен страдать.

Hell
16.03.2017
07:40:26
имеется класс, представляющий "активную запись"

имплементируются "виртуальные сеттеры"

они не имеют реального отборажения в базе

используются только совместно

в базе хранится только "вычисленное" значение

setSocialUserId / setProvider ('facebook', 'google') -> 'fb_11223456'

как называется этот паттерн?

ах да, модель активная, может себя сохранять

ваше молчание как бе говорит нам, что нужно физическое поле устанавлвать в перегруженном save

Google
Sergey
16.03.2017
08:33:07
"виртуальные проперти"

ну то есть, я хз че ты хочешь услышать

Paul
16.03.2017
08:34:54
ну с шаблонами все понятно, а вот дженерики, им же динамическая диспетчеризация не мешает и даже наоборот
Одновременно дженерик и виртуальный метод ты можешь сделать только имея компилятор в рантайме

Что очевидно

Sergey
16.03.2017
08:36:24
не совсем, та же java если мне память не изменяет таблички для диспетчеризации построить то может, просто только в рантайме будет выбирать кого дергать

либо я тебя не понял

Paul
16.03.2017
08:38:11
Нет, не понял. Если у тебя есть, условно class A { <T>(t: T) {...} } То как по-твоему должен выглядеть vtable для A?

Ответ: никак, ты не можешь оставить просто в vtable указатель на функцию, потому что функции ещё нет.

Sergey
16.03.2017
08:40:29
да, понял

вот только

если мы говорим про дженерики в java/c# то там всегда будет только динамическая диспетчеризация

Sergey
16.03.2017
08:41:22
а если ты тот же код запилишь в C++ то разве он не втупую скомпилит все варианты и составит таблички?

Paul
16.03.2017
08:41:24
С динамической диспетчеризацией дженерики не нужны

Sergey
16.03.2017
08:42:05
ну это уже не дженерики
ну в плюсах только темплейты

Сергей
16.03.2017
08:42:20
так их и нет смысла приводить в пример

Sergey
16.03.2017
08:43:14
ну то есть насколько я знаю дженерики возможны только благодаря динамической диспетчеризации

Paul
16.03.2017
08:43:38
Сравни: public <T> void foo(T t) {..} и public void foo(T t) {..}

Google
Paul
16.03.2017
08:43:47
Дженерики и шаблоны это именно про статическую диспетчеризацию

Sergey
16.03.2017
08:44:03
Нет, это концептуально разные вещи
что для тебя динамическая дистпетчеризация?

Paul
16.03.2017
08:44:31
что для тебя динамическая дистпетчеризация?
То же, что для всех: выбор вызываемой функции в рантайме

Admin
ERROR: S client not available

Sergey
16.03.2017
08:44:52
Дженерики и шаблоны это именно про статическую диспетчеризацию
как ты сделаешь дженерики на статической диспетчеризации?

у тебя ж как ты и сказал еще нет функции на которую ссылаться

Paul
16.03.2017
08:45:06
Т.е. мультиметоды и виртуальные таблицы

Sergey
16.03.2017
08:45:30
это темплейты

Paul
16.03.2017
08:45:34
Во время мономорфизации получится по функции на каждый тип используемый

Sergey
16.03.2017
08:45:46
так делают темплейты в плюсах

Сергей
16.03.2017
08:45:49
Динамическая диспетчеризация это механизм, на основании которого принимается решение на вызов того или иного переопределенного метода во время выполнения, а не компиляции.

Paul
16.03.2017
08:46:18
Дженерики просто ограниченные темплейты, обычно с ограничениями, темплейт же просто макрос

Это мультиметоды и виртуальные таблицы методов. Всё.

Sergey
16.03.2017
08:47:18
Это мультиметоды и виртуальные таблицы методов. Всё.
то есть тебя конкретно раздражает необходимость формировать функции под каждый тип в рантайме

Paul
16.03.2017
08:47:20
Перегрузка функций и дженерики/шаблоны это уже статическая диспетчеризация

Поэтому в C# и Java можно

Google
Paul
16.03.2017
08:47:45
а в крестах нельзя

Сергей
16.03.2017
08:48:12
Бля

Джене́рик[1] (англ. generic drug) — лекарственное средство, продающееся под международным непатентованным названием либо под патентованным названием, отличающимся от фирменного названия разработчика препарата[2].

Sergey
16.03.2017
08:48:20
Ну, тебе компилятор нужен в рантайме
ну я бы сказал что мне просто нужен рантайм который меняет код

не могу сказать что это компилятор

Paul
16.03.2017
08:49:12
ну я бы сказал что мне просто нужен рантайм который меняет код
Нет, именно компилятор, чтобы во время вызова a.foo(10); создать функцию foo<Integer> класса A (или его наследника, ибо виртуальный метод)

Sergey
16.03.2017
08:49:12
но тебя я понял

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

Paul
16.03.2017
08:51:25
Что значит какую? У тебя код мономорфизируется под конкретный тип

Sergey
16.03.2017
08:51:33
да это то понятно

Paul
16.03.2017
08:51:37
Со всеми оптимизациями

Sergey
16.03.2017
08:51:50
началось все с "далеко без динамической диспетчеризации ты не уедешь"

Paul
16.03.2017
08:52:20
99% случаях она не нужна, если не полиморфизм подтипов.

Если у тебя всё на наследовании, то ты обречён, да

Sergey
16.03.2017
08:52:37
ты показал что дженерики в некоторых языках реализованы без участия динамической диспетчеризации

Paul
16.03.2017
08:52:47
Во всех

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