

Есть вопрос, на который я пока не получил внятного ответа: почему за основу своего Оберон-07 Вирт взял не самый современный на то время объектно-ориентированный Оберон 2 или Компонентный Паскаль, а ранний Оберон?

Можно строить разные предположения и догадки, например, такие:

1) Оберон 2 вдруг оказался или был заведомо шагом в неверном направлении, и универсальный язык программирования вполне может обходиться без привязки процедур к записям, даже если, например, нужно сделать коллекцию из сотен элементов со схожим поведением. (Предлагаю ограничить тему именно привязкой процедур к записям, не рассматривая инкапсуляцию, поскольку отличие двух версий оберонов именно в такой привязке)

2) Оберон 2 не оправдал возложенных надежд в части объектно-ориентированного программирования - его средства ООП оказались гораздо менее удобными, чем в Java и других конкурирующих объектно-ориентированных языках. Вирт пока не нашел красивого и удобного способа встроить ООП в Оберон. Поэтому было решено избавиться от средства, которое не удалось сделать конкурентоспособным.

3) Оберон-07 изначально не предназначался для решения задач, для которых необходимо объектно-ориентированное программирование. То есть, это нишевый язык, например, для встроенных систем.

4) Оберон-07 обладает другими средствами объектно-ориентированного программирования, которых вполне достаточно для решения тех задач, для которых эта парадигма была придумана. Тогда нужно убедительно показать, что этими средствами можно так же легко сделать коллекцию из сотен элементов со схожим поведением, как и c привязкой процедур к записям.

Хотелось бы узнать мнение профессионалов на этот счет.