Какими еще к черту формами? Я смотрю у бекендеров совсем крыша поехала, везде его видят. Нет. Браузер это просто программа, не фронтенд, не бекенд, обычная, в данном случае десктопная, программа.
Потому что SOLID придумали в первую очередь для ООП. Как и те самые паттерны от банды четырёх.
Тоже на фанат SOLID и обмазывания всего паттернами, но ООП появился до форса этих вещей, и с ними, или без них, отлично выполняет свои задачи. А когда в языке нет ООП, а задача таки требует ООП, приходиться обмазываться костылями, имитирующими ООП.
Проблема не в том, что я не могу сделать что-то без наследования. Проблема в том, что по мере развития языков необходимость в инструментах ООП отпадала, но саму концепцию ООП продолжают продвигать как серебряную пулю
Нет, никуда не отпала необходимость в ООП, а предложение отказа от ООП, чтобы гига-архитекторы не могли что-то настроить безумное - точно такая же серебренная пуля. Они и в языках без ООП настроят бредовых мега абстракций.
Были гига-монолиты на ООП, теперь мега-микросервисы на Go, размазанные по тоннам нод, потому как так принято.
В последствии его идеи были реализованы в языке Simula.
А с чего такая уверенность, что это его идеи были реализованы в языке Simula, а не Smalltalk их взял из Simula?
По годам выходя языков - все равно так, сначала в Simula реализовали ООП, потом Алан Кэй реализовал свое "True ООП" в Smalltalk, и стал рассказывать что все остальное ООП не трушное. Вот только в народ ушло появившееся ранее ООП из Simula.
По статьям все тоже самое:
Самым значительным практическим результатом работы Алана Кэя в Xerox PARC стало создание языка Smalltalk. Существовавшие в то время языки программирования в основном были ориентированы на решение вычислительных задач. Они обладали необходимыми средствами для работы с символами, но были слишком сложны и не соответствовали проекту Dynabook. Поэтому разработке нового языка был отдан высокий приоритет. Некоторые его идеи были заимствованы из Simula и у Пайперта, который создавал язык Logo на основе работ французского психолога Жана Пиаже.
В википедии тоже самое: Smalltalk вдохновлялся Simula, а не наоборот.
Я как раз и говорю, что о понятие ООП размыто до невозможности. Выше мне пишут, что ООП - это только про инкапсуляцию. В таком случае она есть в любом языке.
Верно, все айти термины, абстрактные до невозможности, но в тоже время можно легко сказать что в C нет ООП, а C++ есть, не погружаясь в формализм.
От отсутствия универсального формального определения - ООП он скамом не становиться.
И да, инкапсуляция в том же C заканчивается на "LINKER ERROR: DUPLICATED SYMBOL".
С появлением дженериков возможность абьюзить interface{} практически исчезла
Никуда не исчезла, просто теперь, еще вчера, крутой код стал не желательной практикой.
А нет никакого решения этой выдуманной задачи, так как нет макросов. Такой код просто невозможно написать, а значит и читать его после мега-макрос-хакера не нужно.
Автор же статьи не удосужился показать пример зачем ему это понадобилось. Зато показал как превратить программу в макросный, компилер специфичный, фарш.
Begin
Class Glyph;
Virtual: Procedure print Is Procedure print;;
Begin
End;
Glyph Class Char (c);
Character c;
Begin
Procedure print;
OutChar(c);
End;
Glyph Class Line (elements);
Ref (Glyph) Array elements;
Begin
Procedure print;
Begin
Integer i;
For i:= 1 Step 1 Until UpperBound (elements, 1) Do
elements (i).print;
OutImage;
End;
End;
Ref (Glyph) rg;
Ref (Glyph) Array rgs (1 : 4);
! Main program;
rgs (1):- New Char ('A');
rgs (2):- New Char ('b');
rgs (3):- New Char ('b');
rgs (4):- New Char ('a');
rg:- New Line (rgs);
rg.print;
End;
Живите теперь с этим фактом "скама на первый ООП" от Алана Кея.
Именно - для определенных задач ООП очень удобен, и когда в языке нет ООП, он становиться не очень хорош для определенных классов задач. Автор зачем-то предлагает все ЯП превратить в языки для крудошлепства. А я вот формошлепство люблю - и мне ООП в языке - нужно.
Я открыл сорцы компилятора go. И он написан на go.
А когда Go перестал поддерживать некоторые принципы ООП?
Как минимум мы имеем инкапсуляцию(модули), полиморфизм(интерфейсы). (И с каждой версией все больше и больше накручивают, дженерики(параметрический полиморфизм), кастомные итераторы(перезагрузка операторов)).
Или для вас ООП язык - этот тот где нельзя просто процедуры без класса писать? Ну тогда, лол, у вас крайне специфическое понимание ООП. В котором ObjectPascal и C++ - не ООП языки.
Какую серебряную пулю я продаю в статье?
ООП — это скам.
А вот условная java как раз пытается это сделать. Потому что всё есть объект
Нет в джаве не все есть объект, есть примитивные типы аля int.
пиши геттер и сеттер на каждое поле своего класса (даже если тебе это не нужно, а такое бывает часто)
Java не заставляет вас писать сеттер и геттер на каждое поле, это правило хорошего тона, для определенного формата кода, не хотите, не пишите, обращайтесь напрямую.
И да - в Go - все есть interface{} - пихай куда угодно, что угодно, если обсыпал interface{}. Строгость отвалилась, ой. А в джаве кста, не выйдет так.
Java и C# - языки своего времени, где отменили "просто функции", да, это сомнительно по итогу оказалось. Параллельно существуют ObjectPascal и C++, где никто "процедурный подход" не отбирал. Да и новые ЯП процедурный подход разрешают.
В противовес, сейчас, есть новые ЯП насильно впихивающие ФП, Супер-Типы, там где не надо, и отнимающие традиционное ООП, где оно было бы удобно. Все это веяние времени не более, от этого ни ФП, ни ООП, не Типы скамом не становятся.
А еще есть GTK/GNOME, где из-за использования языка без ООП - C, программирование похоже на ад. Причем ад и для самих разрабов GNOME, поэтому, по итогу, они в него js встроили (в виде огромного C++ браузерного движка).
Мир не ограничивается REST ручками и перекладыванием джейсонов, смиритесь. Если вы не осилили другие вещи, и не поняли, зачем нужен ООП, то не ваше это, бывает.
Ок, вот пример "зачем нужно ООП" - сорцы компилятора своего любимого языка открой.
Или покажи действительно хороший, "богатый", десктопный GUI на языках без ООП, где все вынужденны реактивщиной обмазываться, от чего интерфейс "пляшет" от любого чиха, и воспринимается как подделка кривая.
В целом, все ровно так же, как когда-то пихали везде ООП, сейчас пихают Анти-ООП, ФП, ECS, DDD, TDD, MVC, DTO и т.д.
Каждый раз одно и тоже, у очередного автора хорошо что-то вышло на новой, для него, парадигме, и он начинает носиться как угорелый, и пропихивать это везде как серебряную пулю.
Да, да, уважаемый автор статьи, ты точно такой же "заряженный" продаван очередной серебрянной пули, не больше.
Какими еще к черту формами? Я смотрю у бекендеров совсем крыша поехала, везде его видят. Нет. Браузер это просто программа, не фронтенд, не бекенд, обычная, в данном случае десктопная, программа.
Ваш браузер тоже на стороне бекенда?
В мире бекенда так да, но сорян, ваш девайс спроектирован в десктопном приложении.
Когда я изучал ООП, то в книжке был вполне жизненный пример TComponent <- TControl <- TButton, не повезло с книжкой вам, бывает.
А уж в ФП книжках, абстракция на абстракции чаще встречается.
Тоже на фанат SOLID и обмазывания всего паттернами, но ООП появился до форса этих вещей, и с ними, или без них, отлично выполняет свои задачи. А когда в языке нет ООП, а задача таки требует ООП, приходиться обмазываться костылями, имитирующими ООП.
Нет, никуда не отпала необходимость в ООП, а предложение отказа от ООП, чтобы гига-архитекторы не могли что-то настроить безумное - точно такая же серебренная пуля. Они и в языках без ООП настроят бредовых мега абстракций.
Были гига-монолиты на ООП, теперь мега-микросервисы на Go, размазанные по тоннам нод, потому как так принято.
А с чего такая уверенность, что это его идеи были реализованы в языке Simula, а не Smalltalk их взял из Simula?
По годам выходя языков - все равно так, сначала в Simula реализовали ООП, потом Алан Кэй реализовал свое "True ООП" в Smalltalk, и стал рассказывать что все остальное ООП не трушное. Вот только в народ ушло появившееся ранее ООП из Simula.
По статьям все тоже самое:
В википедии тоже самое: Smalltalk вдохновлялся Simula, а не наоборот.
К тому, что теперь идеологи ECS предлагают его использовать для всего подряд, как очередной мега-архитектурный подход, решающий все проблемы.
Верно, все айти термины, абстрактные до невозможности, но в тоже время можно легко сказать что в C нет ООП, а C++ есть, не погружаясь в формализм.
От отсутствия универсального формального определения - ООП он скамом не становиться.
И да, инкапсуляция в том же C заканчивается на "LINKER ERROR: DUPLICATED SYMBOL".
Никуда не исчезла, просто теперь, еще вчера, крутой код стал не желательной практикой.
А тут разве представлен универсальный СИ код? Тут какая-то простыня хаков для конкретных компиляторов, это не СИ код :)
А нет никакого решения этой выдуманной задачи, так как нет макросов. Такой код просто невозможно написать, а значит и читать его после мега-макрос-хакера не нужно.
Автор же статьи не удосужился показать пример зачем ему это понадобилось. Зато показал как превратить программу в макросный, компилер специфичный, фарш.
Кстати, фанатам "того самого ООП в Smalltalk" следует знать, что это не первый ООП язык.
Первый ООП язык, у которого ООП намного более похож на типичный современный ООП, это Simula.
За несколько лет до появления "того самого Smalltalk" в Simula уже были объекты, классы, и наследование.
https://en.wikipedia.org/wiki/Simula
Живите теперь с этим фактом "скама на первый ООП" от Алана Кея.
Именно - для определенных задач ООП очень удобен, и когда в языке нет ООП, он становиться не очень хорош для определенных классов задач. Автор зачем-то предлагает все ЯП превратить в языки для крудошлепства. А я вот формошлепство люблю - и мне ООП в языке - нужно.
Ха, еще один адепт со своей серебряной пулькой прибежал - на этот раз с ECS.
Самое смешное, что на гитхабе наблюдается больше мега-игровых движков с ECS, чем игр на них. Интересно почему.
Это сахар, который может кому-то нравиться, кому-то нет. Но концептуально разницы нет никакой. По факту мы имеем sealed/final классы, все.
А когда Go перестал поддерживать некоторые принципы ООП?
Как минимум мы имеем инкапсуляцию(модули), полиморфизм(интерфейсы). (И с каждой версией все больше и больше накручивают, дженерики(параметрический полиморфизм), кастомные итераторы(перезагрузка операторов)).
Или для вас ООП язык - этот тот где нельзя просто процедуры без класса писать? Ну тогда, лол, у вас крайне специфическое понимание ООП. В котором ObjectPascal и C++ - не ООП языки.
ООП — это скам.
Нет в джаве не все есть объект, есть примитивные типы аля int.
Java не заставляет вас писать сеттер и геттер на каждое поле, это правило хорошего тона, для определенного формата кода, не хотите, не пишите, обращайтесь напрямую.
И да - в Go - все есть interface{} - пихай куда угодно, что угодно, если обсыпал interface{}. Строгость отвалилась, ой. А в джаве кста, не выйдет так.
Java и C# - языки своего времени, где отменили "просто функции", да, это сомнительно по итогу оказалось. Параллельно существуют ObjectPascal и C++, где никто "процедурный подход" не отбирал. Да и новые ЯП процедурный подход разрешают.
В противовес, сейчас, есть новые ЯП насильно впихивающие ФП, Супер-Типы, там где не надо, и отнимающие традиционное ООП, где оно было бы удобно. Все это веяние времени не более, от этого ни ФП, ни ООП, не Типы скамом не становятся.
А еще есть GTK/GNOME, где из-за использования языка без ООП - C, программирование похоже на ад. Причем ад и для самих разрабов GNOME, поэтому, по итогу, они в него js встроили (в виде огромного C++ браузерного движка).
Мир не ограничивается REST ручками и перекладыванием джейсонов, смиритесь. Если вы не осилили другие вещи, и не поняли, зачем нужен ООП, то не ваше это, бывает.
Ок, вот пример "зачем нужно ООП" - сорцы компилятора своего любимого языка открой.
Или покажи действительно хороший, "богатый", десктопный GUI на языках без ООП, где все вынужденны реактивщиной обмазываться, от чего интерфейс "пляшет" от любого чиха, и воспринимается как подделка кривая.
В целом, все ровно так же, как когда-то пихали везде ООП, сейчас пихают Анти-ООП, ФП, ECS, DDD, TDD, MVC, DTO и т.д.
Каждый раз одно и тоже, у очередного автора хорошо что-то вышло на новой, для него, парадигме, и он начинает носиться как угорелый, и пропихивать это везде как серебряную пулю.
Да, да, уважаемый автор статьи, ты точно такой же "заряженный" продаван очередной серебрянной пули, не больше.
Именно поэтому я выбираю Pascal.
А тег КОД уже отменили, или LLM не смогла выдать?