1626435694-d107b4090667f8488e7fa1ea1b3d0faa (844295), страница 15
Текст из файла (страница 15)
Мы второпях напишем: «Распределение полюсов должно удовлетворять условию, чтобы конечный оператор не имел результатов». По принципу, скааав А, говорить и В, мы должны будем, повидимому, рассмотреть, описать и запретить другие случаи употребления операторов с неиспользуемыми операторами. Предположим, что нам удастся это сделать. Однако тогда нал« надо будет реагировать на требования другого рода. Предположим (это практический пример), что в ЭВМ есть команда вычисления целой части числа, вырабатывающей прн этом и дробную час«ь, % 2.2.ИСХОДНЫЕ ОПРЕДЕЛЕНИЯ которая также автоматически отправляется в память.
В таких случаях, хочешь не хочешь, мы должны допускать наличие операторов с неиспользуемыми результатами и теория должна рассчитывать на такую возможность. Но уж если мы «выпустили джина из бутылки», то зачем нам ограничение на результаты заключительного оператора, если оно не будет «работать» в теории. Мы позволили себе отвлечься от основной нити рассуждения потому, что хорошее понимание разницы между формальными и «осмысленными» объектами для недостаточно опытных специалистов, занятых постановкой прикладной.задачи, иногда является источником больших трудностей. Над ними довлеет предрассудок, что чем конкретнее, чем прицельнее определение, тем правильнее, тем осмысленнее теория.
И здесь, так же как и в случае чрезмерных ббобщений, единственным методологическим критерием является постоянный логический контроль теоретических рассуждений и конструируемых алгоритмов на предмет того, чтобы любая общность использовалась до конца и, наоборот, любое ограничение использовалось бы но существу. Итак, мы принимаем определение распределения полюсов без каких-либо ограничений. Распределение памяти. Рассматривая последнее отображение Ь:Р— »-Х, читателю под влиянием прочитанного захочется сохранить его в полной всеобщности. Тем не менее нам все равно надо постаратьая вообразить возможные «особые» случаи в распределении памяти. Произвольное распределение памяти может, в частности, создавать возможности «незамкнутости» информационных связей вдоль каких-либо цепочек операторов, т. е.незаданных аргументов и неиспольаованных результатов.
Мы уже знаем из только что приведенного примера одновременного вычисления целой и дробной частей числа, а такя<е из более раннего примера 11 (гл. 1), что такая ситуация может создаваться наличием «избыто«гных» результатов и «необязательных» аргументов, а также неразличением на операторной схеме допустимых и недопустимых цепочек операторов. Таким образом, поскольку предотвратить пезамкнутость информационных связей мы не можем, нам нет необходимости и пытаться ограничивать распределение памяти с этой стороны. Наконец, в распределении памяти может быть еще одна особенност»е нескольким аргументам или нескольким результатам одного оператора сопоставляется одна и та же величина. Эта особенность требует определенного исследования.
Начнем с результатов. ГЛ. Х ПОСТАНОВКА ЗАДАЧИ И ОБЩАЯ ТКОРИЯ Когда мы характеризуем множество распределений памяти, фигурирующчх в определении операторной схемы, мы должны, естественно, иметь в виду не только те распределения, которые задают исходную схему, но и те, которые можем иметь в виду в поисках максимальной экономии памяти. С этой точки зрения мы знаем наперед, что распределение памяти, сопоставляющее ранее разноименным результатам оператора одну и ту же величину, будет заведомо недопустимым (простейшие примеры, иллюстрирующие наши рассуждения, показаны на рис.
2.2). Действительно, если слияние имен результатов не будет сопровождаться слиянием имен аргументов (рис. 2.2, б)), то мы по формальным л у г з 1/ з Ю Ю ю Рнс. 2.2. Простей1нке нрпмеры некорректных неренменованнй. прианакам будем иметь потерю информационной связи, что недопустимо. Если же слияние будет сделано согласованно, то мы, формально не нарушая принципа сохранения информационных связей, не сможем тем не менее их разумно интсрпретировать, так как для каждого аргумента не сможем знать, какой результат явился отправителем используемого значения величины.
Очевидно, что та же неопределенность создается, когда слияние имен имеет место в исходной схеме. Правда, мы можем попытаться дать специальную интерпретацию такому слиянию: считать, что в атом случае оператор таков, что значения результатов, которым сопоставлена одна величина, получаются всегда одинаковыми, что и поаволяет их без противоречий считать за одну взличину.
Эта оговорка спасает теорию, но, как видите, требует специального толкования. Наше дело решить — что удобнее. Автор полагает, что читатель согласится с его предпочтением наложить ограничение на распределение памяти: если г, чь гг и Т(г2) = )т(гг), то Б(гг) Ф цгг). Рассмотрим теперь слияние имен для аргументов. Наличие двух аргументов с одной и той же величиной в операторе, в отличие от случая результатов, особой интерпретации не требует.
Правда, мы знаем, что при любых распределениях памяти теория предпишет иам всегда эти два аргумента помечать одной ве- 5 2.2.ИСХОДНЬЖ ОПГВДЕЛЕНИЯ личиной; позтому, казалось бы, при переходе от программы к схеме,мы могли бы без ущерба для дела считать зги два аргумента за один, полагая тогда, что разные аргументы тоже имеют разные величины.
Однако прежде чем формулировать соответствующее ограничение, нам надо проверить, не будет ли слияние имен аргументов допустимым распределением. Немного поразмыслив, мы можем придумать схему, изображенную на рис. 2.3, а), в которой информационные связи по всем формальным а) Рис. 2.3. Слияние инеи аргуиентев. признакам окааываются совместимыми, что вполне позволяет сопоставить обоим аргументам оператора Р, одну и ту же величину (рис. 2.3, 6)).
Этот пример, правда, может показаться кому- нибудь неубедительным, так как он допускает незамкнутые информационные свяаи: приходя к Р, по цепочке РдР„мы имеем аргумент р неопределенным. Мы в атом случае сошлемся на уже состоявшуюся дискуссию о приемлемости незамкнутых связей даже вдоль допустимых структурой схемы цепочек операторов.
В частном случае, здесь работает такая интепретацня (опять взятая из реальных ситуаций): оператор Г4 езнает», по какой цепочке -к нему приходит управление и работает именно с аадействованным аргументом, не испольауя другой, оставшийся неопределенным. Таким образом, мы не накладываем каких бы то ни было ограничений на распределение величин среди аргументов.
Разобравшись с определением операторной схемы, нам те- перь надо дать точное определение совокупности информацион- ГЛ. Х ПОСТАНОВКА ЗАДАЧИ И ОВШАЯ ТЕОРИЯ ных связей как того инварианта схемы, сохранение которого является требованием допустимого распределения памяти. Для описания этого инварианта нам придется иметь дело с операторами и их цепочками в графе переходов, аргументами, результатами и сопоставленными им величинами. Для всего этого нам надо будет ввести дополнительные обозначения и термины, которые будут точными и строгими понятиями, согласованными с обозначениями, использованными при определении операторной схемы.
В этом месте нам будет уместно снова несколько отвлечься и поговорить вообще о некоторых принципах математической терминологии и символики. Отступление о терминах. Необходимость строгих определений и точных обозначений — это первое, к чему привыкает начинающий математик. Гораздо труднее дается искусство сочетания строгости и точности с простотой и ясностью при написании математической работы. Эта трудность усугубляется тем, что сейчас основной формой публикации оригинальных математических работ являются журнальные статьи, в которых, как правило, ограничения.
на объем являются главным фактором, определяющим стиль изложения. К вопросу о том, как преодолевается эта трудность, мы еще вернемся, а сейчас сделаем только дза отступления: об использовании содержательной терминологии и об индексомании. Термин — это или исконное елово языка публикации, или слово, внесенное в язык автором, используемое для обозначения абстрактного объекта или его свойств.