Сборщик мусора необходим для компонентно ориентированного пр
От: S.Yu.Gubanov Россия http://sergey-gubanov.livejournal.com/
Дата: 30.07.04 08:02
Оценка: 9 (3) +2 -1
Сборщик мусора необходим для компонентно ориентированного программирования.

Вот, вынес в отдельную ветку тему о необходимости сборщика мусора в компонентно ориентированных системах. Более десяти лет назад люди поняли, что полноценные компонентные (модульные) системы невозможны без наличия единого сборщика мусора. Мне, видимо, по неосторожности удалось упомянуть об этом факте на этом форуме. После чего на меня посыпались шишки и упреки вплоть до категоричного — "бред сивой кобылы", что мол сборщик мусора — это только для удобства, и теоретически все delete можно расставить в момент написания модуля (компонента).

По моему, очевидно, что задача расстановки delet-ов на момент написания модуля не имеет решения — НЕРАЗРЕШИМА статически. Ее надо решать динамически во время работы программы, а поскольку только сама система исполнения модулей знает о том какие модули в данный момент загружены и какие объекты они насоздавали, то динамическую задачу освобождения памяти должна решать сама среда исполнения. Примеры таких сред исполнения: всякие клоны ОС Оберон, ОС Inferno, Java VM, .NET и т. д.; Каждая из этих сред, само-собой, является и первичным загрузчиком модулей.

Некоторые упоминали еще среду COM. Но она имеет ограничение — там уборка мусора идет по подсчету ссылок. Стало быть циклические ссылки там запрещаются. Меня даже упрекали в том что циклические ссылки — это проё<sensored>, в смысле большая ошибка проектировщика. Но ссылки между объектами не имеют к проектировщику ничего общего, они диктуются предметной областью. Просто COM объектны из-за запрета на циклические ссылки не пригодны для моделирования ряда предметных областей: Роль Мужа <--> Роль Жены, Роль Друга <--> Роль Друга, Роль Матери <--> Роль Ребенка, Роль Учителя <--> Роль Ученика, Роль Начальника <--> Роль Подчиненного, Роль Работодателя <--> Роль Работника, Роль Компании <--> Роль Сотрудника, Роль Государства <--> Роль Гражданина, Роль Врача <--> Роль Больного; моделирование ориентированных графов и т.п.

Еще раз напомню, что речь идет о компонентных (т.е. модульных) системах — таких когда модули общаются друг с другом с помощью передачи друг другу объектов (адресов объектов, полиморфных переменных,...). Ну, а внутри одного единственного модуля для его внутренних переменных адреса которых никогда не сообщаются внешним модулям, delet-ы расставить теоретически можно, если не лень.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.