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 Computerumgebung anzupassen , die sich von der unterscheidet, die ein bestimmtes Programm (für eine solche Ausführung gemeint) war ursprünglich für (zB unterschiedliche CPU , Betriebs System 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 gesagt wird , 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 es in einer anderen an das Umschreiben des Quellcodes angewendet 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 des Umfangs , in dem die ursprünglichen Umgebung (die Source - Plattform ) von der neuen Umgebung unterscheidet (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 Betrieb auf dem Desktop verwendete Systeme heute 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 sich die Auswahl an Betriebssystemen effektiv 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 Rechnerumgebung , in einer Art und Weise angeben , die zwischen unterschiedlichen Standards konformen reduzieren Unterschiede hilft Plattformen . Das Schreiben von Software , die von diesen Standards innerhalb der Grenzen festgelegt bleibt stellt eine praktische obwohl nicht - triviale Anstrengung. 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 Portierung, wie die erleichtern GNU Compiler Collection , welche Sprachen konsistent Programmierung 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 ) gewinnen Portabilität von Source - Code in einem anderen hohen Pegel ausgibt Zwischensprache (wie  C ) , für die Compiler für viele Plattformen allgemein verfügbar sind.

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

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ängig Teil nur einmal entwickelt werden muss , 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 die von der zugrunde liegenden Hardware Befehlssatz 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, folgenden Ansatz, 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 jedoch läuft 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

Porting 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. Videospiel „Ports“ Früher waren oft nicht wahr Ports, sondern Versionen der Spiele überarbeitet. Allerdings sind viele 21. Jahrhundert Videospiele entwickelt mit Software (oft in C ++ ) , die Ausgangscode kann 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 erklärte im Jahr 1984 bei 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 Portierung gemacht von ihnen an Apple " 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 Geld klug“.

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 Funktionen bei Bedarf zu verändern während der Portierung. Eine solche Politik nicht immer möglich war; 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.

Wenn ein Spiel als bezeichnet wird „arcade perfekt“ ist , bedeutet dies , dass das Spiel von einem 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, bedeutet , dass das Spiel zu 100% identisch ist. Es bedeutet in der Regel , dass die Unterschiede kleinere gewesen sein (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 Spiel von einer Konsole auf einen PC zu portieren wird oft negativ angesehen aufgrund des höheren Leistung , die im Allgemeinen nicht ausgelastet haben werden, teilweise durch Hardware auf der Konsole während ihres Laufes befestigt sind (mit Spielen sind für Konsole Spezifikationen entwickelt) Computer, während PCs werden leistungsfähiger als Hardware entwickelt, 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

  • Martin Richards und Colin Whitby-Strevens (1984): BCPL, die Sprache und Compiler. ISBN  0-521-28681-6 .
  • Andrew S. Tanenbaum (1984): Strukturierte Computer Organisation 10. Drucken. ISBN  0-13-854605-3 .