Компонентно-ориентированное программирование: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 50:
 
==Отличительные особенности компонентно-ориентированного программирования==
КОП, в чём-то расширяет, а в чём-то ограничивает другие идиомы программирования. Так, поддерживается функциональный стиль, но ограничиваются сторонние эффекты. Как так (?) огогого (!) в КОП нет понятия класса, но в то же время, структуры данных, и привязанные к ним процедуры в рамках модуля -- вполне описывает понятие класса в ООП. Достаточно простые исходные лексемы позволяют строить (и поощряют такое построение) код, который хорошо согласуем, сильно типизирован, может быть расширен (как через исходный код, так и через скомпилированный в машинном виде). КОП, прежде всего, нацелен на устойчивую динамичную среду. Так например, возможна ситуация в ОС Linux, когда с помощью специальных механизмов в ряде случая можно внести исправления прямо в работающее ядро, в Компонентном Паскале -- динамически заменить один работающий модуль на другой не представляет сложности (за исключением тех случаев, когда происходит взаимодействие с ресурсами, которые Компонентный Паскаль контролировать, по понятным причинам, -- не может). Также следует упомянуть о том, что в компилируемых языках ''автоматическая уборка мусора'' не такая простая вещь. В динамических системах потребность в сборщике мусора ещё выше. Обычно, программист сам должен контролировать низкоуровневые операции с памятью. И здесь нарушается принцип абстракции. Используя КОП можно построить систему, в которой уборка мусора будет выполняться автоматически и абсолютно точно. Это можно достигнуть несколькими способами, и самый доступный из них -- подсчёт ссылок на структуру данных. Если модуль, который обрабатывает какую-либо структуру выгружен из памяти -- очевидно, эти данные уже никто не сможет обработать).
 
==Примеры реализации компонентно-ориентированного программирования==