@oop_ru

Страница 629 из 785
Sergey
01.05.2018
20:09:41
про инкапсуляцию это замыкание или weakmap?
замыкания конечно, weakmap это кастыли

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
я не знаю о каком ты полиморфизме в жавасрипте
ой да ладно там же внутрях все на late binding и ты можешь в рантайме подменять реализацию с тем же интерфейсом на раз два)

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
ну наследование ты куда в свои обьекты засунешь?
опиши мне как оно должно работать это твое наследование, а мы подумаем

есть же слотовое наследование, есть прототипное

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
дык просто же: наследование - это способ достичь полиморфного поведения малой кровью

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
погоди, то есть ты хочешь свести современное программирование к килобайту оперативки?
я пытаюсь свести современное программирование к каше образованной с учетом ограничений железа 50-ти летней давности

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

хотя изначальный посыл был именно в этом - экономия пары байт на управляющих структурах

> Наследование нужно для того чтобы оптимизировать логику декораторов которые в случае композиции будут создавать отдельные объекты в рантайме. давай рассмотрим какой-нибудь пример и посчитаем сколько у нас памяти отъест композиция и сколько мы сможем ужать в наследовании

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

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