Cтраница 2
Условное ассемблирование на практике довольно широко используется еще и для того, чтобы из одной и той же автокодной программы можно было легко получать различные варианты окончательной программы - например, различные модификации какого-либо транслятора, написанного на автокоде. [16]
Читателю рекомендуется сначала посмотреть окончательную программу и проверить, как она вычисляет требуемую функцию, а затем уже проследить за последовательными этапами перевода, представленными на рис. 8.10, и выяснить, как транслятор создает эту окончательную программу. [17]
Для этого достаточно представить i; в виде последовательной композиции трех программ: программы перевода из десятичной системы в унарную, программы 31, программы перевода из унарной системы в десятичную, ( Здесь напрашивается сравнение с электронными вычислительными машинами, работающими в двоичной системе счисления; в них имеется устройство, или программа, для пераработки исходных данных из десятичной системы в двоичную, а также устройство, или программа, для перевода окончательной программы опять в десятичную систему. Полезно заметить, что хотя мы намерены уделять главное внимание вычислению числовых функций, тем не менее это не ограничивает по существу природы алгоритмических проблем, решаемых на машинах Тьюринга. Поскольку такое же замечание можно сделать и относительно слова, изображающего результирующие данные, то ясно, что алгоритм поиска решения задачи можно интерпретировать как алгоритм вычисления значения числовой функции по заданному значению ее аргумента. Подобная арифметическая интерпретация ( или короче - арифметизация) часто применяется в математической логике и теории алгоритмов; мы с ней еще встретимся в данном параграфе. [18]
Структурный состав среды разработки с SystemC. [19] |
В пределах одного проекта допускается произвольное смешение уровней детализации описаний. Для получения окончательных программ, подаваемых на вход любого компилятора, совместимого с ANSI C, SystemC содержит не только стандартные библиотеки классов, но и компоновочную библиотеку, которая включает моделирующее ядро. Программное обеспечение системы разработки ( рис. 2.32), в составе которой обычно используется моделирующая SystemC, позволяет эффективно создавать, модифицировать и отлаживать проект разработчика. [20]
Выполняемые при этом действия показаны на рис. 8.8. Читатель должен тщательно проверить все последовательные шаги, определяя, какая синтаксическая строка табл. 8.4 применяется на каждом шаге, и отмечая те части блок-схемы транслятора ( рис. 8.4 или 8.5), которые при этом используются. Также следует проверить окончательную программу, посмотрев, как она будет вычислять заданное арифметическое выражение. [21]
Если мы применим резолюцию к дизъюнктам ( 4) и ( 5), то будет получен дизъюнкт-ответ. При этом в окончательной программе произойдет ветвление, так как оба дизъюнкта ( 4) и ( 5) жизненные. [22]
Конечно, мы опустили многие важные свойства алгебраической компилирующей программы. Отметим сначала, что символы в окончательной программе должны представлять адреса. Поэтому, когда в первоначальной формуле встречаются числовые константы, им прежде всего необходимо выделить ячейки памяти. [23]
Мы уже коснулись аналогии между расчетами Монте-Карло л обычными лабораторными экспериментами. Автору неоднократно задавали вопрос о том, может ли в окончательной программе быть ошибка, слабо, но заметно влияющая на результаты. Я полагаю, что ответ должен выглядеть так же, как и ответ на подобный вопрос относительно результатов любого сравнительно сложного лабораторного эксперимента. В старых журналах стремление к краткости было столь велико, что зачастую читатель просто не мог догадаться о возможности подобных ошибок. Возможно, окажутся полезны приводимые ниже замечания, основанные главным образом на собственном опыте. [24]
Изучение - эффективности - это прежде всего визуализация работоспособности системы. Она требует определенных усилий исследователя и больших затрат машинного времени, поэтому окончательная программа испытаний системы - это некоторый компромисс между затратами на изучение свойств системы и глубиной понимания ее возможностей. [25]
Она требует определенных усилий исследователя и больших затрат машинного времени, поэтому окончательная программа испытаний системы - это некоторый компромисс между затратами на изучение свойств системы и глубиной понимания ее возможностей. [26]
В программе, решающей проблемы подобного класса, будут использованы широкие возможности средств программирования правил в языке CLIPS и продемонстрированы некоторые интересные приемы, например использование контекстов и обратного прослеживания. Мы также покажем, как конструировать и тестировать прототипы, которые приблизительно воспроизводят поведение окончательной программы. [27]
Подобно тому как в процессе пошагового совершенствования программы образуется документированная последовательность промежуточных функций и их эквивалентных представлений, в процессе пошаговой реорганизации должна возникать последовательность структурированных программ, из которых только для первой проводится доказательство правильности, а для каждой из последующих доказывается, что она эквивалентна предыдущей. Каждый шаг реорганизации служит основой верификации для последующих шагов, и обычно не объясняют, почему окончательная программа является правильной. [28]
Ибо, как я уже сказал, не может быть никакого сомнения в том, что окончательная программа американского рабочего класса должна быть и будет в основном та же, что и программа, принятая теперь всем борющимся рабочим классом Европы, та же, что и программа немецко-американской Социалистической рабочей партии. В этом отношении эта партия призвана сыграть весьма важную роль в движении. Но чтобы достигнуть этого, она должна отбросить все остатки своего иностранного обличья. Она должна стать полностью американской. Она но может рассчитывать, что американцы придут к ней; представляя собой меньшинство, и притом иммигрантов, она должна пойти к американцам, представляющим собой огромное большинство и притом коренных жителей страны. [29]
С одной стороны, это позволяет программисту добиться того, что две или более переменных будут означать одно и то же. Предположим, что при написании какой-то длинной программы программист непроизвольно изменил наименования переменных и что в окончательной программе X, XI и RST6 должны означать одну и ту же переменную. Для этого нет необходимости переписывать всю программу, что является достаточно сложным делом, причем при переписывании программы легко допустить различные ошибки. [30]