
andretshurotshka?❄️кде
01.05.2018
20:09:27

Sergey
01.05.2018
20:09:41

Mykola
01.05.2018
20:09:46
но люди же спрашивают, они явно не имеют ввиду твое крутое ооп)

andretshurotshka?❄️кде
01.05.2018
20:09:54

Google

Sergey
01.05.2018
20:10:29
лол)
сча ты меня начнешь учить что "потечет же"

andretshurotshka?❄️кде
01.05.2018
20:10:41
заменили на костыль получается

Sergey
01.05.2018
20:10:57
ну weakmap он жеж не совсем для этого вводился
например на нем оч удачно можно запилить identity map
и мне оч не хватает возможности заюзать оный в php внутрях ORM какой
(хотя всегда можно поставить экстеншен)

Mykola
01.05.2018
20:12:24
я не знаю о каком ты полиморфизме в жавасрипте
что строку можно к интеджеру плюсовать? :)

Sergey
01.05.2018
20:13:36

Mykola
01.05.2018
20:14:17
вплоть до нарушения полиморфизма

Sergey
01.05.2018
20:14:18
ну и да, лямбды всякие и всякие приколы оттуда же вроде каррирования и partial apply сильно позволяют упростить код

Mykola
01.05.2018
20:14:21
на раздватри

Sergey
01.05.2018
20:14:29

Google

Mykola
01.05.2018
20:14:42
лямбды и каррирования - это не про ооп
в каком бы смысле ты его ни понимал)

Sergey
01.05.2018
20:15:00
решил что термин ООП бесполезен - так прекращай его использовать либо давай ссылку на свое определение
полиморфизм тоже не про ООП)
как и инкапсуляция
как и наследование
и что?

Mykola
01.05.2018
20:16:14
когда люди спрашивают типа "хорош ли ооп в жаваскрипте", то явно имеется ввиду классо-ориентированное программирование, а не выдержки из ФП

andretshurotshka?❄️кде
01.05.2018
20:16:31
КОП

Sergey
01.05.2018
20:16:33

Mykola
01.05.2018
20:17:21
я почитал, но ты же о внутренностях

Sergey
01.05.2018
20:17:34
а не о внутренностях.

Mykola
01.05.2018
20:18:10
так в чем суть ооп? классо-ориентированного ооп

Sergey
01.05.2018
20:18:28
(мы же признаем что статика не имеет отношения к ооп? даже с классами))

Mykola
01.05.2018
20:19:04
хз с чего ты это взял

Sergey
01.05.2018
20:19:30
хз с чего ты это взял
ну как же, даже в плюсах статика не сразу вроде появилась.... а появилась как кастыль что бы статическую диспетчеризацию мутить и экономить такты

Mykola
01.05.2018
20:20:04
классы - это такой способ построить систему типов, реализация на плюсах или там на жаве - это второстепенно

Google

Sergey
01.05.2018
20:20:39
типы это не про ооп

Mykola
01.05.2018
20:21:13
ну наследование ты куда в свои обьекты засунешь?

Sergey
01.05.2018
20:21:33
есть же слотовое наследование, есть прототипное

Aleh
01.05.2018
20:21:46

Sergey
01.05.2018
20:22:15
в python к слову тоже

Mykola
01.05.2018
20:22:32
и в пхп, не переживайте)

Sergey
01.05.2018
20:22:41

Aleh
01.05.2018
20:22:46

Sergey
01.05.2018
20:23:20
ну мол объясни мне что такое наследование, для чего оно нужно, как должно работать. Представь что я понятия не имею что там как в этих ваших джавах
объясни для чего придумали эту концепцию?
даже если мы говорим об ООП как об инстансах классов - мы всеравно наблюдаем здоровенный семантический разрыв

Mykola
01.05.2018
20:24:54
дык просто же: наследование - это способ достичь полиморфного поведения малой кровью

Sergey
01.05.2018
20:25:05

Mykola
01.05.2018
20:25:33
самой малой, которой это можно сделать, если тип у тебя определяется набором пропертей

Sergey
01.05.2018
20:25:49
забудь о них на секундочку

Google

Sergey
01.05.2018
20:26:05
просто забудь.

Mykola
01.05.2018
20:26:26
забудь про физику и обьясни мне почему яблоко падает ньютону на голову? :)
вся суть классов как раз в том, что это типы

Sergey
01.05.2018
20:27:02
ну или объясни что ты с этими типами так трясешься?
так
давай с самого начала

Mykola
01.05.2018
20:27:21
ну смари, на пальцах и с самого начала

Sergey
01.05.2018
20:27:22
почему у нас изначально в 67-ом или в каком там году появились классы?
зачем компилятору нужно было знать типы?

Mykola
01.05.2018
20:27:50
давай не будем в историю, потому что там много чего творилось, и люди не боги

Sergey
01.05.2018
20:27:55
и как это относится к вопросу что у тебя был килобайт оперативки и это было охерительно?

andretshurotshka?❄️кде
01.05.2018
20:28:17
лол

Sergey
01.05.2018
20:29:19

Mykola
01.05.2018
20:30:00
погоди, то есть ты хочешь свести современное программирование к килобайту оперативки?
это очень грустно, как история про присвоить и равно

Sergey
01.05.2018
20:30:24
и подходы которые популяризировались во времена когда 640 килобайт оперативки хватит всем

Mykola
01.05.2018
20:30:42
тогда давай еще раньше, к тьюрингу

Sergey
01.05.2018
20:31:08

Mykola
01.05.2018
20:31:33
тыж знаешь историю про присвоение := и равно =, и почему в сях равно вместо присвоения?

Google

Mykola
01.05.2018
20:31:38
хотя это днище
и в других языках потом точно так же, потому что все привыкли
потому что память экономили
а не от большого ума)

Sergey
01.05.2018
20:32:28
именно так


Max
01.05.2018
20:33:04
ну мол объясни мне что такое наследование, для чего оно нужно, как должно работать. Представь что я понятия не имею что там как в этих ваших джавах
можно я попробую объяснить. Наследование нужно для того чтобы оптимизировать логику декораторов которые в случае композиции будут создавать отдельные объекты в рантайме. Допустим у нас есть класс DBConnection объект которого представляет собой соединение с базой данных. Применяя композицию обычно создают отдельный класс Repository который представляет собой crud-операции с таблицами базы данных, который в конструкторе создает new DBConnection(...) и использует его для взаимодействия c базой данных. А вот применяя наследование вместо композиции класс Repository отнаследуется от DBConnection и добавит нужный код работы с crud просто добавив нужные методы. И здесь принципиальное отличие — в случае композиции при создании объекта Repository будет создано два объекта в рантайме (сам Repository и объект DBConnection) а применяя наследование — только один объект. А в случае если у на будет цепочка из 10 различных сущностей которые что-то добавляют и переопределяют то с композицией это уже 10 рантайм-объектов а с наследованием только один вне зависимости от длины этой цепочки (да хоть тысячу сущностей). Или другой пример - хокки реакта. Если их делать через композицию то список из тысячи компонентов на которого навешаны 10 хокков выльется в создании 10 тысяч объектов при каждом рендере и потом реакт будет diff-ать 10 тысяч компонентов. А с наследованием - будет только тысяча объектов и сравнивать реакту нужно будет только тысячу компонентов. В этом и суть наследования — оно позволяет вынести в compile-time много работы экономя cpu-циклы и память


Sergey
01.05.2018
20:33:40
хотя изначальный посыл был именно в этом - экономия пары байт на управляющих структурах
> Наследование нужно для того чтобы оптимизировать логику декораторов которые в случае композиции будут создавать отдельные объекты в рантайме.
давай рассмотрим какой-нибудь пример и посчитаем сколько у нас памяти отъест композиция и сколько мы сможем ужать в наследовании


Mykola
01.05.2018
20:35:19
реализация наследования - это тоже не его суть, зачем нам знать как оно внутри?

Sergey
01.05.2018
20:35:57

Bohdan
01.05.2018
20:35:58
потому, что его делали не для какой - то "сути", а я решения проблемы

Sergey
01.05.2018
20:36:15

Bohdan
01.05.2018
20:36:27
то есть, не сначала придумали, а потом сделали, а наоборот
ну это я утрирую
но общая идея, думаю, ясна

Sergey
01.05.2018
20:37:04

Bohdan
01.05.2018
20:37:19
ну да, можно уходить дальше в историю

Sergey
01.05.2018
20:37:27
Алан Кей писал что наследование на момент создания смолтока было для него непонятной и странной штукой и он от него отказался

Bohdan
01.05.2018
20:37:35
может концепты были и раньше (наверняка)
но success story наверняка сложился типа "давайте тут экономить будем - а смотрите, получилось похоже"

Sergey
01.05.2018
20:38:25
http://heim.ifi.uio.no/~steinkr/papers/HiNC1-webversion-simula.pdf