Cтраница 2
Мы решились на это изменение с некоторой неохотой, потому что подпрограммы, вошедшие в EISPACK, широко и тщательно тестировались, и распространяются и гарантируются проектом NATS. Однако внесенное изменение очень незначительно, и мы полагаем, что достигнутая этим машинная независимость стоила такой переделки. [16]
Мобильность и реализация операционной системы на языке высокого уровня - понятия не эквивалентные. Ясно, что реализация системы на машинно-независимом языке сама по себе не влечет машинной независимости. [17]
Очевидно, уровень машинно-ориентированного языка не должен быть ниже самого высокого из уровней машинного языка. Поэтому успех того или иного машинно-ориентированного языка в качестве мобильного зависит от сбалансированного выбора свойств машинной ориентации и машинной независимости. [18]
Формулируются требования к инструментальному языку, поддерживающему мобильность программного обеспечения. На примере трех языков - Паскаль, Си и Литтл - рассматриваются различные подходы к достижению основных требований: машинной независимости, эффективности, мобильности, набору необходимых средств. Дается сравнительная оценка свойств трех языков. [19]
Определяется естественная для пользователя абстрактная среда, возможно проблемно-ориентированная, которую можно реализовать в конкретной среде. Такой подход использован в языках сверхвысокого уровня Лисп [1], Сетл [2, 3], Пролог [4], Смолток [4] и др. Он характеризуется высокой степенью машинной независимости, но не позволяет достичь эффективности реализации на современных ЭВМ. [20]
Имеется множество ограничений на параметры и значения, передаваемые в подпрограммы. Значения, передаваемые в качестве параметров в подпрограммы, можно разделить на два класса: те, которые умещаются в одно машинное слово ЭВМ семейства CDC, и те, которые в него не умещаются ( что выглядит очень мило с точки зрения машинной независимости, не правда ли. Несложно догадаться, что ко второму классу относятся записи и массивы. Возможно, что есть некоторый смысл в таком разделении элементарных и составных значений. [21]
![]() |
Классификация типовых операций обработки экономической информации по уровню переносимости программной реализации. [22] |
Программные системы, ориентированные на конкретную ЭВМ, являются непереносимыми. Переносимость программ обеспечивается за счет использования специальных и унифицированных алгоритмических языков или с помощью эмуляторов. Например, свойством машинной независимости обладает специальный алгоритмический язык Си. Если для двух или более ЭВМ разработаны трансляторы с этого языка, а операционные системы, используемые на данных ЭВМ, совместимы, то любая программа, написанная на языке Си, может быть выполнена на любой из этих ЭВМ. [23]
Вычислительные машины не воспринимают запись непосредственно на универсальном языке. Прежде чем начать решение задачи, необходимо осуществить перевод ее записи с алгорифмического языка на язык системы команд конкретной ЭВМ. Следовательно, несмотря на машинную независимость исходного описания задачи, на ее решение в конечном счете влияют все особенности машинной арифметики конкретной ЭВМ, в частности, особенности представления чисел. [24]
Существует еще один подход, при котором программу, написанную на интерпретируемом языке, можно рассматривать как последовательность вызовов подпрограмм. Такую программу можно фактически расширить в длинную цепочку обращений к подпрограммам, и, наоборот, такую цепочку можно обычно упаковать в кодированной форме, которая пригодна для интерпретации. К преимуществам методов интерпретации относятся компактность представления, машинная независимость и лучшие диагностические возможности. Интерпретатор можно обычно написать так, что время, затрачиваемое собственно на интерпретацию кода и на переход к соответствующей подпрограмме, незначительно. [25]
Следует отметить также серию научно-исследовательских отчетов корпорации CIRAD [9, 10] о работах в области эксплуатационной надежности программного обеспечения; в этих отчетах можно найти полезные основополагающие сведения по проблеме, а также ряд практических рекомендаций по методам программирования и метрике эксплуатационной надежности. Среди методов программирования рассматриваются, например, концептуальная группировка, нисходящее программирование, модульное построение; в качестве характеристик программного обеспечения, определяющих удобство его эксплуатации, называются осмысленность, единообразие, компактность, понятность, переносимость на другие машины, наличие комментариев, скобочных группировок и имен для ссылок. Прекрасный обзор различных современных подходов к обеспечению мобильности программного обеспечения, таких, как моделирование одной ЭВМ на другой, эмуляция, интерпретация, самозагрузка программ, использование языков высокого уровня, дан в работе Уоррена [11]; основное внимание автор уделяет рассмотрению вопросов машинной независимости лингвистических процессоров. [26]
Сила языков искусственного интеллекта заключена и в их гибкости, что делает их чрезвычайно удобными при экспериментальном программировании, и в том, что они существенно сокращают объем работ, необходимых при создании большой сложной программы. Мы, однако, намеревались создать систему, которая работала бы возможно эффективнее на небольшом микропроцессоре, так что мы с определенным сожалением решили остановиться на алгоритмическом языке. Было решено использовать систему UCSD PASCAL: PASCAL потому, что мы науждались в языке, обеспечивающем рекурсивные вычисления и имеющем неплохую систему для работы с неупорядоченным массивом, a USCD PASCAL потому, что этот язык имеется у весьма широкого спектра вычислительных машин, а по коммерческим соображениям мы хотели бы достигнуть максимально возможной машинной независимости системы. [27]
Многие-из вышеупомянутых изменений, равно как и некоторые дополнительные ограничения, были приняты для обеспечения переносимости программ. Такое строгое определение необходимо, чтобы иметь возможность доказывать свойства программ. Строгость и машинная независимость достигнуты в основном без ущерба для эффективности использования программ. [28]
Трансляторы па алгоритмический язык высокого уровня весьма просты и эффективны. В них удобно обрабатывать произвольные функциональные зависимости, описание которых задается пользователем на входе языковой подсистемы на алгоритмическом языке, совпадающем с объектным. К таким описаниям достаточно добавить операторы объявления переменных, пролога и эпилога, реализующие стандартный интерфейс, и полученный текст можно передавать на выход. Использование широко распространенного алгоритмического языка в качестве объектного обеспечивает машинную независимость пакета проектирования. Необходимость дополнительной обработки объектных программ компиляторами из состава используемой ОС и низкая вычислительная эффективность полученной рабочей программы по сравнению с рабочей программой на машинном языке являются недостатками данного подхода. Поэтому при разработке языковой подсистемы пакета-транслятора целесообразно предусмотреть возможность смены набора модулей, ответственных за генерацию текста объектных программ на том или иным языке. При использовании принципа информационной локализованно-сти сделать это несложно. [29]
Алгоритмические языки высокого уровня в силу своей лаконичности и строгости правил построения предложений дисциплинируют мышление. Логическое несовершенство метода, скрытые изъяны сравнительно легко обнаруживаются при попытке его описания на алгоритмическом языке. Программа, написанная на алгоритмическом языке, легко может быть понята любым специалистом, который знает язык и характер задачи. В сочетании с фактором машинной независимости это существенно упростило обмен программами между различными научными центрами. [30]