Портирование программ
Порти́рование (англ. 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» и т. д.
См. также
- Виртуализация
- Эмуляция
- Кросс-компилятор
- Кроссплатформенное программное обеспечение
Примечания
- port — definition of port in English from the Oxford dictionary. Дата обращения: 14 июля 2016. Архивировано 25 июля 2016 года.
- Towards Intelligent Engineering and Information Technology Архивная копия от 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. POSIX Programmer’s Guide. Writing Portable UNIX Programs with the POSIX.1 Standard Архивная копия от 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. Approaches to portability Архивная копия от 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» и далее
- native software Архивная копия от 7 мая 2012 на Wayback Machine A Dictionary of Computing, 2004
- Spencer Kimball & Peter Mattis. Readme (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. Ubuntu Linux Bible: Featuring Ubuntu 10.04 LTS Архивная копия от 21 марта 2013 на Wayback Machine Chapter «Using GIMP» page 14-35
- GNU Image Manipulation Program. User Manual. Appendix A. GIMP History 2. The Early Days of GIMP Архивная копия от 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»
- The Linux Kernel Archives Архивная копия от 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
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Портирование программ, Что такое Портирование программ? Что означает Портирование программ?
Termin Port imeet takzhe drugie znacheniya Porti rovanie angl porting v programmirovanii adaptaciya nekotoroj programmy ili eyo chasti tak chtoby ona rabotala v drugoj srede otlichayushejsya ot toj sredy pod kotoruyu ona byla iznachalno napisana s maksimalnym sohraneniem eyo polzovatelskih svojstv V etom osnovnoe otlichie ponyatij port i fork v pervom sluchae vse polzovatelskie svojstva paketa starayutsya sohranit a vo vtorom eto baziruyushayasya na obshej osnove samostoyatelnaya razrabotka s novymi poleznymi svojstvami Process portirovaniya takzhe nazyvayut perenosom a rezultat portom No v lyubom sluchae glavnoj zadachej pri portirovanii yavlyaetsya sohranenie privychnyh polzovatelyu interfejsa i priyomov raboty s paketom i ego svojstv Dobavlenie novyh ili udalenie chasti imeyushihsya svojstv pri portirovanii programmnyh produktov ne dopuskaetsya Portiruemost perenosimost angl portability obychno otnositsya k odnoj iz dvuh veshej Portiruemost kompilyaciya koda obychno v nekotoryj promezhutochnyj kod kotoryj zatem interpretiruetsya ili kompiliruetsya vo vremya ispolneniya na letu angl Just In Time zatem zapuskat ego na mnozhestve platform bez kakih libo izmenenij Portiruemost kak svojstvo programmnogo obespecheniya opisyvayushee naskolko legko eto PO mozhet byt portirovano Po mere razvitiya operacionnyh sistem yazykov i tehniki programmirovaniya stanovitsya vsyo proshe portirovat programmy mezhdu razlichnymi platformami Odnoj iz iznachalnyh celej sozdaniya yazyka Si i standartnoj biblioteki etogo yazyka byla vozmozhnost prostogo portirovaniya programm mezhdu nesovmestimymi apparatnymi platformami Dopolnitelnye preimushestva v plane portiruemosti mogut imet programmy udovletvoryayushie specialnym standartam i pravilam napisaniya sm naprimer Smart Package Manager Neobhodimost v vypolnenii portirovaniya voznikaet obychno iz za razlichij v sisteme komand processora razlichij mezhdu sposobami vzaimodejstviya operacionnoj sistemy i programm API Application Program Interface principialnyh razlichij v arhitekture vychislitelnyh sistem libo po prichine nekotoryh nesovmestimostej ili dazhe polnogo otsutstviya ispolzuemogo yazyka programmirovaniya v celevom okruzhenii Mezhdunarodnye standarty v chastnosti prodvigaemye ISO znachitelno uproshayut portirovanie blagodarya tomu chto oni opisyvayut sredu ispolneniya programm takim obrazom chto razlichiya mezhdu platformami stanovyatsya minimalnymi Chasto portirovanie programm mezhdu platformami realizuyushimi odin i tot zhe standart takoj kak POSIX 1 svodyatsya k perekompilyacii programmy na novoj platforme Sushestvuet takzhe vsyo rasshiryayushijsya nabor instrumentov oblegchayushih portirovanie naprimer takih kak GCC predostavlyayushij neizmennyj yazyk programmirovaniya na razlichnyh platformah Nekotorye yazyki programmirovaniya vysokogo urovnya Eiffel dostigayut portiruemosti putyom translyacii ishodnogo koda v imeyushij kompilyatory dlya mnogih processorov i operacionnyh sistem Termin portirovanie chasto primenyaetsya k kompyuternym igram a imenno k processu perenosa kompyuternoj igry s pervonachalnoj celevoj platformy personalnogo kompyutera ili igrovoj pristavki na druguyu platformu Rannie porty videoigr po suti byli rezultatom znachitelnogo ili polnogo perepisyvaniya programmy no vsyo bolshe sovremennyh igr razrabatyvaetsya s ispolzovaniem programmnogo obespecheniya pozvolyayushego generirovat kod kak dlya kompyuterov tak i dlya odnoj ili neskolkih igrovyh pristavok Primenitelno k videoigram portom takzhe mozhet nazyvatsya uluchshennyj osovremenennyj dvizhok zamenyayushij ispolnyaemye fajly igry i trebuyushij dlya svoej raboty originalnye fajly s resursami igry Takie porty ne obyazatelno delayutsya dlya programmnoj i apparatnoj sovmestimosti chasto celyu yavlyaetsya rasshirenie vozmozhnostej igry sderzhivaemyh ustarevshim primitivnym dvizhkom V zavisimosti ot togo dlya chego pervonachalno razrabatyvalos to ili inoe programmnoe obespechenie ego nazyvayut rodnym ili portirovannym Rodnoe angl native PO razrabatyvaetsya srazu dlya toj platformy apparatnogo obespecheniya i ili operacionnoj sistemy o kotoroj idyot rech Portirovannoe angl ported PO razrabatyvaetsya dlya odnih platform posle chego perenositsya dlya raboty na drugih platformah PrimeryDlya OS Linux 1 2 s okruzheniem GNU Solaris 2 4 HPUX 9 SGI IRIX graficheskij redaktor The GIMP yavlyaetsya rodnym a naprimer na Windows Mac OS X OS semejstva BSD UNIX FreeBSD OpenBSD NetBSD DEC UNIX DEC Ultrix DEC OSF 1 Tru64UNIX i ryad drugih UNIX sistem on byl portirovan s sohraneniem svoih polzovatelskih svojstv V processe portirovaniya byli razrabotany graficheskie biblioteki GTK GIMP Toolkit i GIMP Drawing Kit kotorye pozvolili ispolzovat GIMP vne zavisimosti ot nalichiya biblioteki Motif Sama operacionnaya sistema Linux portirovana na ogromnoe kolichestvo platform Logicheskaya igra World of Goo byla snachala vypushena dlya Wii i Windows a potom portirovana na Mac OS X i Linux Igra Quake 2 prekrasno rabotaet pod sovremennymi versiyami OS Windows no dlya neyo sushestvuyut porty zamenyayushie originalnyj dvizhok na bolee sovershennyj Max Payne GTA 3 GTA Vice City i GTA San Andreas byli portirovany na mobilnye platformy Android iOS Krome togo vsya seriya Grand Theft Auto iznachalno sozdavalas dlya konsolej a zatem portirovalas s uluchsheniem graficheskoj sostavlyayushej na PK pod OS Windows Analogichnaya situaciya s takimi kultovymi igrami kak Half Life i Counter Strike dlya nih byla vypushena mobilnaya versiya dvizhka sovmestimogo s originalnym dvizhkom Half Life pozvolyayushaya zapuskat igry na lyubom ustrojstve s OS Android Odnako eti porty ne yavlyayutsya oficialnymi V nastoyashee vremya takzhe sushestvuet tendenciya sozdaniya t n remejkov staryh igr iznachalno vyhodivshih na otdelnyh ustrojstvah dlya sovremennyh smartfonov i planshetov Primerami takih igr yavlyayutsya Zmejka Tetris Elektronika Pac Man i t d Sm takzheVirtualizaciya Emulyaciya Kross kompilyator Krossplatformennoe programmnoe obespecheniePrimechaniyaport definition of port in English from the Oxford dictionary neopr Data obrasheniya 14 iyulya 2016 Arhivirovano 25 iyulya 2016 goda Towards Intelligent Engineering and Information Technology Arhivnaya kopiya ot 21 marta 2013 na 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 POSIX Programmer s Guide Writing Portable UNIX Programs with the POSIX 1 Standard Arhivnaya kopiya ot 21 marta 2013 na 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 Approaches to portability Arhivnaya kopiya ot 26 aprelya 2012 na 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 i dalee native software Arhivnaya kopiya ot 7 maya 2012 na Wayback Machine A Dictionary of Computing 2004 Spencer Kimball amp Peter Mattis Readme neopr txt 11 fevralya 1996 Data obrasheniya 23 marta 2008 Arhivirovano iz originala 17 fevralya 2011 goda Paket GIMP 0 54 2006 goda sm fajl 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 Ubuntu Linux Bible Featuring Ubuntu 10 04 LTS Arhivnaya kopiya ot 21 marta 2013 na Wayback Machine Chapter Using GIMP page 14 35 GNU Image Manipulation Program User Manual Appendix A GIMP History 2 The Early Days of GIMP Arhivnaya kopiya ot 2 fevralya 2012 na Wayback Machine Main programming advantages were the new toolkits GTK GIMP Toolkit and gdk GIMP Drawing Kit which eliminated the reliance on Motif The Linux Kernel Archives Arhivnaya kopiya ot 23 avgusta 2011 na Wayback Machine Hotya Linux i razrabatyvalsya snachala dlya 32 razryadnyh x86 PK ot 386 segodnya on takzhe rabotaet po krajnej mere na sleduyushih arhitekturah 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 i Analog Devices Blackfin dlya mnogih iz nih kak v 32 razryadnom tak i v 64 razryadnom variante 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 LiteraturaAndrew 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
