OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 09 Декабрь, 2019 21:02

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: ООП - тупиковый путь?
СообщениеДобавлено: Пятница, 26 Март, 2010 22:11 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
:?:

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

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

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

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Суббота, 27 Март, 2010 08:16 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9162
Откуда: Россия, Орёл
Моё мнение ближе к п. 3.

Язык Оберон-07 как инструмент, действительно, более узкого непосредственного применения, чем КП (О2 в сравнении с КП вообще рассматривать нецелесообразно).

Однако роль O07 - быть языковым ядром, "эталоном" несущих программных конструкций, на которые можно ориентироваться в развитии семейства языков.

И уже как следствие - такой "ядерный" язык хорошо подходит как есть именно для "ядерных" задач.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Суббота, 27 Март, 2010 10:30 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
В книге "Программирование на Обероне" Вирт также не использует type-bound процедур.
Это упорство похоже на позицию.
Кроме того, type-bound процедуры не добавляют языку новых возможностей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Суббота, 27 Март, 2010 10:58 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
AVC писал(а):
В книге "Программирование на Обероне" Вирт также не использует type-bound процедур.
Это упорство похоже на позицию.


Может быть, те задачи, которые решал Вирт, просто не требовали объектно-ориентированного программирования? Есть ли какой-нибудь текст, где явно выражено отношение Вирта к процедурам, привязанным к записям?

Я так понял, что Вирт одобрительно отнесся к разработке Оберона 2, а значит, и к процедурам, привязанным к записям. Правильно ли я это понял?

AVC писал(а):
Кроме того, type-bound процедуры не добавляют языку новых возможностей.


Сомнительно, чтобы к языку добавляли новое средство, если оно не добавляют языку новых возможностей. Разумеется, оно не всегда нужно, а там, где оно помогает программисту, можно сделать всё по-старинке ценой больших трудозатрат и дублирования кода с риском наделать ошибок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Суббота, 27 Март, 2010 11:42 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9162
Откуда: Россия, Орёл
У Вирта, по моему мнению, очень чёткая позиция в отношении необходимости чистого, рафинированного языка-ядра и своей личной ответственности за поддержание этого ядра.

Следует ясно понимать как правильность такой позиции, так и то, что это не говорит вообще ни о чём по отношению к другим Оберонам и ООП.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Суббота, 27 Март, 2010 17:43 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Сергей Прохоренко писал(а):
AVC писал(а):
Кроме того, type-bound процедуры не добавляют языку новых возможностей.


Сомнительно, чтобы к языку добавляли новое средство, если оно не добавляют языку новых возможностей. Разумеется, оно не всегда нужно, а там, где оно помогает программисту, можно сделать всё по-старинке ценой больших трудозатрат и дублирования кода с риском наделать ошибок.

Вот что Вирт написал про ООП на Обероне-1:
Wirth. Programming in Oberon писал(а):
"This concludes our brief introduction to the object-oriented paradigm of programming. We realize that
almost no language features had to be added to Oberon to support it. Apart from the already present
facilities of records and of procedural types, only the notion of type extension is both necessary and
crucial."
IMHO, совершенно однозначно.
Ничего принципиально важного для поддержки ООП Оберон-2 не добавляет.
Разумеется, это не означает, что на КП следует писать так же, как на Обероне-1.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Суббота, 27 Март, 2010 21:35 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8211
Откуда: Троицк, Москва
AVC писал(а):
Ничего принципиально важного для поддержки ООП Оберон-2 не добавляет.
А Оберон-07 ничего, соответственно не теряет.
Поэтому добавленное в Википедии утверждение про ООП в Обероне-07 -- просто неверно. Вычеркнул бы кто, что ли.

Пожалуй, единственный случай, где привязка процедуры к типу могла бы быть существенной, это когда обрабатывается большой массив однородных объектов. Глупо, если все они будут нести процедурные поля. Но в таких ситуациях вполне допустимо, естественно и экономно передавать соотв. процедуры отдельным параметром -- и снова привязка к типу оказывается несущественной.

В общем, против реализации ООП в классических Оберонах есть два возраженя:

1. Синтаксически-сахарное: некоторая громоздкость. Тут не очень понятно, насколько эта громоздкость заслуживает того, чтобы с ней бороться.

2. Небезопасность процедурных типов при выгрузке модулей. Если оно действительно небезопасно, то "второе оптимальное подмножество" в Компонентном Паскале будет предпочтительным. Но вот наш острый Trurl замечал, что проблема несколько преувеличена. И если правда на его стороне, то классические Обероны могут выигрывать за счет простоты реализации.

Затрудняюсь сделать вывод (кроме что из Википедии нужно эту неразумность убрать).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Суббота, 27 Март, 2010 23:08 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9162
Откуда: Россия, Орёл
Да, громоздкость возникает... И педагогическая громоздкость, в частности - это особенно остро чувствуется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Суббота, 27 Март, 2010 23:46 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Мне все равно, что там сейчас второпях наваяют в Википедии (та еще помойка), но хочется докопаться до истины. Процитированный текст был по-видимому написан до создания Оберон-07, поэтому этот текст не объясняет, почему базой для Оберон-07 не стал объектно-ориентированный Оберон-2.

Илья Ермаков склоняется к варианту 3: Оберон-07 изначально не предназначался для решения задач, для которых необходимо объектно-ориентированное программирование.

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

Возможны также и другие варианты, хотя пока никто не высказался в их пользу.

Хотелось бы узнать мнение тех, кто реально использует объектно-ориентированную парадигму на оберонах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Воскресенье, 28 Март, 2010 01:47 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Сергей Прохоренко писал(а):
Процитированный текст был по-видимому написан до создания Оберон-07, поэтому этот текст не объясняет, почему базой для Оберон-07 не стал объектно-ориентированный Оберон-2.
Процитированный текст взят из (электронной) книги 2004 года, т.е. опубликованной много позже создания Оберона-2.

Сергей Прохоренко писал(а):
AVC и Info21 защищают вариант 4
Да что мы... :)

Сергей Прохоренко писал(а):
Правда, они пока не смогли убедительно показать, что этими средствами можно так же легко сделать коллекцию из сотен элементов со схожим поведением, как и c привязкой процедур к записям. То есть, их позиция нуждается в обосновании.
Скорее, следовало бы доказывать обратное. :roll:
Во всех книгах Вирта, посвященных Оберону, говорится о создании подобных коллекций. Таких коллекций полно в системе Оберон.
Мне не вполне понятно, что именно вызывает подозрение. Возможно, это необходимость "ручной" инсталляции процедурных переменных. Как правило, фабричная процедура вызывает NEW для конкретного (неэкспортируемого) типа записи и производит необходимую инициализацию, в т.ч. процедурных полей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Воскресенье, 28 Март, 2010 08:39 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8211
Откуда: Троицк, Москва
Сергей Прохоренко писал(а):
Мне все равно, что там сейчас второпях наваяют в Википедии (та еще помойка)
Вообще-то, мне просто лень оттуда собственный текст копировать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Воскресенье, 28 Март, 2010 08:40 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8211
Откуда: Троицк, Москва
Илья Ермаков писал(а):
Да, громоздкость возникает... И педагогическая громоздкость, в частности - это особенно остро чувствуется.
А что, Илья Евгеньевич, неужели на классическом Обероне пробовали обучать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Воскресенье, 28 Март, 2010 11:04 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4539
Откуда: Россия, Орёл
Сергей Прохоренко писал(а):
за основу своего Оберон-07 Вирт взял ... ранний Оберон?
Правильней говорить, что Вирт сделал ревизию своего* раннего Оберона.
Код:
The Programming Language Oberon
           (Revision 1. 10. 90)
                 N.Wirth
Код:
The Programming Language Oberon
          Revision 1.11.2008
              Niklaus Wirth
*
Код:
The Programming Language Oberon-2
        H.Moessenboeck, N.Wirth


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Воскресенье, 28 Март, 2010 12:19 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9162
Откуда: Россия, Орёл
Сергей Прохоренко писал(а):
Илья Ермаков склоняется к варианту 3: Оберон-07 изначально не предназначался для решения задач, для которых необходимо объектно-ориентированное программирование.


Я уточню своё мнение так: не предназначался для максимально продуктивной работы над задачами прикладного характера, с большим набором абстрактных типов данных.
ООП как механизм - это просто возможность динамически расширять систему новыми сущностями, не трогая уже изготовленные части. Поэтому Оберон-07 является полноценным ОО-языком, ориентированным на системное программирование.

Плюс, конечно, то, что сказал выше про его роль как языкового ядра.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Воскресенье, 28 Март, 2010 12:21 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9162
Откуда: Россия, Орёл
Info21 писал(а):
Илья Ермаков писал(а):
Да, громоздкость возникает... И педагогическая громоздкость, в частности - это особенно остро чувствуется.
А что, Илья Евгеньевич, неужели на классическом Обероне пробовали обучать?


Нет, я про громоздкость объяснения ООП со связанными процедурами, в КП.
А приводить промежуточный пример с проц. полями при объяснении всё равно приходится. Потом виртуальную таблицу рисовать. Иначе останется ощущение "мистики", чего допускать никак нельзя.

Вот тут я эту тему пытался поднимать:
viewtopic.php?f=8&t=2121


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Воскресенье, 28 Март, 2010 12:39 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Спасибо всем участникам дискуссии. Перечитал Programming in Oberon (раздел 23.3. Methods). Не вдохновило. Сделал вывод, что в данном конкретном случае Вирт как обычно попытался сделать язык проще за счет синтаксиса, но в результате усложнил семантику. Программисту более естественно мыслить так, как сделано в Компонентном Паскале (и при этом в первую очередь думать о своей задаче, а не об инсталляции процедур), хотя, конечно и на Обероне-1, и на Обероне-07 объектно-ориентированное программирование возможно.

Для чего я поднял этот вопрос? Это важно для разработки семантического редактора. Вывод, который я сделал применительно к семантическому редактору, следующий: все существующие подходы, как в Обероне-1 и Обероне-07, так и в Обероне-2 и Компонентном Паскале, являются недостаточно прозрачными и слишком привязанными к текстовому формату объявления классов, и следовательно, неудовлетворительными. В семантическом редакторе следует попытаться сделать табличное объявление класса, основываясь скорее на Компонентном Паскале, чем на Обероне-1 и Обероне-07.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Понедельник, 29 Март, 2010 16:09 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Заглянул в старую (1992) книгу Вирта и Рейзера.
Там в конце авторы говорят об Обероне-2, указывают очевидные 2 достоинства type-bound процедур (автоматическая инициализация методов и экономия памяти), а в качестве возможного недостатка называют то обстоятельство, что type-bound процедура (в т.ч. абстрактная) должна быть обязательно объявлена в том же модуле, что и её тип.
Любопытно. :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ООП - тупиковый путь?
СообщениеДобавлено: Понедельник, 29 Март, 2010 17:28 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9162
Откуда: Россия, Орёл
Да, таблицы часто "рулят", проверено. Строгая и наглядная визуальная форма.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB