Portimine

Portimine (inglise keeles porting) on tarkvaraehituse protsess, mille eesmärk on kohandada tarkvara nii, et see töötaks teistsuguses arvutuskeskkonnas kui see, mille jaoks programm algul loodi. Seda terminit kasutatakse ka siis, kui riist- või tarkvara muudetakse uue keskkonna järgi, et seda oleks võimalik seal kasutada.

Tarkvara peetakse kaasaskantavaks siis, kui selle portimise kulud uuele platvormile on palju väiksemad kui programmi nullist loomise kulud. Mida väiksemad on kohandamise kulud võrreldes uue rakenduse arendamise maksumusega, seda kaasaskantavamaks ehk porditavamaks tarkvara peetakse.

Nimetus

Mõiste "port" tuleneb ladinakeelsest sõnast portāre, mis tähendab "vedama". Kui koodi ei ole võimalik konkreetse operatsioonisüsteemi või arhitektuuriga ühildada, siis tuleb see üle viia ehk portida uude süsteemi.

Seda terminit ei kasutata tavaliselt protsesside kohta, mille eesmärk on kohandada tarkvara nii, et see kasutaks protsessoril või operatsioonisüsteemis vähem mälu. Samuti ei peeta portimiseks lähtekoodi ümberkirjutamist mõnda teise programmeerimiskeelde.

Paljud tarkvaraarendajad väidavad, et nende loodud tarkvara on kaasaskantav ehk selle kohandamine uude keskkonda nõuab vähe tööd. Tegelik töömaht sõltub aga mitmest tegurist, sealhulgas sellest, kui erinevad on algne ja uus keskkond ning kui suur on arendaja kogemus.

Ajalugu

Tänapäeval on kasutusel olevate CPU-de ja operatsioonisüsteemide arv tunduvalt väiksem kui minevikus. Domineerib x86 arhitektuur, mis tähendab, et enamikku töölauatarkvarast ei pea kunagi portima teisele CPU-le. Samal turul on ka operatsioonisüsteemide valik koondunud kolmeks suureks osaks: Microsoft Windows, macOS ja Linux. Mobiiliturul aga tekitab kaasaskantavus suuri probleeme. Seal on tekkinud laialdase alternatiivina ARM.

Aina rohkem leidub tööriistu, mis hõlbustavad kohandamist, näiteks GNU Compiler Collection, mis võimaldab kasutada järjepidevalt samu programmeerimiskeeli erinevatel platvormidel. Teine selline tööriist on Autotools, mis tuvastab automaatselt keskkondade erinevusi ja kohandab tarkvara neile vastavaks.

Teisaldatavad kompilaatorid

Tänapäeva kompilaatorid ei tõlgi programmi enamasti otse masinkoodi, vaid esmalt vahekoodi, et parandada kompilaatori teisaldatavust ja vähendada kavandamisega seotud jõupingutusi. Vahekeel määratleb virtuaalmasina, mis suudab täita kõiki selles keeles kirjutatud käske. Seejärel tõlgib koodigeneraator vahekeele koodi juhised sihtsüsteemi samaväärseteks masinkoodi jadadeks, et luua programm, mida saab käivitada. Mõnel juhul jäetakse masinkoodi genereerimine vahele ning kasutatakse hoopis kooditõlki või JIT virtuaalmasinat. Kooditõlk on üldiselt lihtsama ülesehitusega kui koodigeneraator ning seepärast ka paremini kaasaskantav. Samas on selle koodi optimeerimise võimalused piiratud, sest tavaliselt näeb see ainult üksikuid käske, mitte tervet jada. Mõnda kooditõlki on väga lihtne portida, kuna need teevad aluseks oleva riistvara käskude komplekti kohta vähe oletusi. Tulemusena võib virtuaalne masin olla veelgi lihtsam kui sihtprotsessor.

Kui kompilaatori lähtekoodi soovitakse kirjutada täielikult samas programmeerimiskeeles, mida kompilaator ise tõlgib, kasutatakse protsessi, mida kutsutakse kompilaatori alglaadimiseks.

See toimub tavaliselt järgmiste sammudena:

Videomängude teisaldamine

Mäng, mis on hiljuti porditud personaalarvutile

Portimise terminit kasutatakse ka videomängude valdkonnas. Tavaliselt on mäng mõeldud töötama kindlal platvormil. Mängu kohandamist nii, et seda saaks kasutada ka mõnel teisel platvormil, nimetatakse videomängude portimiseks.

Aastaid tagasi tähendas videomängude portimine mängude ümbertegemist, aga tänapäeval arendatakse mänge tarkvaraga (C++), mis võimaldab platvormidevahelist portimist vältida. Algul kannatasid paljud porditud mängud kvaliteediprobleemide tõttu, sest arvutid erinesid üksteisest väga palju.

"Konsooli port" on mäng, mis oli algul mõeldud mängukonsoolile (Xbox 360), kuid hiljem kohandati seda nii, et seda oleks võimalik mängida ka personaalarvutis. See termin on arvutimängurite kogukondades laialdaselt levinud. Konsoolilt portimise tagasiside on sageli olnud negatiivne, sest personaalarvutid suudavad riistvara arenedes palju kõrgemate seadistuste peal mänge jooksutada, kuid kohandatud mängud on vahel halvasti või lohakalt optimeeritud.

Vaata ka

Viited

  1. ↑ D.E Whitten; P.A.D Demaine (Märts, 1975). "A machine and configuration independent Fortran: Portable Fortran". EEE Transactions on Software Engineering. Vaadatud Detsember 21, 2019. {{netiviide}}: kontrolli kuupäeva väärtust: |aeg= (juhend)CS1 hooldus: mitu nime: autorite loend (link)
  2. ↑ ".. discusses .. portability of .. Fortran". Originaali arhiivikoopia seisuga 8. märts 2021. Vaadatud 21. detsembril 2019.
  3. ↑ "Origin: Of multiple origins. Partly a borrowing from French. Partly a borrowing from Latin. Etymons: French porter; Latin portāre. ... 1. trans. To carry, bear, or convey; to bring". Oxford English Dictionary (OED Online). Vaadatud 21. detsembril 2019.
  4. 1 2 "Porting". Vikipeedia. 30. oktoober 2019. Vaadatud 21. detsembril 2019.
  5. ↑ Dan Bunter (detsember 1984). "Dispatches / Insights From the Strategy Game Design Front". Computer Gaming World. p. 40. Vaadatud 21. detsembril 2019.