U softverskom inženjerstvu, portovanje je proces prilagođavanja softvera, tako da izvršni program može biti kreiran za računarsko okruženje koje je različito od onog za koji je prvobitno projektovano (npr. drugačiji procesor, operativni sistem, ili biblioteke trećeg lica). Ovaj termin se takođe koristi kada se softver ili hardver menja kako bi bio upotrebljiv u različitim sredinama. 

Softver je prenosiv kada su troškovi portovanja na novu platformu znatno manji od cene njegovog pisanja od nule. Što je cena portovanja programa niža u odnosu na cenu implementacije, softver se smatra više prenosivim.

Etimologija

uredi

Termin "Port" je izveden iz italijanskog portare, što znači "da nose". Kada kod nije kompatibilan sa određenim operativnim sistemom ili arhitekturom, kod mora biti "prenesen" na novi sistem. 

Termin se obično ne primenjuje u procesu prilagođavanja softvera koji će pokretati sa manje memorije na istom procesoru i operativnom sistemu, niti se primenjuje na ponovnom pisanju izvornog koda na drugom jeziku (tj. jezik konverzije ili prevoda). 

Programeri često tvrde da je softver koji oni pišu prenosiv, što znači da je malo napora potrebno da bi se prilagodio novoj sredini. Količina napora koja je stvarno potrebna zavisi od nekoliko faktora, uključujući meru u kojoj se originalno okruženje (izvorne platforme) razlikuje od novog okruženja (ciljne platforme), iskustvo originalnih autora u znanju koji programski jezik da konstruišu i treće lice biblioteka je neuobičajeno da bude prenosivo, a količina napora uložena od strane originalnih autora je samo korišćenje prenosivih konstrukcija (platforme specifičnih konstrukcija često daju jeftinije rešenje). 

Istorija

uredi

 Broj značajno različitih procesora i operativnih sistema koji se koriste na desktopu danas je mnogo manji nego u prošlosti. Dominacija x86 arhitekture znači da se većina desktop softvera nikada ne koristi na drugom procesoru. U tom istom tržištu, izbor operativnih sistema je efektivno smanjen na tri: Windows, OS X i BSD Juniks/Linuks. Međutim, u ugrađenom sistemu tržišta, prenosivost ostaje značajan problem.

Međunarodni standardi, poput onih koje je proglasio ISO, u velikoj meri olakšavaju portovanje navodeći detalje računarskog okruženja na način kojim se smanjuje razlika između različitih platformi standarda u skladu. Pisanje softvera koji ostaje u granicama utvrđenim ovim standardima predstavlja praktičan, iako netrivijalan napor. Portovanje takvog programa između dve platforme za standardizaciju-kompatibilnu (kao što su POSIX.1) može biti samo pitanje učitavanja izvornog koda i rekompajliranje na novoj platformi. Međutim, praktičari često smatraju da su potrebne razne manje korekcije, zbog suptilne razlike platformi. Većina standarda pati od "sive zone" u kojoj razlike u tumačenju standarda dovode do malih varijacija sa platforme na platformu. 

Takođe postoji sve veći broj alata za olakšavanje portovanja, kao što je GNU Kompajler Kolekcija, koji obezbeđuje dosledne programske jezike na različitim platformama, i Automatska podešavanja, koja automatizuje otkrivanje manjih varijacija u okruženju i prilagođavanje softvera shodno tome, pre kompilacije. 

Kompajleri za neke programske jezike visokog nivoa(npr. Ajfel, Esterel) dobijaju prenosivost od izlaza izvornog koda u nekom drugom visokom nivou međujezika (kao što je C) za koje platforme su dostupni mnogi kompajleri. 

Dve aktivnosti vezane za (ali se razlikuju od) portovanje su emulirane i koso-sastavljene 

Portiranje kompajlera

uredi

Umesto prevođenja direktno u mašinskom kodu, moderni kompajleri prevode na mašinski nezavisan srednji kod u cilju unapređenja prenosivosti kompajlera i minimiziranja napora dizajna. Srednji jezik definiše virtuelnu mašinu koja može da izvrši sve programe pisane u srednjem jeziku (mašina definisana sa jezikom i obrnuto).[1] Uputstva srednjih kodova su prevedena na ekvivalentnim mašinama koda sekvenci od generatora koda za kreiranje izvršnog koda. Takođe je moguće da preskoče generaciju mašinskog koda samim sprovođenjem virtuelne mašine u mašinski kod. Ova implementacija virtuelne mašina se zove prevodilac, zato što piše u kodeksu uputstva srednjeg koda jedan po jedan i posle svakog čitanja izvršava ekvivalentnu sekvencu mašinskog koda (interpretator) na čitanju srednjih instrukcija direktno.[2]

Korišćenje srednjeg koda povećava prenosivost kompajlera, jer samo mašina zavisi kod ( tumač ili generator koda) kompajler sam po sebi treba da koristi na ciljnoj mašini. Ostatak kompajlera može da se uveze kao srednji kod i onda dalje obrađuje portovanjem koda generatora ili tumača, čime se proizvodi kompajler softvera ili direktno izvršenje srednjeg koda na prevodiocu. Nezavisni deo mašina može biti razvijen i testiran na drugoj mašini (domaćin mašina). To u velikoj meri smanjuje napore dizajna, jer je potrebno da se nezavisni deo mašina razvija samo jednom da stvore prenosni srednji kod.[3]

Tumač je manje složen i samim tim lakši za portovanje od generatora koda, zato što nije u stanju da uradi kodove optimizacije zbog ograničenog programskog koda (samo vidi jednu instrukciju u vremenu i potreban vam je niz da uradi optimizaciju). Neki tumači su izuzetno jednostavni za portovanje, zato što daju samo minimalne pretpostavke o skupu instrukcija o osnovnom hardveru. Kao rezultat, virtuelna mašina je čak jednostavnija od ciljanog procesora.[4]

Pisanje izvora kompajlera u potpunosti u programskom jeziku kompajler bi trebalo da prevede, čini sledeći pristup, poznatiji kao butstrapovanje komplajlera, izvodljiv na ciljanoj mašini: 

  1.  Portovanje prevodioca. Ovo treba da bude kodirano u asembleru koda, koristeći već postojeću asembler na metu.
  2.  Prilagodite izvor generatora koda na novu mašinu.
  3.  Pokrenite prilagođeni izvor pomoću prevodioca sa izvornog koda generatora kao ulaz. Ovo će generisati mašinski kod za generator koda.

Teži deo kodiranja optimizacije rutine se vrši pomoću jezika na visokom nivou umesto jezika asembler mete

 Prema dizajnerima BCPL jezika, kod koji se tumači (u slučaju BCPL) je kompaktniji od mašinskog koda ; tipično za faktor dva prema jedan. Interpretator koda međutim radi desetak puta sporije nego kod sastavljen na istoj mašini.[5]

 Dizajneri programskog jezika Java pokušavaju da iskoriste kompaktnost prevedenog koda, jer u Java programu mora da se prenese preko Interneta pre izvršenja da bi moglo da se počne na meti Java virtuelne mašine.

Portovanje video igara

uredi

Portovanje je takođe termin koji se koristi kada dizajn video igre je zasnovan na jednoj platformi, bilo da je arkada, konzola za video igre ili personalni računar, pretvarajući pokretanje na drugoj platformi. Ranije "portovanje" video igara često nije bilo pravo portovanje, nego prerađene verzije igara. Međutim, mnoge igre 21. veka su razvijene koristeći softver koji može da izbaci kod za jednu ili više konzola kao i za PS, bez potrebe za stvarnom promenom operatera. 

 Mnoge rane portovanja pretrpela su značajne probleme u pogledu kvaliteta igranja, jer kompjuteri uveliko razlikuju. Recenzije su se žalile na portovanje Apple II serije igara poput kraš, krambl i čomp koje ne koriste superiorne Atari 8 - bitne funkcije.[6] Lord Britiš izjavio je 1984. da Origin sistem razvio kompjuterske igrica za Apple II prvi pre portovanja njih na Komodor 64 i Atari, jer kasnije mašine sprajtovane i druge sofisticirane funkcije su portovale njih na Epl " daleko teže, možda čak i nemoguće. Epl verzija nikada neće biti urađena" .[7] Drugi su radili drugačije. Ozark Softskejp je, na primer, napisao M. U. L. E. za Atari prvo, zato što je preferirao razvoj za naprednije računare, uklanjanjem ili menjanjem funkcija kao što je potrebno tokom portovanja. Takva politika nije uvek bila moguća; Dani Bunten je izjavio da "M. U. L. E. ne može da se uradi za Apple ".[8]

 Arkade savršenih video igrica su one koje su prenesene iz verzije arkada na drugu platformu, kao što su konzole ili računara, bez ikakvih izmena rada u igri. To znači da grafika, zvuk i igranje, zajedno sa ostalim karakteristikama igre (uključujući i greške), su identične verzije arkade

" ( Konzola ) portovanja " je igra koja je prvobitno napravljen za konzolu (kao što je Vii ili Xbox 360), pre identične verzije stvorene gde se može igrati na ličnom računaru ili bilo koja druga konzola. Ovaj termin je široko korišćen od strane zajednice igara. Proces portovanje igre iz konzole na PS se često smatra negativnim zbog viših nivoa performansa koje računari obično nedovoljno koriste, delimično zbog konzole hardvera tokom njihovog rada (sa igrama se razvijaju za konzole specifikacije), dok računari postaju moćniji i hardver se razvija, ali i zbog prenetih igara ponekad se loše optimizuju za računare, ili sporo portuju. 

Vidi još

uredi

Reference

uredi
  1. ^ Tanenbaum 1984, str. 3
  2. ^ Tanenbaum 1984, str. 2
  3. ^ Richards,Whitby-Strevens 1984, Section 7.1 - Introduction. str. 124, explains compiler portability using intermediate code.
  4. ^ Richards,Whitby-Strevens 1984, Section 7.4 - The bootstrapping process and INTCODE. str. 133, explains the role of the INTCODE interpreter.
  5. ^ Richards,Whitby-Strevens 1984, Section 7.4.3 - Example. str. 136, gives an example translation of a BCPL program into INTCODE for the interpreter.
  6. ^ Stanton, Jeffrey; Wells, Robert P.; Rochowansky, Sandra; Mellid, Michael, ur. (1984). The Addison-Wesley Book of Atari Software. Addison-Wesley. str. 12,21,44,126. ISBN 0-201-16454-X. 
  7. ^ "The CGW Computer Game Conference".
  8. ^ Bunten, Dan (December 1984).

Literatura

uredi