Fifty Shades of OOP
OOP часто критикуют, но термин трактуют по-разному: от Википедии («парадигма на основе объектов») до видения Алана Кэя. Автор предлагает не спорить о «истинном» смысле, а разобрать как набор идей — классы, синтаксис методов и другие — с плюсами и минусами.
Классы расширяют структуры данными методами, инкапсуляцией и наследованием (цитата Грейди Бууча: «программы как коллекции объектов, экземпляров классов в иерархии»). Альтернатива — прототипы (Self, JavaScript), но они сложнее; JS прячет их за ES6-классами. Синтаксис методов удобен для операций над субъектом, автодополнения IDE и chaining (ср. pipe в FP). Минусы: методы часто только внутри классов (искл. Rust, Scala, Kotlin, C# extension methods); implicit this/self вызывает shadowing, проблемы производительности и generics (Python/Rust правильны, C++23 ввёл deducing this); dot-нотация смешивает доступ к полям и вызовы; в generic-коде конфликты с free functions (Rust решает квалификацией).