Про Haskell часто говорят, что он сложный (чаще, чем про clojure). Но там все нормально алгебраически расписывается. Как-то пришлось полазить (для интеропа) в apache.poi (либе для парсинга .xls на Java). Я охренел просто.
ооп - это все же не про язык. что такое MOP и CLOS я понятия не имею 🙂 по определению это парадигма в которой основной конструкцией организации работы прошраммы выступают “обьекты” изолирующие состояние. Java и любой другой язык - это реализация этой парадигмы. В Clojure тоже можно вполне писать используя ООП принципы и иногда это даже оправданно
когда ООП пошел в массы - тогде оно действительно было вполне себе! но например, в моем случае это был переход с ТурбоПаскаль 5.0 на 5.5 (АТ-286/16Mhz/1Mb/VGA/Hdd-50/косые)