Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kernigan_paik.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.91 Mб
Скачать

8. Переносимость

Наконец, стандартизация, так же как и соглашения, может служить еще одной

демонстрацией строгого порядка. Но, в отличие от соглаше­ний, она принимается в

современной архитектуре как продукт, хоть и украшающий нашу технологию, но опасный

из-за ее потенциального доминирования и грубости.

Роберт Вентури. Сложности и противоречия в архитектуре

Написать корректную и эффективную программу трудно. Поэтому если программа уже работает в одной среде, то вам, скорее всего, не захо­чется повторять пройденный путь ее создания при переходе на другой компилятор, процессор или операционную систему. В идеале программа не должна требовать внесения никаких изменений.

Этот идеал называется переносимостью (portability). На практике термин "переносимость" нередко относят к более слабому свойству: про­грамму проще видоизменить при переносе в другую среду исполнения, чем написать заново. Чем меньше изменений надо внести, тем выше пе­реносимость программы.

Вы можете спросить, почему вообще зашел разговор о переносимости: если программа будет исполняться в какой-то конкретной среде, зачем тратить время на то, чтобы обеспечивать ей более широкую область при­менения? Ну, во-первых, каждая хорошая программа почти по опреде­лению начинает с какого-то момента применяться в непредсказуемых местах. Создание продукта с функциональностью более общей, чем из­начальная спецификация, приведет к тому, что меньше сил придется тратить на поддержку продукта на протяжении его жизненного цикла. Во-вторых, среда исполнения меняется. При замене компилятора, опе­рационной системы, железа меняются многие параметры окружения программы. Чем меньше программа зависит от специальных возможно­стей, тем меньше вероятность возникновения сбоев при изменении ус­ловий и тем проще программа адаптируется к этим условиям. И нако­нец, последнее и самое важное обстоятельство: переносимая программа всегда лучше написана. Усилия, затраченные на обеспечение переносимос­ти программы, сказываются на всех ее аспектах; она оказывается лучше спроектированной, аккуратнее написанной и тщательнее протестирован­ной. Технологии программирования переносимых программ непосред­ственно привязаны к технологиям хорошего программирования вообще.

Естественно, степень переносимости должна определяться исходя из реальных условий. Нет такой вещи, как абсолютно переносимая про­грамма, — разве только программа, опробованная не во всех средах. Од­нако мы можем сделать переносимость одной из своих главных целей, стараясь создать программу, которая бы выполнялась без изменений практически везде. Даже если эта цель не будет достигнута в полном объеме, время, потраченное на ее достижение, с лихвой окупится, если программу придется переделывать под другие условия.

Мы хотим посоветовать следующее: старайтесь писать программы, ко­торые бы работали при всех комбинациях различных стандартов, интер­фейсов и сред, в принципе подходящих для ее исполнения. Не старайтесь исправить каждую ошибку переносимости, добавляя дополнительный код, наоборот, адаптируйте программу для работы при новых ограниче­ниях. Используйте абстракцию и инкапсуляцию, чтобы ограничить и кон­тролировать те непереносимые фрагменты кода, без которых не обойтись. Если ваш код сможет работать при всех ограничениях, а системные разли­чия в нем будут локализованы, он станет еще и более понятным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]