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