Frage zur Verwendung des Wortes "Portierung" in der Programmierung

11

Ich bin gerade dabei, einen C ++ - Code, der für ein UNIX-System geschrieben wurde, so zu ändern, dass er durch Kompilieren aus Visual Studio funktioniert. Ich musste die Namen einiger eingebauter Funktionen ändern und die Art und Weise ändern, wie dynamische Arrays definiert werden.

Meine Frage ist, kann ich sagen, dass ich diesen Code von UNIX nach Windows / Visual Studio "portiere" oder wird "Portieren" nur verwendet, wenn von einer Programmiersprache in eine andere gewechselt wird (Portieren von C ++ nach Java)?

Roronoa Zoro
quelle
1
Vor vielen Jahren musste ich 16-Bit-OS / 2-Software konvertieren, um sie unter 32-Bit-OS / 2 auszuführen. Während des Projekts wurde diese Aktivität von allen als "Portierung auf 32 Bit" bezeichnet. Es muss also nicht einmal bedeuten, auf ein anderes Betriebssystem oder eine andere Hardware zu wechseln, sondern nur auf eine andere Umgebung.
Gort den Roboter

Antworten:

15

Laut Wikipedia und meiner persönlichen Erfahrung bezieht sich der Begriff "Portierung" darauf, dass Software für eine Plattform funktioniert, für die sie ursprünglich nicht vorgesehen war. Dieser Prozess erfordert manchmal einen Sprachwechsel, aber nicht immer.

Der Begriff wird im Allgemeinen nicht auf den Prozess der Anpassung von Software angewendet, um mit weniger Speicher auf derselben CPU und demselben Betriebssystem ausgeführt zu werden, und er wird auch nicht auf das Umschreiben von Quellcode in einer anderen Sprache (dh Sprachkonvertierung oder -übersetzung) angewendet.

Wenn Leute sagen, dass Java-Programme "portabler" sind, bedeutet dies, dass weniger zusätzliche Arbeit erforderlich ist, um sie mit einer Vielzahl verschiedener Maschinen und Betriebssysteme kompatibel zu machen.

StriplingWarrior
quelle
7
Wenn Leute sagen, dass Java-Programme portabler sind, bedeutet dies, dass sie keine Erfahrung mit der Portierung von Java-Programmen haben und sich einfach auf die Verkaufsgespräche von Sun / Oracle verlassen. Nach meiner Erfahrung ist das Portieren von Java tatsächlich etwas schwieriger als der Durchschnitt (hauptsächlich, weil die Leute ermutigt wurden zu glauben, dass die Portabilität automatisch / garantiert ist und daher weder Aufmerksamkeit noch Arbeit verdient).
Jerry Coffin
2
@ JerryCoffin: Ich habe nicht viel Erfahrung auf diesem Gebiet. Die Java-Programme, mit denen ich gearbeitet habe, waren alle Webanwendungen, die unter Linux-, Windows- und Mac-Boxen gleich gut funktionierten. Aber ich habe Geschichten von Firmen gehört, deren Management ihnen trotz der Proteste der Entwickler, dass sie auf diese Weise keine Portabilität erreichen würden, eine Java-Konvertierung auferlegt hat.
StriplingWarrior
4
@ Jerry - Ich bin mir nicht sicher, wo Ihre Erfahrung liegt, aber so ziemlich jedes Java-Programm, das ich portiert habe, war trivial zu portieren (dies umfasst sowohl GUIs als auch serverseitige Apps über Mac / Win / Linux / Solaris). Sun und Oracle sind insofern korrekt, als Java-Apps einfacher zu portieren sind als alles andere - die meisten benötigen nicht einmal eine Neukompilierung (was selbst für gut geschriebenes portables C / C ++ erforderlich wäre, das in Bezug auf die Portabilität wahrscheinlich das zweitbeste ist). Die häufigsten Probleme, die ich sehe, sind, wenn Entwickler plattformspezifische Dinge wie "/" als Verzeichnis-Trennzeichen fest
codiert haben
@ Jerry Ich habe J2ME-Spiele für 5 Jahre programmiert. Als ich endete, machten wir 80 Versionen eines Spiels - jede Plattform hat unterschiedliche Leistung, Fehler usw. usw. Lösung? Sie haben keine Standards für Plattformen erstellt, sondern standardisierte Tests für J2ME-Anwendungen. Nie wieder.
Sulthan
2

Man kann Software zwischen Betriebssystemen portieren. Man kann Software zwischen Prozessorarchitekturen portieren. Möglicherweise müssen einige der Aktivitäten ausgeführt werden, die normalerweise mit "Portierung" verbunden sind, wenn größere Plattformänderungen vorgenommen werden (Apple PPC -> x86-Switch oder Windows XP -> Windows Vista / 7/8). Ich würde das Wechseln der Programmiersprache nicht als "Portierung" betrachten. Eher wie komplett neu schreiben.

Ich habe Software von Linux nach Windows und umgekehrt portiert. Ich habe Software von SPARC auf x86 portiert (ich liebe es einfach, mich mit Endian-Problemen zu befassen) und von 32-Bit auf 64-Bit. Heutzutage programmiere ich in Java ... Ich bin mir nicht sicher, ob das Wort "Portierung" in Javaland eine große Bedeutung hat, vielleicht zwischen den wichtigsten JVM-Versionen ...

James Adam
quelle
0

Die Portierung wird in der Spieleentwicklung immer beliebter, da die Publisher möglichst viele Plattformen (PC, Xbox, Playstation usw.) abdecken möchten. Wie bereits erwähnt, bedeutet Portierung, das ursprüngliche Programm so zu konvertieren, dass es in einem völlig anderen System funktioniert. Im Allgemeinen konvertieren die Spielehersteller Konsolenspiele in einen PC.

Juha Untinen
quelle
Immer mehr Entwickler verlassen sich auf plattformübergreifende Entwicklungstools wie Unity, damit sie nicht portieren müssen. Das Entwickeln einer Codebasis, die zu Beginn auf vielen Plattformen ausgeführt wird, ist nicht dasselbe wie "Portieren", was bedeutet, dass etwas auf einer Plattform entworfen und ausgeführt und dann geändert wurde, um auf einer anderen ausgeführt zu werden.
Gort the Robot
Das hört sich interessant an! Wie wirkt es sich auf Leistung und Skalierbarkeit aus? Eine Sorge wäre höchstwahrscheinlich die Tatsache, dass Konsolen immer noch viel langsamer sind als die meisten High-End-PCs - wie geht Unity damit um, ohne die maximale Qualität auf schnelleren Systemen zu beeinträchtigen?
Juha Untinen