Порти́рование (англ. porting[1]) — в программировании — адаптация некоторой программы или её части так, чтобы она работала в другой среде, отличающейся от той среды, под которую она была изначально написана, с максимальным сохранением её пользовательских свойств. В этом основное отличие понятий порт и форк — в первом случае все пользовательские свойства пакета стараются сохранить, а во втором — это базирующаяся на общей основе самостоятельная разработка с новыми полезными свойствами.
Процесс портирования также называют переносом, а результат — портом. Но в любом случае главной задачей при портировании является сохранение привычных пользователю интерфейса и приёмов работы с пакетом и его свойств. Добавление новых или удаление части имеющихся свойств при портировании программных продуктов не допускается.
Портируемость (переносимость, англ. portability) обычно относится к одной из двух вещей:
- Портируемость — компиляция кода (обычно в некоторый промежуточный код, который затем интерпретируется или компилируется во время исполнения, «на лету», англ. Just-In-Time[2]), затем запускать его на множестве платформ без каких-либо изменений.
- Портируемость — как свойство программного обеспечения, описывающее, насколько легко это ПО может быть портировано. По мере развития операционных систем, языков и техники программирования, становится всё проще портировать программы между различными платформами. Одной из изначальных целей создания языка Си и стандартной библиотеки этого языка — была возможность простого портирования программ между несовместимыми аппаратными платформами. Дополнительные преимущества в плане портируемости могут иметь программы, удовлетворяющие специальным стандартам и правилам написания (см., например: Smart Package Manager).
Необходимость в выполнении портирования возникает обычно из-за различий в системе команд процессора, различий между способами взаимодействия операционной системы и программ (API — Application Program Interface), принципиальных различий в архитектуре вычислительных систем, либо по причине некоторых несовместимостей или даже полного отсутствия используемого языка программирования в целевом окружении.
Международные стандарты (в частности, продвигаемые ISO) значительно упрощают портирование[3], благодаря тому что они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1) сводятся к перекомпиляции программы на новой платформе.
Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как GCC, предоставляющий неизменный язык программирования на различных платформах.
Некоторые языки программирования высокого уровня (Eiffel[4], Esterel) достигают портируемости путём трансляции исходного кода в промежуточный язык, имеющий компиляторы для многих процессоров и операционных систем.
Термин портирование часто применяется к компьютерным играм, а именно, к процессу переноса компьютерной игры с первоначальной целевой платформы (персонального компьютера или игровой приставки) на другую платформу. Ранние порты видеоигр, по сути, были результатом значительного или полного переписывания программы, но всё больше современных игр разрабатывается с использованием программного обеспечения, позволяющего генерировать код как для компьютеров, так и для одной или нескольких игровых приставок.
Применительно к видеоиграм, портом также может называться улучшенный осовремененный движок, заменяющий исполняемые файлы игры и требующий для своей работы оригинальные файлы с ресурсами игры. Такие порты не обязательно делаются для программной и аппаратной совместимости — часто целью является расширение возможностей игры, сдерживаемых устаревшим примитивным движком.
В зависимости от того, для чего первоначально разрабатывалось то или иное программное обеспечение, его называют родным или портированным. Родное (англ. native[5]) ПО разрабатывается сразу для той платформы (аппаратного обеспечения и/или операционной системы), о которой идёт речь. Портированное (англ. ported) ПО разрабатывается для одних платформ, после чего переносится для работы на других платформах.
Примеры
- Для ОС Linux 1.2 с окружением GNU, Solaris 2.4, HPUX 9, SGI IRIX графический редактор The GIMP является родным[6], а например на Windows, Mac OS X[7], ОС семейства BSD UNIX — FreeBSD/OpenBSD/NetBSD, DEC UNIX (DEC Ultrix, DEC OSF/1)/Tru64UNIX, и ряд других UNIX систем он был портирован с сохранением своих пользовательских свойств. В процессе портирования были разработаны графические библиотеки GTK (GIMP Toolkit) и gdk (GIMP Drawing Kit), которые позволили использовать GIMP вне зависимости от наличия библиотеки Motif.[8]
- Сама операционная система Linux портирована на огромное количество платформ.[9]
- Логическая игра 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: для них была выпущена мобильная версия движка Xash3D (совместимого с оригинальным движком Half-Life), позволяющая запускать игры на любом устройстве с ОС Android. Однако, эти порты не являются официальными.
- В настоящее время также существует тенденция создания т. н. «ремейков» старых игр, изначально выходивших на отдельных устройствах, для современных смартфонов и планшетов. Примерами таких игр являются «Змейка», «Тетрис», «Электроника», «Pac-Man» и т. д.
См. также
Примечания
Литература
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.