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

Содержимое удалено Содержимое добавлено
Строка 47:
 
==Контроль во время компиляции и исполнения==
Эти две фазы гораздо более тесно связаны, чем в случае других парадигм программирования. Так как, например [[C++]] не гарантирует исполнения кода во всех возможных случаях, в него с неизбежностью введены лексемы, служащие для перехвата исключений. И это, в целом, плохо. Такие лексемы говорят о том, что язык не был ''сконструирован'', а скорее ''сочинён''. Более того, наличие инструкций перехвата управления, вовсе не гарантирует таких эффектов как ''улететь в космос'' (неправильное исполнение программы, которое может нанести существенный ущерб целостности структур данных). В КОП нет ничего подобного. Подобные лексемы избыточны и в-общем случае -- бессмысленны. В то же время, вполне возможна ситуация, когда интерфейс модуля в КОП был изменён. В такой ситуации надстройка над средой исполнения, отвечающая за сведение различных модулей в режиме исполнения заметит несоответствие типов и запретит передачу данных между несовместимыми модулями. Это позволит своевременно остановить распространение ошибки по всей программе между модулями, которые, возможно, даже не участвовали во взаимодействии двух первых несовместимых модулей. Такое правило контроля во время исполнения приводит к важному следствию: взаимодействие между модулями происходит только с помощью базовых типов. Во время компиляции, все задействованные модули для разработки проверяются на согласованность со вновь создаваемым, а если уже существующий модуль необходимо изменить -- создаётся новый (с другими интерфейсами), либо изменяется содержимое существующего модуля (с учётом возможных последствий для зависимых модулей). Так, например, решается проблема "ада динамических библиотек".
 
{{Темы |Программирование}}