Cтраница 2
Рассматриваются вопросы создания мобильных программ в условиях различных архитектур современных ЭВМ. Приводятся сведения о некоторых методах решения задачи мобильности программ. [16]
Значение этой функции вычисляется во время компиляции. Везде, где требуется указать размер памяти, следует использовать функцию SizeOf, а не константу. Применение SizeOf повышает мобильность программ. [17]
Не все программы являются фильтрами. Основной проблемой, возникающей при переносе программ из одной операционной среды в другую, является вопрос о связи программы с данной операционной системой. Мы решаем вопрос мобильности программ, выбирая небольшой набор простейших операций для доступа к данной среде. Все предлагаемые программы написаны на основе этих примитивов, поэтому зависимость от операционной среды сводится к небольшой группе процедур и функций. Программы, в которых они используются, могут быть перенесены на любую систему, где возможна реализация этих примитивов. Такая возможность продемонстрирована в данной книге путем переноса всех инструментальных средств на несколько различающихся между собой систем Паскаля для трех разных ЭВМ. [18]
В лагере прагматиков отмечают существенную потерю эффективности программ, свойственную глобальному подходу к обеспечению их надежности. В отсутствие формальных методов доказательства правильности практически ценных программ, считают сторонники прагматического подхода, следует ориентироваться на простые и легко контролируемые при отладке протоколы обмена данными между модулями программы, а сами модули должны иметь минимальные размеры. Отсюда - сопряженное с требованием надежности требование мобильности программ. [19]
Один из аспектов этой проблемы состоит в том, что в единое целое необходимо объединить ЭВМ с различным составом программного оборудования - и с различными операционными системами. Одна из сложных проблем современного программирования - проблема мобильности программ, прямо связана с развитием сетей ЭВМ и систем - коллективного пользования. [20]
Вначале Бейсик использовался только для обработки числовых величии, но позднее был расширен средствами обработки строковых переменных и снабжен набором процедур простого манипулирования символьными цепочками, который фактически стал стандартом. В настоящее время он является основным языком программирования персональных ЭВМ. К сожалению, почти каждая машина имеет свой собственный диалект Бейсика, ноэтому мобильность программ на Бейсике обеспечить довольно трудно. [21]
![]() |
Использование адресного пространства памяти ПЭВМ. [22] |
Еще один практически важный, хотя и частный, вопрос связан с проблемой совместимости между ПЭВМ. Инженер должен знать о скрытых и не вполне очевидных поначалу трудностях, возникающих в ситуациях, когда необходим обмен данными или программами между разными ЭВМ. Понятие совместимости ( см. также § 3.3) охватывает такой обширный объем понятий и уровней сложности в аппаратуре и программном обеспечении ЭВМ, что мобильность программ всегда носит на практике асимптотический характер. [23]
Машинная независимость является главным свойством мобильных программ. Машинная независимость предполагает более одного типа программно несовместимых машин. В этом случае невыгодно писать одни и те же программы для различных машин. Степень мобильности программы определяется также затратами, связанными с переносом ее в операционную обстановку новой ЭВМ. Эти затраты должны быть существенно меньше, чем если бы она была переписана заново. [24]
Следовательно, типы двух объектов совпадают тогда и только тогда, когда оба этих объекта описаны с помощью одного и того же идентификатора типа. Это правило строго выполняется в языке Ада, облегчая определение принадлежности двух объектов к одному и тому же типу как для того, кто захочет прочитать программу, так и для транслятора с языка Ада. Это удивительно, но в языке Паскаль, популяризировавшем сильную типизацию, вопросы установления эквивалентности типов оказались нерассмотренными. Это привело к ряду проблем, связанных с мобильностью программ, написанных на языке Паскаль, поскольку в различных трансляторах с него были использованы различные правила установления эквивалентности типов. [25]
Мы полагаем также, что часть предоставляемых средств управления типами ( но не все) могла бы быть применена в рамках языка Ада. Однако следует понимать, что язык Ада был разработан для программ, выполняющихся в относительно статическом окружении. Тем самым подразумевается, что исполнение программы, написанной на языке Ада, будет происходить в системе с относительно фиксированной конфигурацией. Если должно произойти изменение среды исполнения, программа, возможно, должна быть изменена ( автономно), перетранслирована и затем загружена заново. Отчасти данное ограничение может быть объяснено желанием гарантировать максимально возможную машинную независимость и мобильность программ. [26]
Единого общепринятого формального метода описания семантики языков программирования на сегодняшний день не существует. Описание языка обычно состоит из формального описания синтаксиса и неформального описания семантики языка. К ним относится, например, определение языка Алгол-68, которое было предложено на формальном языке W-грамматик. Потребность в строгом, формальном языке описания семантики языков программирования обусловлена необходимостью исключить вероятность появления двусмысленных толкований отдельных конструкций и механизмов языка, необходимостью стандартизировать язык, уменьшить расхождения между различными реализациями языка и тем самым повысить мобильность программ. [27]