Discussion:
Последнии тенденции не в сторону ООП
(слишком старое сообщение для ответа)
Nil A
2021-10-09 15:37:12 UTC
Permalink
* Originally in su.c_cpp
* Crossposted in nino.046.local
Hello, All!

По работе тут несколько месяцев пишу на Гоу, вместо привычных плюсов. Сначала
возмущение, как так, тут даже ООП нет, и исключений и много чего ещё. Потом
даже приникся простотой языка и лёгким (условно) чтением чужих исходников.

Параллельно всё посматриваю, что некоторые компании стали писать на Расте. Мы
уговаривали начальство разрешить новые проекты на Расте, но они не сдались. А
тут немного посмотрел, так там тоже нет ООП в таком чистом виде, а всё больше
трейты.

В питонах с их утиной типизацией, там вообще не надо от базового класса
наследоваться, чтобы иметь возможность реализовать интерфейс.

В 90х была супер мода на ООП, пихали где надо и не надо. Где-то просто, чтобы
спрятать область видимости функций (инкапсуляция), где-то наследовались не
думая, что тут реально композиция. Да и вообще мир сильно сложнее, чем строгая
иерархия классов, и начинаются всякие перекрёстные ссылки..

Короче, как я понял, сейчас ООП менее в тренде, именно в том виде, как оно в
C++ и Джавах. Структурки с возможностью вызова методов к ним - есть.
Полиморфизм в том или ином виде - есть, но не через черезу наследований.

Ещё статья забавная была, там чем хотел приложку для телефонов написать, сам он
системный прогер, далёк от мобилок, но за три вечера смог навалять на флаттере,
чему был супер рад, что не пришлось изучать отдельно ещё два языка и две
платформы, а только простой Дарт. Так вот, стал он народу далёкому от
программировать показывать Флаттер, и народу сложно объяснить все эти разные
формы конструкторов и пр. С нуля прям легко, говорит, гоу обучить, там всё
проще без этих ООП.

Best Regards, Nil
Valentin Nechayev
2021-10-20 20:29:00 UTC
Permalink
Hi,
NA> По работе тут несколько месяцев пишу на Гоу, вместо привычных плюсов.
NA> Сначала возмущение, как так, тут даже ООП нет, и исключений и много
NA> чего ещё. Потом даже приникся простотой языка и лёгким (условно)
NA> чтением чужих исходников.

NA> Параллельно всё посматриваю, что некоторые компании стали писать на
NA> Расте. Мы уговаривали начальство разрешить новые проекты на Расте, но
NA> они не сдались. А тут немного посмотрел, так там тоже нет ООП в таком
NA> чистом виде, а всё больше трейты.

NA> В питонах с их утиной типизацией, там вообще не надо от базового
NA> класса наследоваться, чтобы иметь возможность реализовать интерфейс.

Есть такое, да. Вопрос в том, насколько далеко оно может зайти и вытеснить
другие языки и подходы, типа классического ООП стиля C++/Java.
Пока что получается, что Go перетянул массу разработок скорее с Python, чем с
чего-то другого; Rust частично забирает с C++, но также заметно с C, причём с
C++ в заметной мере не благодаря другому ООП, а из-за ужесточения работы с
памятью.

Отказ от наследования в привычном виде, особенно от полиморфизма на
наследовании - пригоден ой не везде. Где-то его и не было толком (есть у меня
один такой проект, где вся польза от C++ получается в привязывании имён функций
к объектам и в инкапсуляции - там, да, и Go пошёл бы). Где-то на него легко
перейти. Hо я вот попытался оценить один компонент с этой точки зрения - понял,
что мы скорее повесимся, чем это заработает :) А вот какая-нибудь Java тут идёт
влёгкую.

Про Python тут не совсем уместно - у него несмотря на всю утиную типизацию
полиморфизм через наследование доступен (и гибче чем у почти всех конкурентов),
а для статического анализа так вообще незаменим.

NA> В 90х была супер мода на ООП, пихали где надо и не надо. Где-то
NA> просто, чтобы спрятать область видимости функций (инкапсуляция),
NA> где-то наследовались не думая, что тут реально композиция. Да и вообще
NA> мир сильно сложнее, чем строгая иерархия классов, и начинаются всякие
NA> перекрёстные ссылки..

А где-то сейчас, наоборот, используют композицию вместо наследования. При этом
оказывается, что из 50 методов 3 определены по месту, а 47 превращаются в стабы
"вызвать то же самое у вложенной базы".
Hу не будет тут абсолютных рецептов...

NA> Короче, как я понял, сейчас ООП менее в тренде, именно в том виде, как
NA> оно в C++ и Джавах. Структурки с возможностью вызова методов к ним -
NA> есть. Полиморфизм в том или ином виде - есть, но не через черезу
NA> наследований.

Таки если посмотреть на долю этих языков без полиморфизма наследованием, то их
мало (Go откусывает ну 1/6 от верха, Rust в разы меньше).

NA> Ещё статья забавная была, там чем хотел приложку для телефонов
NA> написать, сам он системный прогер, далёк от мобилок, но за три вечера
NA> смог навалять на флаттере, чему был супер рад, что не пришлось изучать
NA> отдельно ещё два языка и две платформы, а только простой Дарт. Так
NA> вот, стал он народу далёкому от программировать показывать Флаттер, и
NA> народу сложно объяснить все эти разные формы конструкторов и пр. С
NA> нуля прям легко, говорит, гоу обучить, там всё проще без этих ООП.

Так никто не мешает в таком стиле писать хоть на Java, хоть на C++ (ну кроме
небольшого количества интерфейсных мест, которые уже форсировано заточены под
такой подход). Hо добровольно лишать себя возможностей - как-то странно...


-netch-

... Программная система "Медуза". Переименования файлов нет.
... Удаления файлов нет. Заполнена NOPами.
Loading...