Это продолжение темы, выросшей изпросьбырассказать о процедурных переменных в Компонентном Паскале.
## Код:
```
Context = ABSTRACT RECORD END;
p: PROCEDURE(VAR ctx: Context; par: Parameter);
```

На первый взгляд, при наличии ООП они видятся избыточностью, потому что архитектурно любую процедурную переменную, как минимум, можно заменить объектом с одним методом. И как свидетельствуют разработчики, делается такое довольно часто даже несмотря на наличие процедурных переменных.## Код:
```
Abr = ABSTRACT RECORD END;
PROCEDURE (VAR ctx:Abr) Do(par: Parameter) ABSTRACT;
p: POINTER TO Abr;
```

Естественно, ООП этим не ограничивается, но речь про избыточность процедурного типа при уже включённом в язык ООП, а не ООП как таковом, в том числе, и о потребности в нём строго в том виде, в котором оно представлено в КП.

Так как есть и обратное мнение, хотелось бы увидеть его в более конкретном выражении. Лучше всего в виде рабочего, но минимального кода. Это то, что позволяет лучше понимать суть в противовес растеканию слишком абстрактной мысли.


Дмитрий Викторович, я посмотрел Вашдоклад, но, к сожалению, так и не смог увидеть потребность в использования именно процедурных типов, а не ООП. Возможно, мы просто о разных темах? Как мне показалось, то, что Вы изложили, прекрасно оформляется в виде ООП. Если нет, было бы интересно рассмотреть такой код.