Portieren - Porting


Aus Wikipedia, der freien Enzyklopädie

In der Softwareentwicklung , Portierung ist der Prozess - Software für Zwecke der Erzielung irgendeine Form der Ausführung in einer Anpassung der Berechnung Umgebung , die von dem unterscheidet , ist , dass ein bestimmtes Programm (für eine solche Ausführung gemeint) wurde ursprünglich für (zB ausgelegt, verschiedene CPU , Betriebssystem oder dritte Bibliothek ). Der Begriff wird auch verwendet , wenn Software / Hardware geändert wird , um sie verwendbar in verschiedenen Umgebungen zu machen.

Software ist tragbar , wenn die Kosten es auf eine neue Plattform zu portieren ist deutlich geringer als die Kosten für sie von Grund auf neu zu schreiben. Je niedriger die Kosten für die Portierung von Software, bezogen auf ihre Implementierungskosten, die mehr tragbar es wird gesagt , sein.

Etymologie

Der Begriff „Port“ wird aus dem Lateinischen abgeleitet portare „tragen“ bedeutet. Wenn Code nicht kompatibel mit einem bestimmten ist Betriebssystem oder Architektur muss der Code wird „getragen“ auf das neue System.

Der Begriff wird im Allgemeinen nicht auf das Verfahren angewendet Software des Anpassens mit weniger Speicher auf der gleichen CPU und dem Betriebssystem zu laufen, noch ist sie an die Überschreibungs des Quellcodes in einer anderen Anwendung Sprache (dh Sprache Umwandlung oder Übersetzung).

Software Entwickler behaupten oft , dass die Software , die sie schreiben , ist tragbar , was bedeutet , dass wenig Aufwand benötigt wird , um es an eine neue Umgebung anzupassen. Der Aufwand hängt tatsächlich von mehreren Faktoren benötigt, einschließlich der Umfang , in dem die ursprünglichen Umgebung (die Source - Plattform ) unterscheidet sich von der neuen Umgebung (die Zielplattform ), die Erfahrung der ursprünglichen Autoren zu wissen , welche Programmiersprache Konstrukte und Dritten Bibliothek Anrufe sind unwahrscheinlich tragbar sein, und der Aufwand durch die ursprünglichen Autoren investiert in nur portable Konstrukte (plattformspezifische Konstrukte bieten oft eine billigere Lösung) verwendet.

Geschichte

Die Anzahl der signifikant unterschiedlichen CPUs und Betriebs heute verwendeten Systeme auf dem Desktop ist viel kleiner als in der Vergangenheit. Die Dominanz der x86 - Architektur bedeutet , dass die meisten Desktop - Software nicht auf eine andere CPU portiert wird. Im selben Markt, hat die Wahl der Betriebssysteme wirksam auf drei reduziert: Microsoft Windows , macOS und Linux . Doch in den Embedded - Systemen und mobilen Märkten, Portabilität bleibt ein wichtiges Thema, mit dem ARM eine weit verbreitete Alternative zu sein.

Internationale Standards, wie sie von der verkündet ISO , erheblich erleichtern die Portierung von Einzelheiten der Computing - Umgebung in einer Art und Weise angeben , die zwischen unterschiedlichen Standards konformen reduzieren Unterschiede hilft Plattformen . Das Schreiben von Software , dass Aufenthalte innerhalb der von diesen Normen festgelegten Grenzen eine praktische obwohl nicht - triviale Anstrengung darstellen. Portieren ein solches Programm zwischen zwei Standard-konformen Plattformen (wie POSIX.1 ) kann nur eine Frage der den Quellcode zu laden und neu zu kompilieren es auf der neuen Plattform. Allerdings finden Praktiker oft , dass verschiedene kleinere Korrekturen erforderlich sind, aufgrund subtile Unterschiede zwischen den Plattformen. Die meisten Standards leiden unter „Grauzonen“ , wo Unterschiede in der Interpretation von Standards zu kleinen Variationen von Plattform zu Plattform führen.

Es gibt auch eine ständig wachsende Anzahl von Werkzeugen , die Portierung zu erleichtern, wie die GNU Compiler Collection , die konsistenten Programmiersprachen auf verschiedene Plattformen zur Verfügung stellt und Autotools , die den Nachweis von kleineren Schwankungen in der Umgebung automatisiert und passen die Software entsprechend vor der Kompilierung .

Die Compiler für einige High-Level - Programmiersprachen (zB Eiffel , Esterel ) Verstärkungs Portabilität von Source - Code in einem anderen hohen Pegel ausgibt Zwischensprache (wie  C ) , für die Compiler für viele Plattformen sind in der Regel zur Verfügung.

Zwei Aktivitäten im Zusammenhang mit (aber verschieden von) Portierung werden emuliert und Cross-Kompilierung .

Portieren Compiler

Anstatt direkt in der Übersetzung Maschinencode , moderne Compiler zu einer Maschine unabhängig übersetzen Zwischencode , um die Portabilität des Compilers zu verbessern und Design Bemühungen zu minimieren. Die Zwischensprache definiert eine virtuelle Maschine , die alle Programme geschrieben in der ausführen kann Zwischensprache (eine Maschine , durch die Sprache und umgekehrt definiert ist). Die Zwischencodebefehle übersetzt werden in äquivalente Maschinencodesequenzen durch einen Code - Generator zu schaffen ausführbaren Code . Es ist auch möglich , die Erzeugung von Maschinencode zu überspringen , indem tatsächlich ein Umsetzung Interpreter oder JIT für die virtuelle Maschine.

Die Verwendung von Zwischencodes verbessert Portabilität des Compilers, da nur der maschinenabhängigen Code (der Interpreter oder der Code - Generator) des Compilers selbst muss an die Zielmaschine portiert werden. Der Rest des Compilers kann als Zwischencode eingeführt wird und dann von dem portierten Codegenerator oder Interpreter weiterverarbeitet, so dass die Software - Compiler erzeugen oder direkt den Zwischencode auf dem Interpretierer ausgeführt wird . Die Maschine unabhängigen Teil kann auf einer anderen Maschine (die entwickelt und getestet werden Host - Maschine ). Dies reduziert Design Bemühungen, weil die Maschine unabhängige Teil braucht nur einmal entwickelt werden tragbaren Zwischencode zu erstellen.

Ein Dolmetscher ist weniger komplex und daher leichter zu Port als ein Code-Generator, weil es nicht in der Lage ist, Code-Optimierungen aufgrund seiner begrenzten Ansicht des Programmcodes zu tun (es sieht nur eine Anweisung zu einer Zeit, und Sie benötigen eine Sequenz zu tun Optimierung). Einige Dolmetscher sind extrem einfach zu portieren, da sie nur eine minimale Annahmen über den Befehlssatz der zugrunde liegenden Hardware machen. Als Ergebnis ist die virtuelle Maschine noch einfacher als der Ziel-CPU.

Das Schreiben der Compiler Quellen vollständig in der Programmiersprache ist der Compiler übersetzen soll, macht die folgende Vorgehensweise, besser bekannt als Compiler Bootstrapping , möglich auf der Zielmaschine:

  1. Port der Dolmetscher. Dies muss in codierten wurde Assembler - Code , eine bereits vorliegende Verwendung Assembler auf dem Ziel.
  2. Passen Sie die Quelle des Codegenerators auf die neue Maschine.
  3. Führen Sie die angepasst Quelle den Interpreter mit dem Codegenerator Quelle als Eingabe verwendet. Dadurch wird der Maschinencode für den Codegenerator erzeugen.

Der schwierige Teil der Optimierungsroutinen der Codierung erfolgt, um die High-Level-Sprache statt die Assemblersprache des Ziels verwenden.

Nach den Designer der BCPL Sprache, interpretierten Code (in dem Fall BCPL) ist kompakter als Maschinencode; typischerweise um einen Faktor von zwei zu eins. Interpretierten Code läuft aber etwa zehnmal langsamer als kompilierte Code auf der gleichen Maschine.

Die Designer der Programmiersprache Java versuchen , Vorteile aus der Kompaktheit von interpretierten Code zu nehmen, weil ein Java - Programm muss möglicherweise über das Internet übertragen werden , bevor die Ausführung auf das Ziel der beginnen Java Virtual Machine .

Portieren von Videospielen

Portieren ist auch der Begriff verwendet , wenn ein Videospiel entwickelt , um auf einer Plattform laufen zu lassen, sei es eine Arcade , Videospiel - Konsole oder PC , umgewandelt auf einer anderen Plattform zu laufen. Von Anfang an von Videospielen bis hin zu den 1990er Jahren, „Häfen“, zu der Zeit oft als „Conversions“ bekannt ist , waren oft nicht wahr , Häfen, sondern Versionen der Spiele überarbeitet. Allerdings sind viele 21. Jahrhundert Videospiele mit einer Software (oft in den entwickelten C ++ ) , die Dosenausgabecode für einen oder mehrere Konsolen sowie für einen PC ohne die Notwendigkeit einer tatsächlichen Portierung (statt über die gemeinsame Portierung von einzelnen Komponente unter Berufung Bibliotheken ).

Viele frühe Häfen erlitten erhebliche Gameplay Qualitätsprobleme , weil Computer sehr unterschiedlich. Richard Garriott 1984 zu bestimmten Origins Game Fair , dass Origin System Computerspiele für die entwickelten Apple II Serie zuerst dann portierte sie zu Commodore 64 und Atari 8-Bit , weil diese Maschinen Sprites und andere anspruchsvolle Features gemacht , von ihnen zu Apple - Portierung " weitaus schwieriger, vielleicht sogar unmöglich“. Bewertungen beschwerten sich von Ports , die von „Apple - conversionitis“ gelitten, die „lousy Ton und schwarz-weiß-grün-lila Grafiken“ von Apple zu halten; nach Garriott Erklärung, wenn Dan Bunten gefragt „Atari und Commodore Leute im Publikum, sind Sie zufrieden mit dem Apple umschreibt?“ das Publikum rief : „Nein!“ Garriott antwortete : „[sonst] die Apple - Version wird nie getan. Aus der Sicht des Verlegers , die nicht klug , Geld ist“.

Andere arbeiteten unterschiedlich. Ozark Softscape zum Beispiel schrieb MULE für den Atari ersten , weil es für den am weitesten fortgeschrittenen Computer zu entwickeln , bevorzugt, das Entfernen oder Ändern Funktionen wie nötig während der Portierung. Eine solche Politik war nicht immer möglich; Buntes erklärte , dass „MULE kann nicht für einen Apple getan werden“, und dass die nicht-Atari - Versionen von The Seven Cities of Gold waren minderwertig. Compute! 'S Gazette schrieb 1986 , dass , wenn von Atari Commodore Portierung des Original in der Regel überlegen war. Dessen Spiele Qualität verbessert , wenn Entwickler begann Ende 1983 für das neue Software zu schaffen, das Magazin angegeben.

Wenn ein Spiel bezeichnet wird als „arcade perfekt“, das bedeutet , dass das Spiel von einer portiert wurde Arcade - Version auf eine andere Plattform, wie eine Konsole oder Computer, ohne wesentliche Änderungen an der Funktionsweise des Spiels. Dies bedeutet , dass Grafik, Sound und Gameplay , zusammen mit dem anderen Eigenschaften des Spiels (einschließlich Bugs), ist getreu die Arcade - Version. Es ist ein Begriff , vor allem von professionellen Kritikern verwendet und manchmal, aber nicht immer, ein Mittel ist das Spiel zu 100% identisch. Es bedeutet in der Regel , dass die Unterschiede aufweisen gewesen kleinere (wie längere Ladezeiten) oder einfach , dass der Port kann das gewesen sein , dass die Erfahrung des ursprünglichen Spiels erhalten die meisten.

„(Konsole) Port“ ist ein Spiel , das für eine Konsole (wie Wii oder ursprünglich gemacht wurde Xbox 360 ) vor einer identischen Version erstellt , die auf einem abgespielt werden können Personal - Computer oder einer anderen Konsole. Dieser Begriff wurde von der Gaming - Community weit verbreitet. Das Verfahren zur Herstellung eines Spiels von einer Konsole auf einen PC zu portieren wird oft negativ angesehen aufgrund der höheren Leistung , die Computer in der Regel nicht ausgelastet haben wird, teilweise aufgrund von Konsolen - Hardware in ihrem Lauf befestigt ist (mit Spielen ist für Konsole Spezifikationen entwickelt), während PCs als Hardware entwickelt sich immer leistungsfähiger werden, sondern auch manchmal aufgrund portierte Spiele schlecht für PCs optimiert, oder träge portiert. Während im Großen und Ganzen ähnlich, können Unterschiede in der Architektur so existieren , wie die Verwendung von einheitlichen Speichern auf einer Konsole.

Siehe auch

Anmerkungen

Verweise