Cтраница 4
После того как система MULTICS отжила свое, это понятие было на время забыто. Сейчас большинство систем снова поддерживает некоторую форму динамического связывания. Список можно еще продолжить, но мораль описанных выше примеров такова: идея, которая сегодня является устаревшей, завтра может стать гвоздем сезона. [46]
Но эти рекомендации слабо соотносятся со спецификой программирования задач искусственного интеллекта и, в частности, систем, основанных на знаниях. В программах зачастую используются нестандартные способы управления последовательностью выполнения операторов, непредусмотренное никакими канонами динамическое связывание переменных и совершенно безответственные манипуляции со структурами данных, такими как списки свойств. Как бы там ни было, но написать хорошую программу на языке LISP - это искусство, которым владеют единицы, хотя тексты большинства самых лучших программ искусственного интеллекта можно демонстрировать студентам в качестве наглядного пособия, как не надо писать программы. [47]
![]() |
Драйвер для иерархии точка, круг, цилиндр ( часть 9 из 9. [48] |
Из выходных результатов, приведенных на рис. 10.2, часть 9, следует, что функции вызываются должным образом. Сначала выводится строка Точка: и координаты, хранящиесй в объекте point; площадь и объем равны 0.00. Затем выводится строка Круг: , координаты центра круга и радиус, хранящиеся в объекте circle; потом вычисляется площадь круга, а его объем равен 0.00. И, наконец, выводится строка Цилиндр, координаты центра, радиус и высота цилиндра, хранящиеся в объекте cylinder; потом вычисляются площадь его поверхности и объем. Все вызовы функций printShapeName, print, area и volume реализуются в процессе выполнения программы с помощью динамического связывания. [49]
Программы, которые ассемблируются независимо друг от друга, можно связать вместе и получить исполняемую двоичную программу, которую можно запускать. Эту работу выполняет компоновщик. Динамическое связывание - это технология, при которой определенные процедуры не связываются до тех пор, пока они не будут вызваны. Библиотеки коллективного пользования в системе UNIX и файлы DLL ( динамически подсоединяемые библиотеки) в системе Windows используют технологию динамического связывания. [50]
Более гибкий способ связывания отдельно скомпилированных процедур - установление связи с каждой процедурой в тот момент, когда она впервые вызывается. Этот процесс называется динамическим связыванием. Впервые он был применен в системе MULTICS. В следующих разделах мы рассмотрим применение динамического связывания в нескольких системах. [51]