Sergey
тут другое - ты хочешь декларативно
Anonymous
нет
Anonymous
ну смотри, к чему сводится ооп? что ты лазишь в каком то лесе/
Anonymous
я не знаю как ты пишешь без наследования даже и что это за ооп такое
Sergey
> что ты лазишь в каком то лесе/ нет)
Ale
ну которое вот в смолтолке придумали
Sergey
да, смолток)
Sergey
до смолтока и термина такого как ООП небыло
Michael
Смолтолк заебок
Anonymous
олдфаги
Sergey
по сути... классы это несколько другое. Это попытка добавить скоупы в языки, где нет скоупов
Sergey
симулы - это классы
Sergey
страуступ жеж до Си на симуле писал, потому свой C with classes замутил
Sergey
а вот Джобс и его команда когда увидили смолток стырили его
Ale
потому что много will work for food было)
Anonymous
ты расскажи мне и людям, как жить без классов в ооп, если не сложно конечно
Ale
как в js жили
Дима
ООП без наследования называется программированием с помощью абстрактных типов данных
Ale
ну не поверишь, вот до es6
Sergey
@hihideaki ты помнишь времена, когда в js небыло классов?)
Anonymous
как в js жили
процедурки?
Ale
что лол
Anonymous
прототипы, это же тоже классы
Sergey
модуль - объект. То что он экспоузит - его интерфейс. То чно внутри - состояние инкапсулированное и детали
Anonymous
наследование
Sergey
наследование не нужно)
Ale
наследование механизм обмана системы типов
Ale
епт
Sergey
в динамически то типизированном языке
Дима
Наследование — это механизм, чтобы ломать инкапсуляцию
Ale
это все протектед
Дима
в динамически то типизированном языке
Потому что у нас прототипы
Ale
без него норм
Sergey
@ZeroBias а какая разница? вон erlang - там тупо функции но он крайне близок к тому что Алан Кей закладывал в термин ООП
Sergey
@ZeroBias вообще нет. protected это механизм для ломания инкапсуляции. Его добавили сильно позже потому что "процедурным сишникам" так захотелось
Anonymous
наследование механизм обмана системы типов
не понимаю, как это мешает прототипному наследованию быть
Sergey
@hihideaki а это не мешает. Прототипное наследование намного более гибкое
Sergey
@ZeroBias ну так в наследовании только protected ломает инкапсуляцию и больше ничего
Ale
+
Sergey
наследование - это просто возможность объявлять новые типы
Sergey
и если бы все соблюдали принцип подстановки старушки Барбары, было бы норм
Sergey
и если бы extends убрали
Sergey
95% задач где использут extends можно легко и просто заменить на implements и композицию.
Ale
тогда бы сделали плагин для бабеля еще один
Ale
который добавляет(
Дима
и если бы extends убрали
Ну так не пользуйся им, какие проблемы)
Sergey
ну это тупые необразованные массы
Sergey
так я и не использую
Sergey
почти
Ale
инфраструктура ж(
Sergey
точно так же как в твоем функциональном коде иногда появляется стэйт
Sergey
у меня иногда появляются наследники классов
Anonymous
вот ты создаешь приложение у тебя две сущности, у них 90% похожего. без наследования тебе придется отказываться от чего-то, вероятно полезного.
Ale
композиция?
Sergey
композиция)
Ale
и интрефейсы
Sergey
просто с синтаксисом той же джавы это не удобно
Sergey
тут соглашусь
Sergey
вообще extends придумали что бы экономить память
Sergey
> State monad норм 👍 я их называю разновидностью объектов)
Ale
State monad норм 👍
ну ты же ей не каждую свою функцию обмазываешь)
Sergey
вообще... был такой язык... lisp. Функциональнее некуда. Но с практической точки зрения туда добавили возможность процедурщину делать. Тупо потому что "памяти не хватит" и с внешним миром надо как-то работать. Процедурное взаимодействие с внешним миром и функционально чистая логика
Sergey
@hihideaki нет, композиция позволяет тебе DRYить код
Дима
Anonymous
подскажи где почитать про композицию
Anonymous
и как гуглить такое
Anonymous
чтобы в точку
Sergey
@hihideaki я говорю о 70-х, вспомни сколько килобайт памяти в те времена стоил?)
igo
крутой язык 😏
Sergey
@xamgore без синтаксиса!
Ale
подскажи где почитать про композицию
https://en.wikipedia.org/wiki/Composition_over_inheritance
Дима
FORTH
Sergey
www.javaworld.com/article/2073649/core-java/why-extends-is-evil.html