Переносимость программного обеспечения

редактировать

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

Содержание

  • 1 Стратегии переносимости
    • 1.1 Подобные системы
    • 1.2 Различные процессоры
  • 2 Переносимость исходного кода
    • 2.1 Усилия по переносу исходного кода
  • 3 См. Также
  • 4 Ссылки
  • 5 источников

Стратегии переносимости

Переносимость программного обеспечения может включать:

  • перенос установленных программных файлов на другой компьютер с той же архитектурой.
  • Повторная установка программы из файлов распространения на другом компьютере с такой же архитектурой.
  • Сборка исполняемых программ для разных платформ из исходного кода ; это то, что обычно понимается под «портированием ".

аналогичных систем

Когда операционные системы одного семейства установлены на двух компьютерах с процессорами с аналогичные наборы инструкций часто можно передавать файлы, реализующие программные файлы, между ними.

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

В некоторых случаях программное обеспечение, обычно описываемое как «портативное программное обеспечение », специально предназначено для работы на разных компьютеры с совместимыми операционными системами и процессорами без какой-либо машинно-зависимой установки. Перенос - это не более чем перенос указанных каталогов. и их содержимое. Программное обеспечение, установленное на портативных запоминающих устройствах, таких как USB-накопители, можно использовать на любом совместимом компьютере, просто подключив запоминающее устройство, и сохраняет всю информацию о конфигурации на съемном устройстве. Информация об оборудовании и программном обеспечении часто хранится в файлах конфигурации в определенных местах (например, в реестре на машинах, работающих под управлением Microsoft Windows ).

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

Различные процессоры

По состоянию на 2011 год в большинстве настольных и портативных компьютеров использовались микропроцессоры, совместимые с 32- и 64-битными x86 наборами инструкций. В портативных устройствах меньшего размера используются процессоры с разными и несовместимыми наборами команд, например ARM. Разница между большими и меньшими устройствами такова, что подробные операции программного обеспечения различаются; приложение, предназначенное для отображения на большом экране, не может быть просто перенесено на смартфон карманного размера с крошечным экраном, даже если его функции аналогичны.

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

Переносимость исходного кода

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

В средах с открытым исходным кодом, таких как Linux, исходный код доступен всем. Раньше исходный код часто распространялся в стандартизированном формате и мог быть встроен в исполняемый код с помощью стандартного инструмента Make для любой конкретной системы умеренно осведомленными пользователями, если во время сборки не возникало ошибок. Некоторые дистрибутивы Linux распространяют программное обеспечение среди пользователей в исходной форме. В этих случаях обычно нет необходимости в детальной адаптации программного обеспечения к системе; он распространяется таким образом, что изменяет процесс компиляции в соответствии с системой.

Попытки перенести исходный код

Даже с кажущимися переносимыми языками, такими как C и C ++ усилия по переносу исходного кода могут значительно различаться. Авторы UNIX / 32V (1979) сообщили, что «[t] he (Bourne) shell [...] потребовал наибольших усилий по преобразованию из любой предположительно переносимой программы, по той простой причине, что он не переносится ».

Иногда усилия заключаются в перекомпиляции исходного кода, но иногда необходимо переписать основные части программного обеспечения. Многие языковые спецификации описывают поведение, определяемое реализацией (например, сдвиг вправо целого числа со знаком в C может выполнять логический или арифметический сдвиг). Функции операционной системы или сторонние библиотеки могут быть недоступны в целевой системе. Некоторые функции могут быть доступны в целевой системе, но демонстрируют немного другое поведение (например: utime () не работает под Windows с EACCES, когда он вызывается для каталога). Сам программный код также может содержать непереносимые вещи, например пути к включаемым файлам. Буквы дисков и обратная косая черта в качестве разделителя пути принимаются не во всех операционных системах. Реализация определяет такие вещи, как порядок байтов и размер int, также может увеличить усилия по переносу. На практике требование языков, таких как C и C ++, иметь WOCA (писать один раз, компилировать где угодно ) является спорным.

См. Также

Источники

Источники

Последняя правка сделана 2021-06-08 08:27:53
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте