Порти́рование
(
англ.
porting
) — в
программировании
— адаптация некоторой
программы
или её части так, чтобы она работала в другой среде, отличающейся от той среды, под которую она была изначально написана, с максимальным сохранением её пользовательских свойств. В этом основное отличие понятий
порт
и
форк
— в первом случае все пользовательские свойства пакета стараются сохранить, а во втором — это базирующаяся на общей основе самостоятельная разработка с новыми полезными свойствами.
Процесс портирования также называют
переносом
, а результат —
портом
. Но в любом случае главной задачей при портировании является сохранение привычных пользователю интерфейса и приёмов работы с пакетом и его свойств. Добавление новых или удаление части имеющихся свойств при портировании программных продуктов не допускается.
Портируемость
(переносимость,
англ.
portability
) обычно относится к одной из двух вещей:
-
Портируемость — компиляция кода (обычно в некоторый
промежуточный код
, который затем интерпретируется или
компилируется во время исполнения
, «на лету»,
англ.
Just-In-Time
), затем запускать его на множестве платформ без каких-либо изменений.
-
Портируемость — как свойство программного обеспечения, описывающее, насколько легко это ПО может быть портировано. По мере развития операционных систем, языков и техники программирования, становится всё проще портировать программы между различными платформами. Одной из изначальных целей создания языка
Си
и стандартной библиотеки этого языка — была возможность простого портирования программ между несовместимыми аппаратными платформами. Дополнительные преимущества в плане портируемости могут иметь программы, удовлетворяющие специальным стандартам и правилам написания (см., например:
Smart Package Manager
).
Необходимость в выполнении портирования возникает обычно из-за различий в системе команд
процессора
, различий между способами взаимодействия
операционной системы
и программ (
API
— Application Program Interface), принципиальных различий в архитектуре вычислительных систем, либо по причине некоторых несовместимостей или даже полного отсутствия используемого
языка программирования
в целевом окружении.
Международные стандарты (в частности, продвигаемые
ISO
) значительно упрощают портирование
, благодаря тому что они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как
POSIX
.1
) сводятся к перекомпиляции программы на новой платформе.
Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как
GCC
, предоставляющий неизменный язык программирования на различных платформах.
Некоторые языки программирования высокого уровня (
Eiffel
,
) достигают портируемости путём трансляции
исходного кода
в
, имеющий
компиляторы
для многих
процессоров
и операционных систем.
Термин
портирование
часто применяется к
компьютерным играм
, а именно, к процессу переноса компьютерной игры с первоначальной целевой платформы (
персонального компьютера
или
игровой приставки
) на другую платформу. Ранние порты видеоигр, по сути, были результатом значительного или полного переписывания программы, но всё больше современных игр разрабатывается с использованием программного обеспечения, позволяющего генерировать код как для компьютеров, так и для одной или нескольких игровых приставок.
Применительно к видеоиграм,
портом
также может называться улучшенный осовремененный движок, заменяющий исполняемые файлы игры и требующий для своей работы оригинальные файлы с ресурсами игры. Такие порты не обязательно делаются для программной и аппаратной совместимости — часто целью является расширение возможностей игры, сдерживаемых устаревшим примитивным движком.
В зависимости от того, для чего первоначально разрабатывалось то или иное
программное обеспечение
, его называют родным или портированным. Родное (
англ.
native
) ПО разрабатывается сразу для той платформы (
аппаратного обеспечения
и/или операционной системы), о которой идёт речь. Портированное (
англ.
ported
) ПО разрабатывается для одних платформ, после чего переносится для работы на других платформах.
Примеры
-
Для ОС Linux 1.2 с окружением
GNU
,
Solaris
2.4, HPUX 9,
SGI IRIX
графический редактор
The GIMP
является родным
, а например на
Windows
, Mac OS X
, ОС семейства
BSD UNIX
— FreeBSD/OpenBSD/NetBSD, DEC UNIX (DEC
Ultrix
, DEC
OSF/1
)/Tru64UNIX, и ряд других UNIX систем он был портирован с сохранением своих пользовательских свойств. В процессе портирования были разработаны графические библиотеки
GTK
(GIMP Toolkit) и
(GIMP Drawing Kit), которые позволили использовать GIMP вне зависимости от наличия библиотеки
Motif
.
-
Сама операционная система
Linux
портирована на огромное количество платформ.
-
Логическая игра
World of Goo
была сначала выпущена для
Wii
и Windows, а потом портирована на
Mac OS X
и Linux.
-
Игра
Quake 2
прекрасно работает под современными версиями ОС Windows, но для неё существуют порты, заменяющие оригинальный движок на более совершенный.
-
Max Payne
,
GTA 3
,
GTA Vice City
и
GTA: San Andreas
были портированы на мобильные платформы (
Android
,
iOS
). Кроме того, вся серия Grand Theft Auto изначально создавалась для консолей, а затем портировалась (с улучшением графической составляющей) на ПК под ОС Windows.
-
Аналогичная ситуация с такими культовыми играми, как
Half-Life
и
Counter-Strike
: для них была выпущена мобильная версия движка
(совместимого с
оригинальным движком Half-Life
), позволяющая запускать игры на любом устройстве с ОС Android. Однако, эти порты не являются официальными.
-
В настоящее время также существует тенденция создания т. н. «
ремейков
» старых игр, изначально выходивших на отдельных устройствах, для современных смартфонов и планшетов. Примерами таких игр являются «
Змейка
», «
Тетрис
», «
Электроника
», «
Pac-Man
» и т. д.
См. также
Примечания
-
(неопр.)
. Дата обращения: 14 июля 2016.
25 июля 2016 года.
-
от 21 марта 2013 на
Wayback Machine
Chapter 6.3 Java: «A major benefit of using bytecode is porting… JIT compilation and dynamic recompilation allow Java programs to approach the speed of native code without losing portability»
-
Donald A. Lewine.
от 21 марта 2013 на
Wayback Machine
// O’Reilly, 1991—1994 «IEEE Std 1003.1-1988, commonly known as POSIX … When applications follow POSIX rules, it is easier to move programs from one POSIX-conforming operating system to another»
-
Bertrand Meyer.
от 26 апреля 2012 на
Wayback Machine
// JOOP (Journal of Object-Oriented Programming), vol. 11, no. 6, July-August 1998, pages 93-95. «All current Eiffel compilers except for one … use C as their intermediate language. … This technique has been shown to offer key advantages: Guarantee of portability» и далее
-
от 7 мая 2012 на
Wayback Machine
A Dictionary of Computing, 2004
-
Spencer Kimball & Peter Mattis.
(неопр.)
(txt) (11 февраля 1996). Дата обращения: 23 марта 2008. Архивировано из
17 февраля 2011 года.
Пакет GIMP 0.54 2006 года, см файл README: «The GIMP has been tested (and developed) on the following operating systems: Linux 1.2.13, Solaris 2.4, HPUX 9.05, SGI IRIX»
-
William von Hagen.
от 21 марта 2013 на
Wayback Machine
Chapter «Using GIMP» page 14-35
-
от 2 февраля 2012 на
Wayback Machine
«Main programming advantages were the new toolkits, GTK (GIMP Toolkit) and gdk (GIMP Drawing Kit), which eliminated the reliance on Motif»
-
от 23 августа 2011 на
Wayback Machine
: Хотя Linux и разрабатывался сначала для 32-разрядных
x86
-
ПК
(от 386), сегодня он также работает (по крайней мере) на следующих архитектурах: Alpha AXP, Sun SPARC, Motorola 68000, PowerPC, ARM, Hitachi SuperH, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850, Tensilica Xtensa и Analog Devices Blackfin; для многих из них как в 32-разрядном, так и в 64-разрядном варианте. (Although originally developed first for 32-bit x86-based PCs (386 or higher), today Linux also runs on (at least) the Alpha AXP, Sun SPARC, Motorola 68000, PowerPC, ARM, Hitachi SuperH, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850, Tensilica Xtensa, and Analog Devices Blackfin architectures; for many of these architectures in both 32- and 64-bit variants)
Литература
-
Andrew S. Tanenbaum (1984): Structured computer organization 10th Print.
ISBN 0-13-854605-3
.
-
Brian Hook. Write portable code: an introduction to developing software for multiple platforms — No Starch Press, 2005;
ISBN 1-59327-056-9