В период времени '92 / '93 я работал над архитектурой плагинов для Aldus PageMaker, которая была написана на C ++. PageMaker был построен на платформе ООП C ++ под названием VAMP, что способствовало его переносимости между Mac OS и Windows.
Итак, мы попытались использовать возможности C ++ для построения архитектуры плагинов. Это оказалось очень проблематичным для классов C ++ из-за так называемой проблемы хрупкого базового класса. Я приступил к написанию статьи, которая была опубликована в журналах и которую я представил на OOPSLA '93 на семинаре по анализу. Я также связался с Бьярном Страуструпом на конференции Usenix в Портленде и продолжал вести с ним диалог в течение нескольких месяцев, где он отстаивал проблему решения проблемы хрупкого базового класса от моего имени. (Увы, в то время другие вопросы считались более важными.)
Microsoft представила систему COM / DCOM и для этой платформы, которая рассматривалась как жизнеспособное решение проблемы. C ++ может использоваться в качестве языка реализации COM через абстрактные классы, используемые для определения интерфейсов COM.
Однако в наши дни разработчики избегают использования COM / DCOM.
В отличие от этого, NeXT разработал архитектуру плагинов с использованием Objective C в начале 90-х годов в рамках NeXT Step. Сегодня он живёт в Mac OS X на компьютерах Apple и на таких важных платформах, как iPhone.
Я представляю, что Objective C позволил решить проблему с плагином превосходным образом.
Лично я считаю, что хрупкая проблема базового класса в C ++ является ее самой фатальной ошибкой.
Если бы строили архитектуру плагинов с семейством языков на основе C, это делалось бы с использованием Objective C.