> -- Илья Ермаков писал(а):
> Просто для системного программирования и научно-инженерных задач, для которых применяли сами разработчики типа Ominc, это не было сильно актуально...А в задачи обработки данных типа веба, где без стандартных контейнеров туго, швейцарцы не влезали. Так что всерьёз некоторыми задачами развития языка в эту сторону никто не занимался.

Илья Евгенич, т.е. вы говорите, что с помощью композиции и расширения типов невозможно или невыигрышно реализовать стандартные контейнеры? Я правильно вас понимаю?
Вот так, напр, почему не сделать:
## Код:
```
MODULE Collections;
  TYPE Obj* = POINTER TO ABSTRACT RECORD END;
    Collection* = POINTER TO ABSTRACT RECORD ... END;
    Key* = ...;
  PROCEDURE (c: Collection) Append* (o: Obj), NEW, ABSTRACT;
  PROCEDURE (o: Obj) GetKey* (OUT k: Key), NEW, ABSTRACT;
END Collections;
```

Я не полемизирую, а пытаюсь понять. Просто я до сих пор не встречал задач, где мне позарез были бы нужны "стандартные контейнеры". Чаще всего встречал два варианта:
А) нужен элементарный список или дерево - и тут несложно (субъективно) ручками прописать; выигрыш в производительности по сравнению с (обычно громоздкими и универсальными контейнерами-"всемогуторами" © В.Лаптев) - грандиозный. И зависимостей меньше, и ненужные виды контейнеров не надо "тянуть" с библиотекой.
Б) нужна структура данных, которая не вписывается в стандартные контейнеры: пересекающиеся списки или деревья, например, каждый объект данных участвует в дереве и в двух списках одновременно. И тут - опять же, только ручками.

Но вебом я мало занимался и поверхностно. Потому что там КП нету ).