Разбираемся в новой волне критики ООП

1. Статья с критикой ООП

https://tproger.ru/translations/oop-the-trillion-dollar-disaster/

Основная идея: при создании парадигмы (и фреймворка) ООП в шестидесятых, ключевой идеей был именно обмен сообщениями, а не дерево объектов. И при сохранении этой идеи код легче в поддержке, понимании, и более отказоустойчив.

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

В результате сформировались полиморфизм и наследование. Последовал эффект бойлерплейт, крупные программы стали характеризоваться сотнями объектов с тысячями возможных состояний. Открытость состояний объектов повышала связность и уменьшала коэффициент сигнал/шум в программе. В результате - избыточность кодовой базы, избыточность тестов, перегруженный процесс поддержки ПО.


Объекты связывают функции и структуры данных вместе в неделимых единицах. Я думаю, что это фундаментальная ошибка, поскольку функции и структуры данных принадлежат совершенно разным мирам.
- Джо Армстронг, создатель Erlang

Вообще, по ходу статьи аргументированно разбираются проблемы ООП в промышленном масштабе. Прилагается ссылка на статью "Goodbye, Object Oriented Programming" (medium.com, EN).

Рекомендуемые функциональные языки:
Elixir (построен поверх Erlang)
Elm
Scala
Clojure (современный диалект Лиспа)
F#

+ Функциональный подход к JS (google).
+ Функциональный подход к Python (google).
+ Упоминается Haskell

Также в статье есть ссылки на Flux и Redux в следующем контексте:
"Пусть основные части вашего приложения не будут содержать состояния и будут чистыми. Это является главной причиной успеха для Flux-паттерна в фронтенде (он же Redux)."

2. Статья про Flux

https://habr.com/ru/company/hexlet/blog/268249/

Надо разбирать подход Flux/Redux на практике.
Но пока - себе на память размещу несколько картинок из поста и комментариев.

1. Картинка с критикой MVC:


2. Картинка с восхвалением Flux



3. Картинка с критикой Flux


Пока на этом у меня всё.

Комментарии

Популярные сообщения из этого блога

EVE: Навигация по вормхолам

beget, passenger, java

Линки: Туториалы по Python