Стандартная реализация - Большая Энциклопедия Нефти и Газа, статья, страница 2
Ничто не хорошо настолько, чтобы где-то не нашелся кто-то, кто это ненавидит. Законы Мерфи (еще...)

Стандартная реализация

Cтраница 2


16 Виды элементов управления в блоке диалога. [16]

Наследование предопределенного элемента управления с заменой функции окна, в которой можно предусмотреть любые интересующие возможности, оставляя возможность использования части кода стандартной реализации.  [17]

На практике, однако, незавершаемость иногда возникает даже в том случае, когда исполняются разрешимые программы, поскольку, как объясняется в главе V, в стандартной реализации языка логического программирования употребляется особая стратегия управления, которая не позволяет системе использовать полноту резолюции. Поэтому опровержение, в принципе выводимое, может в зависимости от обстоятельств никогда не быть получено из-за того, что исполнение программы с самого начала попадает в ловушку какого-то другого незаканчивающегося вывода. В логическом программировании, стало быть, существует такой же риск, связанный с незавершаемостью исполнения программ, как и в традиционном программировании, хотя причины этого не совсем одинаковы.  [18]

В особенности, как увидим далее, семантика вызовов в определяемом языке ( промежуточный код в нашем случае) зависит от семантики вызовов в определяющем языке. В дальнейшем нашим определяющим языком будет стандартная реализация языка Норе, в которой все конструкторы вызываются по необходимости, а все остальные функции - по значению. Об этом совершенно необходимо помнить, потому что при использовании ленивой реализации языка Норе для написания интерпретатора можно получить существенно отличную реализацию промежуточного кода.  [19]

Для составных значений указывается возможность исключения части вспомогательной информации, которая требуется стандартной реализацией.  [20]

21 Эмпирические исследований реализаций таблиц символов. [21]

В этой та & лнце приведено относительное время создания таблицы символов и поиска каждого ключа а гяблице. В общеи случае бинарный поиск выполняется ноикйлько быстр & е поиска & BST-дереве, о он на может йыть использован применительно к очень большим файлам, если только таблицу нельзя предварительно отсортировать. Стандартная реализация ВЗТ-дсреяа распределяет память для каждого узла дерева.  [22]

С этой позиции следует разъяснить семантику вызовов в самом Норе. Существуют две реализации языка Норе, на обе будут даваться ссылки в оставшихся главах книги, поэтому не мешает остановиться на них подробнее. В стандартной реализации Норе все функции вызываются по значению, за исключением функций-конструкторов, вызываемых по необходимости. Это попросту означает, что аргумент конструктора не вычисляется, пока он не будет передан не являющейся конструктором функции как результат ее выбора при сопоставлении с образцом. В ленивой реализации Норе все функции вызываются по необходимости. Это означает, что строгие примитивные функции получают свои аргументы в невычисленной форме и, таким образом, должны сами проводить их вычисление, прежде чем примитив можно будет использовать. Для пояснения следует обратить внимание на то, что пример в разд. Норе, а примеры в разд. Норе, и то, как две реализации Норе порождают различное поведение этого интерпретатора.  [23]

Параметр pDoc указывает на документ, на который ссылается новый фрейм. Если он равен NULL, то библиотека выводит соответствующее информационное сообщение. Эта функция позволяет создать новый фрейм вне стандартной реализации обработчиков команд ID FILE NEW и ID FILE OPEN. Она возвращает указатель на вновь созданный фрейм или NULL, если произошла какая-либо ошибка.  [24]

По тем же соображениям, утверждение, аналогичное лемме 13.2, справедливо и по отношению к времени выполнения быстрой сортировки. Но в данном случае это еще более важно, поскольку отсюда следует, что затраты на поиск в дереве близки к усредненным. Независимо от дополнительных затрат на построение деревьев, стандартную реализацию BST-дерева можно использовать для выполнения операций search при затратах, которые зависят только от формы деревьев, при отсутствии вообще каких-либо дополнительных затрат на балансировку. Это свойство важно в типовых приложениях, в которых операции search гораздо более многочисленны, нежели любые другие. Например, описанное в предыдущем абзаце BST-дерево, состоящее из 100000 узлов, могло бы содержать телефонный справочник и использоваться для выполнения миллионов поисков. Можно быть почти уверенным, что каждый поиск потребует затрат, которые отличаются от усредненных затрат, равных приблизительно 23 сравнениям, лишь небольшим постоянным коэффициентом. Поэтому на практике можно не беспокоиться, что для большого количества поисков потребуется количество сравнений, приближающееся к 100000, в то время как при использовании стандартных BST-деревьев это было бы весьма актуально.  [25]

Другой подход состоит в объединении записей в список со ссылками. Тогда, как помещение записи в стопку, так и ее возвращение в список требует лишь изменения ссылки. Требуемая дополнительная память по-прежнему остается значительной, поскольку на каждую ссылку в стандартной реализации уходит от двух до четырех байтов, а значит требуемая дополнительная память составит 2N или 47V байтов.  [26]

Это соответствует вызову по значению, что нам и требуется для энергичного интерпретатора. Однако следует заметить, что Е2 вычисляется таким образом только потому, что в стандартной реализации языка Норе функции вызываются по значению. Мы вернемся к этому вопросу в разд.  [27]

Мы можем также интерпретировать вызов по имени с помощью задержек, но не можем выполнять вызов по необходимости, поскольку не можем явно переписывать контекст. Если определяющий язык поддерживает ленивые конструкторы и энергичные функции ( как это сделано в стандартной реализации языка Норе), тогда мы можем реализовать и вызов по значению, и вызов по имени, и вызов по необходимости, используя энергичные свойства функций и ленивые свойства конструкторов.  [28]

Проблема, однако, заключается в том, что когда Е действительно приводится к слабой заголовочной нормальной форме ( после вычисления левого аргумента функции, например), контекст не изменяется. Поэтому несмотря на тот факт, что мы создаем только одну копию выражения аргумента, нам необходимы повторные вычисления Е, так что интерпретатор реализует вызов по имени. Хотя может показаться, что для замещения в контексте задержки ее значением нам требуется что-то вроде оператора присваивания, более удовлетворительное ( с точки зрения функциональности) решение состоит в использовании того факта, что в стандартной реализации языка Норе конструкторы сами вызываются по необходимости.  [29]



Страницы:      1    2