Porten

In software engineering, portering is het proces van het aanpassen van de software zodat een uitvoerbaar programma kan worden gemaakt voor een computeromgeving die verschilt van degene waarvoor het oorspronkelijk was bedoeld. De term wordt ook gebruikt als software / hardware wordt gewijzigd om ze geschikt voor gebruik in verschillende omgevingen.

Software is draagbaar wanneer de kosten van het porten naar een nieuw platform is minder dan de kosten van het schrijven van de grond af. Hoe lager de kosten van de overdracht software, ten opzichte van de implementatiekosten, hoe meer draagbare wordt gezegd te zijn.

Etymologie

De term "poort" is afgeleid van het Latijnse portare, wat betekent "uit te voeren". Wanneer code is niet verenigbaar met een bepaald besturingssysteem of de architectuur, moet de code worden "uitgevoerd" naar het nieuwe systeem.

De term is niet algemeen op de aanpassing software te draaien met minder geheugen op dezelfde CPU en besturingssysteem, noch wordt toegepast op het herschrijven van de broncode in een andere taal.

Software-ontwikkelaars beweren vaak dat de software die zij schrijven is draagbaar, wat betekent dat weinig inspanning nodig is om het aan te passen aan een nieuwe omgeving. De hoeveelheid werkelijk benodigde inspanning door verschillende factoren, waaronder de mate waarin de oorspronkelijke omgeving verschilt van de nieuwe omgeving, de ervaring van de oorspronkelijke auteurs te weten welke programmeertaal constructies en derde bibliotheek oproepen waarschijnlijk niet draagbaar, en hoeveelheid inspanning geïnvesteerd door de oorspronkelijke auteurs van alleen met behulp van draagbare constructies.

Geschiedenis

Het aantal significant verschillende CPU en besturingssystemen gebruikt op de desktop van vandaag veel kleiner dan voorheen. De dominantie van de x86-architectuur betekent dat de meeste desktop software nooit is geport naar een andere CPU. In diezelfde markt, is de keuze van het besturingssysteem daadwerkelijk is teruggebracht tot drie: Microsoft Windows, OS X en Unix / Linux. In de ingebedde systemen markt draagbaarheid blijft een belangrijk probleem.

Internationale standaarden, zoals afgekondigd door de ISO, sterk vergemakkelijkt de overdracht door met bijzonderheden van de computeromgeving op een manier die helpt verschillen tussen verschillende normen conforme platforms te verminderen. Het schrijven van software die blijft binnen de door deze normen grenzen is een praktische, hoewel triviale inspanning. Porten van een dergelijk programma tussen twee standards-compliant platforms kan gewoon een kwestie van het laden van de broncode en hercompileren het op het nieuwe platform. Echter, de praktijk vaak vinden dat verschillende kleine correcties nodig zijn, als gevolg van subtiele platform verschillen. De meeste normen last van "grijze gebieden" waar de verschillen in interpretatie van normen leiden tot kleine variaties van platform naar platform.

Er bestaat ook een steeds toenemend aantal tools waarmee Porting vergemakkelijken, zoals de GNU Compiler Collection, die in overeenstemming zijn programmeertalen biedt op verschillende platformen, en Autotools, die de detectie van kleine variaties in het milieu automatiseert en past de software dienovereenkomstig voordat compilatie .

De compilers voor een aantal high-level programmeertalen krijgen draagbaarheid door het uitvoeren van de broncode in een ander hoog niveau intermediaire taal waarvoor compilers voor vele platforms zijn algemeen beschikbaar.

Twee activiteiten die verband houden met het porten worden emuleren en cross-compileren

Porten compilers

In plaats van direct vertalen in machine code, moderne compilers vertalen naar een machine onafhankelijke intermediair code om de overdraagbaarheid van de compiler te verbeteren en het minimaliseren van het ontwerp inspanningen. De tussentaal definieert een virtuele machine die alle programma geschreven in de tussenliggende taal kan uitvoeren. De tussenliggende code instructies worden vertaald naar equivalente machine code sequenties door een code generator om uitvoerbare code te creëren. Het is ook mogelijk om het genereren van machinecode overslaan door daadwerkelijk implementatie van de virtuele machine in machinecode. Deze virtuele machine uitvoering heet een interpreter, omdat leest de tussencode instructies een voor een na elkaar lezen voert de equivalente machinecode sequenties van het lezen intermediaire instructie direct.

Het gebruik van intermediaire code verbetert overdraagbaarheid van de compiler, omdat alleen de machine afhankelijke code van de compiler zelf moet worden geport naar de doelcomputer. De rest van de compiler kan als tussencode wordt ingevoerd en vervolgens verder verwerkt door het overgedragen codegenerator of interpreter, waardoor de productie van de compiler software of tussencode de interpreter direct uitvoeren. De machine zelfstandig onderdeel kan worden ontwikkeld en getest op een andere machine. Dit reduceert ontwerp inspanningen, omdat de machine zelfstandig onderdeel slechts eenmaal moet worden ontwikkeld om draagbare intermediaire code.

Een interpreter minder complex en daardoor gemakkelijker te poort dan een codegenerator, omdat het niet in staat om code optimalisaties doen vanwege het beperkte zicht op de programmacode. Sommige tolken zijn zeer eenvoudig naar de haven, omdat ze slechts minimale aannames over het instellen van de onderliggende hardware instructie. Hierdoor virtuele machine nog eenvoudiger dan het doel CPU.

De compiler bronnen volledig schrijven in de programmeertaal de compiler wordt verondersteld te vertalen, maakt de volgende aanpak, beter bekend als compiler bootstrapping, haalbaar op de doelcomputer:

  • Poort van de tolk. Dit moet worden gecodeerd in assembly code van een reeds aanwezige assembler op het doel.
  • Pas de source van de codegenerator de nieuwe machine.
  • Voeren de aangepaste bron met de tolk met de codegenerator bron als input. Dit zal de machine code voor de code generator.

Het moeilijkste deel van het coderen van de optimalisatie routines wordt gedaan met behulp van de high-level taal in plaats van de montage taal van de doelgroep.

Volgens de ontwerpers van de BCPL taal, geïnterpreteerd code is compacter dan machine code; gewoonlijk met een factor 2-1. Geïnterpreteerd code loopt echter ongeveer tien keer langzamer dan gecompileerde code op dezelfde machine.

De ontwerpers van de programmeertaal Java proberen om te profiteren van de compactheid van geïnterpreteerd code te nemen, want in een Java-programma moet worden verzonden over het internet voordat uitvoering kan beginnen op het doel van de Java Virtual Machine.

 Porten van games

Porten is ook de term die gebruikt wordt wanneer een video game ontworpen om te draaien op een platform, of het nu een arcade, video game console of personal computer, wordt omgezet om te draaien op een ander platform. Eerder video game "poorten" waren vaak niet waar havens, maar herwerkte versies van de spellen. Echter steeds meer videospellen nu ontwikkeld met behulp van software die kan uitvoeren coderen voor één of meer consoles en een PC zonder de noodzaak van werkelijke porten.

Veel vroege havens leed belangrijke gameplay aspecten van kwaliteit omdat verschillende hardware sterk verschilde. Lord British verklaarde in 1984 dat Origin Systems ontwikkelde computer games voor de Apple II-serie eerst daarna geport hen om Commodore 64 en de Atari 8-bit, omdat sprites de laatste machines en andere geavanceerde functies gemaakt porten van hen naar Apple "veel moeilijker, misschien zelfs onmogelijk ... de Apple-versie zal nooit gedaan te krijgen ". Anderen werkte anders. Ozark Softscape, bijvoorbeeld, schreef M.U.L.E. de Atari eerste omdat het de voorkeur te ontwikkelen voor de meest geavanceerde computers, verwijderen of wijzigen functies nodig tijdens porteren. Een dergelijk beleid was niet altijd haalbaar; Dani Bunten verklaarde dat Ozark niet haven het spel om de Apple omdat "MULE niet kan worden gedaan voor een Apple".

Arcade perfecte video games zijn degenen die zijn overgedragen van een arcade-versie naar een ander platform, zoals een console of computer, zonder enige wijzigingen in werking van het spel. Dit betekent dat de graphics, geluid en gameplay, samen met andere kenmerken van het spel, zijn identiek aan de arcade versie.

"Haven" is een spel dat oorspronkelijk werd gemaakt voor een console voor een identieke versie gemaakt die kunnen worden afgespeeld op een personal computer of een andere console. Deze term is op grote schaal gebruikt door de gaming community. Het proces van het overzetten van een spel van een console naar een PC wordt vaak negatief beschouwd als gevolg van de hogere niveaus van prestaties die computers zijn over het algemeen onderbezet, deels te wijten aan de hardware te troosten tijdens hun run vast, terwijl de pc's steeds krachtiger hardware evolueert, maar ook door ported spellen soms wordt slecht geoptimaliseerd voor pc's, of lui geport.

  • Game Development met SDL 2.0 - up-to-date bijvoorbeeld op de taak van het overzetten van een video game op de Simple DirectMedia Layer van 11 februari 2014 door Ryan C. Gordon
(0)
(0)
Commentaren - 0
Geen commentaar

Voeg een reactie

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Tekens over: 3000
captcha