Portování softwaru
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 3. prosince 2021; kontroly vyžadují
2 úpravy .
Portování ( anglicky porting [1] ) - v programování se portováním rozumí přizpůsobení nějakého programu nebo jeho části tak, aby fungoval v jiném prostředí , odlišném od prostředí, pro které byl původně napsán s maximálním zachováním jeho uživatele. vlastnosti. To je hlavní rozdíl mezi koncepty port a fork – v prvním případě se snaží zachovat všechny uživatelské vlastnosti balíčku a ve druhém jde o nezávislý vývoj založený na společném základě s novými užitnými vlastnostmi.
Proces portování se také nazývá portování a výsledek se také nazývá port . Ale v každém případě je hlavním úkolem při portování zachovat známé uživatelské rozhraní a způsoby práce s balíčkem a jeho vlastnostmi. Přidání nových nebo odstranění některých existujících vlastností při portování softwarových produktů není povoleno.
Přenositelnost (přenositelnost, angl. portability ) obvykle označuje jednu ze dvou věcí:
- Přenositelnost - kompilace kódu (obvykle do nějakého mezikódu , který je pak interpretován nebo zkompilován za běhu , "za běhu", angl. Just-In-Time [2] ), poté jej spouštět na více platformách bez jakýchkoliv změn.
- Přenositelnost je vlastnost softwaru, která popisuje, jak snadno lze tento software přenést. Jak se operační systémy, jazyky a programovací techniky vyvíjejí, je snazší přenášet programy mezi různé platformy. Jedním z původních cílů vytvoření jazyka C a standardní knihovny tohoto jazyka byla možnost snadného portování programů mezi nekompatibilními hardwarovými platformami. Další výhody z hlediska přenositelnosti mohou mít programy, které splňují speciální standardy a pravidla pro zápis (viz například: Smart Package Manager ).
Potřeba portování obvykle vzniká kvůli rozdílům v instrukční sadě procesoru , rozdílům mezi způsoby interakce operačního systému a programů ( API - Application Program Interface), zásadním rozdílům v architektuře výpočetních systémů nebo kvůli některým nekompatibilitám popř. i úplná absence použitého programovacího jazyka.v cílovém prostředí.
Mezinárodní standardy (zejména ty propagované ISO ) značně usnadňují portování [3] tím, že popisují prostředí provádění programů takovým způsobem, že rozdíly mezi platformami jsou minimální. Portování programů mezi platformami, které implementují stejný standard (jako je POSIX .1 ), často spočívá v rekompilaci programu na nové platformě.
Existuje také stále se rozšiřující sada nástrojů pro usnadnění portování, jako je GCC , který poskytuje konzistentní programovací jazyk napříč platformami.
Některé programovací jazyky na vysoké úrovni ( Eiffel [4] , Esterel ) dosahují přenositelnosti překladem zdrojového kódu do středního jazyka , který má kompilátory pro mnoho procesorů a operačních systémů.
Termín porting je často aplikován na počítačové hry , jmenovitě proces portování počítačové hry z její původní cílové platformy ( osobní počítač nebo herní konzole ) na jinou platformu. Rané porty videoher byly v podstatě výsledkem velkých nebo úplných přepisů softwaru, ale stále více moderních her se vyvíjí pomocí softwaru, který dokáže generovat kód jak pro počítače, tak pro jednu nebo více videoherních konzolí.
Pokud jde o videohry, port lze také nazvat vylepšeným modernizovaným enginem, který nahrazuje spustitelné soubory hry a pro svůj provoz vyžaduje původní zdrojové soubory hry. Takové porty nejsou nutně vyrobeny pro softwarovou a hardwarovou kompatibilitu – často je cílem rozšířit možnosti hry, brzděné zastaralým primitivním enginem.
V závislosti na tom, k čemu byl ten či onen software původně vyvinut , se nazývá nativní nebo portovaný. Nativní ( anglicky native [5] ) software je vyvíjen okamžitě pro příslušnou platformu ( hardware a/nebo operační systém). Portovaný ( eng. ported ) software je vyvinut pro některé platformy a poté převeden do práce na jiných platformách.
Příklady
- Pro OS Linux 1.2 s prostředím GNU , Solaris 2.4, HPUX 9, SGI IRIX , Grafický editor GIMP je nativní [6] , a například pro Windows , Mac OS X [7] , OS rodiny BSD UNIX — FreeBSD/OpenBSD /NetBSD, DEC UNIX (DEC Ultrix , DEC OSF/1 )/Tru64UNIX a řada dalších UNIXových systémů byl portován při zachování svých uživatelských vlastností. Během procesu portování byly vyvinuty grafické knihovny GTK (GIMP Toolkit) a gdk (GIMP Drawing Kit), které umožnily používat GIMP bez ohledu na přítomnost knihovny Motif . [osm]
- Samotný operační systém Linux byl portován na velké množství hardwarových platforem . [9]
- Logická hra World of Goo byla nejprve vydána pro Wii a Windows a poté portována na Mac OS X a Linux.
- Quake 2 funguje dobře pod moderními verzemi Windows, ale existují pro něj porty, které nahrazují původní engine pokročilejším.
- Max Payne , GTA 3 , GTA Vice City a GTA: San Andreas byly portovány na mobilní platformy ( Android , iOS ). Navíc celá série Grand Theft Auto byla původně vytvořena pro konzole a poté portována (s vylepšenou grafikou) na Windows PC.
- Situace je podobná u tak kultovních her, jako je Half-Life a Counter-Strike : pro ně byla vydána mobilní verze enginu Xash3D (kompatibilní s původním enginem Half-Life ), která umožňuje spouštět hry na jakémkoli zařízení Android. . Tyto porty však nejsou oficiální.
- V současné době je také tendence vytvářet tzv. „ Předělávky “ starých her, původně vydané na samostatných zařízeních, pro moderní chytré telefony a tablety. Příklady takových her jsou „ Snake “, „ Tetris “, „ Electronics “, „ Pac-Man “ atd.
Viz také
Poznámky
- ↑ port - definice portu v angličtině z Oxfordského slovníku . Získáno 14. července 2016. Archivováno z originálu 25. července 2016. (neurčitý)
- ↑ Towards Intelligent Engineering and Information Technology Archived 21. března 2013 na Wayback Machine Kapitola 6.3 Java: „Hlavní výhodou použití bajtového kódu je portování… JIT kompilace a dynamická rekompilace umožňují programům Java přiblížit se rychlosti nativního kódu bez ztráty přenositelnosti“
- ↑ Donald A. Levine. POSIX Programmer's Guide. Psaní přenosných unixových programů pomocí standardu POSIX.1 Archivováno 21. března 2013 na Wayback Machine // O'Reilly, 1991-1994 "IEEE Std 1003.1-1988, běžně známé jako POSIX... Když aplikace dodržují pravidla POSIX, je snazší přesun programů z jednoho operačního systému vyhovujícího POSIXu do druhého"
- ↑ Bertrand Meyer. Přístupy k přenositelnosti Archivováno 26. dubna 2012 na Wayback Machine // JOOP (Journal of Object-Oriented Programming), sv. 11, č. 6, červenec-srpen 1998, strany 93-95. „Všechny současné Eiffelovy kompilátory kromě jednoho… používají C jako svůj prostřední jazyk. … Ukázalo se, že tato technika nabízí klíčové výhody: Záruka přenositelnosti“ a další
- ↑ nativní software Archivováno 7. května 2012 na Wayback Machine A Dictionary of Computing, 2004
- ↑ Spencer Kimball a Peter Mattis. Readme (txt) (downlink) (11. února 1996). Získáno 23. března 2008. Archivováno z originálu 17. února 2011. (neurčitý) Balíček GIMP 0.54 z roku 2006, viz README: "GIMP byl testován (a vyvinut) na následujících operačních systémech: Linux 1.2.13, Solaris 2.4, HPUX 9.05, SGI IRIX"
- ↑ William von Hagen. Ubuntu Linux Bible: Featuring Ubuntu 10.04 LTS Archivováno 21. března 2013 v kapitole Wayback Machine "Použití GIMPu" na straně 14-35
- ↑ Program pro manipulaci s obrázky GNU. Uživatelský manuál. Příloha A. Historie GIMPu 2. Rané dny GIMPu Archivováno 2. února 2012 na Wayback Machine „Hlavními výhodami programování byly nové sady nástrojů GTK (GIMP Toolkit) a gdk (GIMP Drawing Kit), které eliminovaly spoléhání se na Motif“
- ↑ Archiv jádra Linuxu byl archivován 21. srpna 2011. : Ačkoli byl Linux původně vyvinut pro 32bitové x86 PC ( od 386), dnes také běží na (alespoň) následujících architekturách: 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 a Analog Devices Blackfin; pro mnoho z nich v 32bitové i 64bitové verzi. (Ačkoli byl původně vyvinut nejprve pro 32bitové počítače s procesorem x86 (386 nebo vyšší), dnes Linux také běží na (alespoň) Alpha AXP, Sun SPARC, Motorola 68000, PowerPC, ARM, Hitachi SuperH, IBM S/390, Architektury MIPS, HP PA-RISC, Intel IA-64, AMD x86-64, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC V850, Tensilica Xtensa a Analog Devices Blackfin; pro mnoho z těchto architektur v obou 32bitové a 64bitové varianty)
Literatura
- Andrew S. Tanenbaum (1984): Organizace strukturovaného počítače 10. tisk. ISBN 0-13-854605-3 .
- Brian Hook. Napsat přenosný kód: úvod do vývoje softwaru pro více platforem - No Starch Press, 2005; ISBN 1-59327-056-9