В одній із багатьох анти-ООП-рейтів на cat-v.org я знайшов уривок Джо Армстронга, який висунув кілька заперечень проти моделі ООП, одним з яких було таке:
Заперечення 4 - Об'єкти мають приватний стан
Держава - корінь усього зла. Зокрема, слід уникати функцій з побічними ефектами.
У той час як держава в мовах програмування небажана, в реальному світі держава рясна. Мене дуже цікавить стан мого банківського рахунку, і коли я депоную чи знімаю гроші з мого банку, я очікую, що стан мого банківського рахунку буде правильно оновлений.
Зважаючи на те, що держава існує в реальному світі, які засоби програмування повинні передбачати мову програмування для роботи з державою?
OOPL кажуть "приховати стан від програміста". Стани приховані і видимі лише через функції доступу. Звичайні мови програмування (C, Паскаль) кажуть, що видимість змінних стану контролюється правилами області застосування мови. Чисті декларативні мови говорять про те, що немає держави. Глобальний стан системи здійснюється у всіх функціях і виходить з усіх функцій. Такі механізми, як монади (для FPL) та DCG (логічні мови) використовуються для приховування стану програміста, щоб вони могли програмувати «як би стан не мав значення», але мати повний доступ до стану системи, якщо це буде необхідно.
Опція «приховати стан від програміста», обрана OOPL, є гіршим можливим вибором. Замість того, щоб розкривати державу і намагатися знайти способи мінімізувати неприємності держави, вони приховують це.
Що саме мається на увазі під цим? У мене дуже мало низького рівня чи процедурного досвіду, переважно OOP, так що, ймовірно, пояснюється, наскільки я незнайомий з цим. І з більш сучасної точки зору, тепер, коли більшість об'єктно-орієнтованих істерій пройшли (принаймні, наскільки я можу сказати), наскільки точним / релевантним ви вважаєте, що це уривок?
Спасибі за вашу допомогу.