Portare software
Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de
versiunea revizuită la 3 decembrie 2021; verificările necesită
2 modificări .
Portare ( porting în engleză [1] ) - în programare , portarea este înțeleasă ca adaptarea unui program sau a unei părți din acesta astfel încât să funcționeze într-un mediu diferit , diferit de mediul pentru care a fost scris inițial cu păstrarea maximă a utilizatorului său proprietăți. Aceasta este diferența principală dintre conceptele de port și furcă - în primul caz, încearcă să păstreze toate proprietățile utilizatorului pachetului, iar în al doilea, este o dezvoltare independentă bazată pe o bază comună cu noi proprietăți utile.
Procesul de portare se mai numește și portare , iar rezultatul este numit și port . Dar, în orice caz, sarcina principală în timpul portarii este de a păstra interfața de utilizator familiară și metodele de lucru cu pachetul și proprietățile acestuia. Nu este permisă adăugarea de noi sau ștergerea unora dintre proprietățile existente la portarea produselor software.
Portabilitatea (portabilitate, ing. portabilitate ) se referă de obicei la unul dintre două lucruri:
- Portabilitate - compilare de cod (de obicei într-un cod intermediar , care este apoi interpretat sau compilat în timpul execuției , „în zbor”, ing. Just-In-Time [2] ), apoi rulați-l pe mai multe platforme fără nicio modificare.
- Portabilitatea este o proprietate a software-ului care descrie cât de ușor poate fi portat acel software. Pe măsură ce sistemele de operare, limbajele și tehnicile de programare evoluează, devine mai ușor să portați programele între diferite platforme. Unul dintre obiectivele originale ale creării limbajului C și a bibliotecii standard a acestui limbaj a fost abilitatea de a porta cu ușurință programe între platforme hardware incompatibile. Avantaje suplimentare în ceea ce privește portabilitatea pot avea programe care îndeplinesc standarde și reguli speciale de scriere (vezi, de exemplu: Smart Package Manager ).
Nevoia de portare apare, de obicei, din cauza diferențelor în setul de instrucțiuni al procesorului , a diferențelor dintre modurile în care sistemul de operare și programele interacționează ( API - Application Program Interface), diferențe fundamentale în arhitectura sistemelor de calcul sau din cauza unor incompatibilități sau chiar şi absenţa completă a limbajului de programare utilizat.în mediul ţintă.
Standardele internaționale (în special cele promovate de ISO ) fac portarea mult mai ușoară [3] prin descrierea mediului de execuție al programelor în așa fel încât diferențele dintre platforme să devină minime. Adesea, portarea programelor între platforme care implementează același standard (cum ar fi POSIX .1 ) se reduce la recompilarea programului pe noua platformă.
Există, de asemenea, un set de instrumente în continuă expansiune pentru a facilita portarea, cum ar fi GCC , care oferă un limbaj de programare consistent pe toate platformele.
Unele limbaje de programare de nivel înalt ( Eiffel [4] , Esterel ) realizează portabilitatea prin traducerea codului sursă într- un limbaj intermediar care are compilatoare pentru multe procesoare și sisteme de operare.
Termenul de portare este adesea aplicat jocurilor pe calculator , și anume procesul de portare a unui joc pe calculator de pe platforma țintă inițială ( calculator personal sau consola de jocuri ) pe o altă platformă. Porturile timpurii pentru jocuri video au fost în esență rezultatul unor rescrieri majore sau complete de software, dar tot mai multe jocuri moderne sunt dezvoltate folosind software care poate genera cod atât pentru computere, cât și pentru una sau mai multe console de jocuri video.
În ceea ce privește jocurile video, un port poate fi numit și un motor modernizat îmbunătățit care înlocuiește fișierele executabile ale jocului și necesită fișierele de resurse originale ale jocului pentru funcționarea sa. Astfel de porturi nu sunt neapărat făcute pentru compatibilitate software și hardware - adesea scopul este de a extinde posibilitățile jocului, oprit de un motor primitiv învechit.
În funcție de ceea ce a fost dezvoltat inițial acest software sau acela , acesta se numește nativ sau portat. Software-ul nativ ( nativ englez [ 5] ) este dezvoltat imediat pentru platforma ( hardware și/sau sistem de operare) în cauză. Software-ul portat ( eng. portat ) este dezvoltat pentru unele platforme și apoi transferat pentru a funcționa pe alte platforme.
Exemple
- Pentru OS Linux 1.2 cu mediu GNU , Solaris 2.4, HPUX 9, SGI IRIX , Editorul grafic GIMP este nativ [6] , și de exemplu pe Windows , Mac OS X [7] , OS din familia BSD UNIX — FreeBSD/OpenBSD /NetBSD, DEC UNIX (DEC Ultrix , DEC OSF/1 )/Tru64UNIX și o serie de alte sisteme UNIX, a fost portat păstrând proprietățile personalizate. În timpul procesului de portare, au fost dezvoltate bibliotecile grafice GTK (GIMP Toolkit) și gdk (GIMP Drawing Kit), ceea ce a făcut posibilă utilizarea GIMP indiferent de prezența bibliotecii Motif . [opt]
- Sistemul de operare Linux în sine a fost portat pe un număr mare de platforme hardware . [9]
- Jocul de logică World of Goo a fost lansat mai întâi pentru Wii și Windows, apoi a fost portat pe Mac OS X și Linux.
- Quake 2 funcționează bine sub versiunile moderne de Windows, dar există porturi pentru el care înlocuiesc motorul original cu unul mai avansat.
- Max Payne , GTA 3 , GTA Vice City și GTA: San Andreas au fost portate pe platforme mobile ( Android , iOS ). În plus, întreaga serie Grand Theft Auto a fost creată inițial pentru console și apoi portată (cu grafică îmbunătățită) pe un PC Windows.
- Situația este similară cu jocuri de cult precum Half-Life și Counter-Strike : pentru ei, a fost lansată o versiune mobilă a motorului Xash3D (compatibilă cu motorul original Half-Life ), care vă permite să rulați jocuri pe orice dispozitiv Android. . Cu toate acestea, aceste porturi nu sunt oficiale.
- În prezent, există și o tendință de a crea așa-numitul. „ Remakes ” ale jocurilor vechi, lansate inițial pe dispozitive separate, pentru smartphone-uri și tablete moderne. Exemple de astfel de jocuri sunt " Snake ", " Tetris ", " Electronics ", " Pac-Man ", etc.
Vezi și
Note
- ↑ port - definiția lui port în engleză din dicționarul Oxford . Preluat la 14 iulie 2016. Arhivat din original la 25 iulie 2016. (nedefinit)
- ↑ Towards Intelligent Engineering and Information Technology Arhivat 21 martie 2013 la Wayback Machine Capitolul 6.3 Java: „Un beneficiu major al utilizării bytecode este portarea... Compilarea JIT și recompilarea dinamică permit programelor Java să se apropie de viteza codului nativ fără a pierde portabilitatea”
- ↑ Donald A. Levine. Ghidul programatorului POSIX. Scrierea de programe UNIX portabile cu standardul POSIX.1 Arhivat 21 martie 2013 la Wayback Machine // O'Reilly, 1991-1994 „IEEE Std 1003.1-1988, cunoscut în mod obișnuit ca POSIX... Când aplicațiile urmează regulile POSIX, este mai ușor de mutat programe de la un sistem de operare compatibil POSIX la altul"
- ↑ Bertrand Meyer. Abordări ale portabilității Arhivat la 26 aprilie 2012 la Wayback Machine // JOOP (Journal of Object-Oriented Programming), vol. 11, nr. 6, iulie-august 1998, paginile 93-95. „Toți compilatoarele Eiffel actuale, cu excepția unuia... folosesc C ca limbaj intermediar. … S-a demonstrat că această tehnică oferă avantaje cheie: Garanția portabilității” și nu numai
- ↑ software nativ Arhivat 7 mai 2012 la Wayback Machine A Dictionary of Computing, 2004
- ↑ Spencer Kimball și Peter Mattis. Readme (txt) (downlink) (11 februarie 1996). Preluat la 23 martie 2008. Arhivat din original la 17 februarie 2011. (nedefinit) Pachetul GIMP 0.54 din 2006, vezi README: „GIMP a fost testat (și dezvoltat) pe următoarele sisteme de operare: Linux 1.2.13, Solaris 2.4, HPUX 9.05, SGI IRIX”
- ↑ William von Hagen. Biblia Ubuntu Linux: Cu Ubuntu 10.04 LTS Arhivat 21 martie 2013 la capitolul Wayback Machine „Utilizarea GIMP” pagina 14-35
- ↑ Programul de manipulare a imaginilor GNU. Manual de utilizare. Anexa A. Istoricul GIMP 2. Primele zile ale GIMP Arhivat 2 februarie 2012 la Wayback Machine „Principalele avantaje ale programării au fost noile seturi de instrumente, GTK (GIMP Toolkit) și gdk (GIMP Drawing Kit), care au eliminat dependența de Motif”
- ↑ Arhivele Linux Kernel Arhivate 21 august 2011. : Deși Linux a fost dezvoltat inițial pentru PC- uri x86 pe 32 de biți ( de la 386), astăzi rulează și pe (cel puțin) următoarele arhitecturi: 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; pentru multe dintre ele în ambele versiuni pe 32 de biți și pe 64 de biți. (Deși a fost dezvoltat inițial pentru PC-uri bazate pe x86 pe 32 de biți (386 sau mai mare), astăzi Linux rulează și pe (cel puțin) Alpha AXP, Sun SPARC, Motorola 68000, PowerPC, ARM, Hitachi SuperH, IBM S/390, Arhitecturi 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; pentru multe dintre aceste arhitecturi în ambele variante pe 32 și 64 de biți)
Literatură
- Andrew S. Tanenbaum (1984): Structured computer organization 10th Print. ISBN 0-13-854605-3 .
- Brian Hook. Scrieți cod portabil: o introducere în dezvoltarea de software pentru mai multe platforme - No Starch Press, 2005; ISBN 1-59327-056-9