Portering (datorteknik)

Portering innebär att ett datorprogram skrivs om för att kunna kompileras och fungera på en annan plattform. Ordet kommer av engelskans port eller porting med samma innebörd. Innan ordet portering började användas så användes anpassning eller översättning.

En anledning till att portera kommersiella produkter kan vara i syfte att bredda marknaden. Exempelvis porteras många moderna datorspel till ett flertal olika datortyper och spelkonsoler.

Fri programvara
Portering är ett sätt att öka genomslagskraften även för så kallad fri programvara; där finns källkoden öppet tillgänglig så att vem som helst med tillräckliga färdigheter kan portera sådana program, om de så önskar, och användare av mer exotiska plattformar har i många fall porterat fria program till sitt eget system. Ofta skickar man dessutom den modifierade källkoden till de ursprungliga utvecklarna som publicerar även denna. GNU är ett projekt som haft ett intresse av portabel kod och skapat särskilda verktyg och instruktioner för att underlätta detta. Unix-traditionen med ett stort antal liknande (men delvis inkompatibla) systemvarianter har också bidragit till denna utveckling.

Komplexitet
Utvecklare hävdar ofta att mjukvaran de skriver är portabel, det vill säga att den lätt låter sig porteras till en ny plattform. Den arbetsinsats som i praktiken krävs är ofta ändå avhängig hur mycket det nya systemet skiljer sig från det ursprungliga, samt, naturligtvis, samtliga inblandade programmerares erfarenhet och kunskap. Komplexiteten i detta rör bland annat icke-portabla aspekter av programspråk, skillnader mellan tillgängliga programbibliotek och i vilken grad man använt sig av (eller underlåtit att skilja ut) icke-portabla delar från resten av koden; plattformsspecifika funktioner eller lösningar kan vara mycket frestande att använda eftersom de ger ett på kort sikt bättre resultat, ofta med mindre arbetsinsats.

Antalet varianter
Bortsett från superdatorer och inbyggda system så har antalet processortyper och operativsystem minskat ganska radikalt jämfört med 1980-talet. Skrivbordsdatorer domineras idag nästan helt av x86-familjen och skrivbordsprogram för Windows porteras därför sällan till andra typer av processorer. Urvalet av operativsystem för denna marknad har också reducerats till, i stort sett, Windows, Mac OS, samt varianter av Unix och Linux. Mellan dessa kan portabilitet fortfarande vara ett betydande problem även då man försöker skriva portabel kod. Skillnaderna mellan olika Unix och Linux-varianter är också så pass omfattande att kod skriven utan tanke på portabilitet medför problem. Övergången till 64-bitars processorer på persondatorer visar även det på vikten av portabel kod.

Standarder
Internationella standarder, som de som certifieras av ISO, försöker underlätta portering genom att specificera detaljer i en programmeringsmiljö så att den skall variera så litet som möjligt mellan olika system. Portering mellan två plattformar som stöder samma standard (som till exempel POSIX.1) kan vara så enkel som att kompilera om källkoden; detta förutsatt att programutvecklarna strikt följt standarden och noga undvikit fallgropar såsom varierande ordlängd och byteordning.

Verktyg
Det finns också ett ökande antal verktyg för att underlätta konstruktion av portabla program, exempelvis GNU-projektets kompilator GCC, som tillhandahåller stabila versioner av olika programspråk för flera plattformar, GNU autoconf som automatiserar hanteringen av mindre variationer i programmiljön och anpassar kod inför kompilering, färdigt porterade programbibliotek för grafiska användargränssnitt såsom Qt, GTK+ eller wxWidgets. Cygwin är en POSIX-miljö under Windows.

Programutveckling

de:Portierung
es:Portabilidad