2009-03-14 5 views

Antwort

3

Ja, insbesondere wenn Sie Ihren Code für mehrere Plattformen verteilen möchten.

Aber auch wenn Sie nicht plattformübergreifend arbeiten, ist eine Form der Zukunftssicherung; Wenn es heute auf mehreren (verschiedenen) Plattformen läuft, ist es eher auf zukünftigen Plattformen lauffähig als auf etwas, das optimiert und optimiert wurde, um an einer sauberen Installation der Q-series von Vendor X (Version 1452) zu arbeiten) und sonst nichts.

2

Es scheint einen Vorteil darin zu geben, Fehler mit einem anderen Compiler und einem anderen Betriebssystem zu finden und einfach zu verhindern. Verschiedene CPUs können Endian-Probleme frühzeitig erkennen. Es gibt den Schmerz auf der Ebene der Benutzeroberfläche, wenn Sie auf dieser Ebene nativ bleiben wollen.

+0

Ich kompiliere routinemäßig unter Linux, OpenBSD und Darwin. Ich kompiliere routinemäßig auch auf Intel, AMD64 und Sparc64. Selbst wenn der Kundenstamm alle auf einer Plattform ist, lohnt es sich immer noch für die gefundenen Fehler und die aufgedeckten Annahmen. – dwc

1

Kurze Antwort: Ja.

Kurz vor dem Klonen einer Festplatte, ist es fast unmöglich, zwei Systeme genau gleich zu machen, so dass Sie auf "verschiedenen Plattformen" laufen werden, ob Sie wollten oder nicht. Indem wir das "Was wäre, wenn System A keine Dinge wie B macht" gezielt konfrontieren und lösen. Problem Kopf auf Sie sind viel wahrscheinlicher, die Schlüsselannahmen zu finden, die Ihr Code bildet.

Das sagte, ich würde sagen, Sie sollten einen guten Teil Ihres Basiscodes auf System A arbeiten, und dann einen Tag (oder eine Woche oder ...) nehmen und es auf System B laufen lassen. Es kann sein sehr lehrreich.

Meine Ausbildung kam in den 80er Jahren zurück, als ich einen Source-Level-C-Debugger auf über 100 Varianten von U * NX portierte. Gack!

0

Einige Plattformen haben wirklich schreckliche Entwicklungstools. Ich habe einmal in einem IB gearbeitet, wo Peole nicht Suns grässliches Toolset verwendet hat, sondern Code in VC++ entwickelt und dann auf Solaris portiert hat.

1

Gibt es Vorteile bei der Entwicklung einer Anwendung auf zwei oder mehr verschiedenen Plattformen?

Wenn dies Produktionssoftware ist, ist der offensichtliche Grund die Verlockung eines größeren Kundenstamms. Die Attraktivität Ihres Produkts wird gesteigert, sobald der Kunde hört, dass Sie mehrere Plattformen unterstützen. Denken Sie daran, dass die meisten Unternehmen kein einziges Betriebssystem oder gar eine einzige Version des Betriebssystems verwenden. Es ist ziemlich typisch, einen Bereich mit Windows, einem anderen Mac und einer kleineren Version etwas von Linux zu finden.

Es ist auch ersichtlich, dass das Anpassen eines Produkts für eine einzelne Plattform oft viel mühsamer ist, als wenn es auf Multi-Plattform ausgeführt wird. Das Gesetz der abnehmenden Rendite tritt ein, noch bevor du es weißt.

Natürlich macht dies alles wenig Sinn, wenn Sie Anpassungsarbeiten für ein vorhandenes Produkt für die proprietäre Hardware des Kunden durchführen. Aber selbst dann, achten Sie auf die gesamte Hardware, die Ihr Kunde in seinem Repertoire hat - Sie wissen nie, wann er danach fragen wird.

Hat die Verwendung eines anderen Compilers auf der gleichen Plattform Vorteile?

Ja, schon wieder. Verschiedene Compiler implementieren verschiedene Erweiterungen. Stellen Sie sicher, dass Sie nicht auf eine bestimmte Version eines bestimmten Compilers angewiesen sind.

Weiter kann es einen Fehler oder zwei im Compiler selbst geben. Die Verwendung mehrerer Compiler hilft dabei, diese zu beseitigen.

Ich habe weiters Bits eines (plattformübergreifenden) Produkts mit zwei verschiedenen Compilern gesehen - eines wurde in jenen Modulen verwendet, in denen Gleitkommamanipulation eine sehr hohe Genauigkeit erforderte. (Schon lange habe ich gehört, dass jemand anderes das macht, aber ...)

1

Ich habe ein großes C++ - Programm, ursprünglich Win32, auf Linux portiert. Es war nicht sehr schwierig. Hauptsächlich mit Compiler Inkompatibilitäten, weil der MS C++ Compiler zu der Zeit auf verschiedene Arten nicht konform war. Ich erwarte, dass dieses Problem jetzt größtenteils verschwunden ist (bis die C++ 0x-Funktionen allmählich erscheinen). Außerdem wird eine einfache Plattformabstraktionsbibliothek geschrieben, um den plattformspezifischen Code an einem Ort zu zentralisieren. Es hängt davon ab, in welchem ​​Umfang Sie von Diensten des Betriebssystems abhängig sind, die auf einer neuen Plattform schwer zu imitieren wären.

Sie müssen die Portabilität nicht von Grund auf aufbauen. Aus diesem Grund wird "Portierung" oft als eine Aktivität beschrieben, die Sie nach einer ersten Veröffentlichung auf Ihrer wichtigsten Plattform in einer Aufnahme ausführen können. Sie müssen es nicht von Anfang an kontinuierlich machen. Nur aus wirtschaftlichen Gründen, wenn Sie vermeiden können, Arbeit zu leisten, die sich niemals auszahlt, sollten Sie es offensichtlich tun. Die Kosten für die spätere Portierung sind, wenn es wirklich notwendig ist, gar nicht so schlecht.

1

Meistens gibt es eine bestehende Plattform, für die die Anwendung geschrieben wird (individuelle Software). Aber Sie Adresse mehr Entwickler (beide Plattformen), wenn Sie sich entscheiden, eine unabhängige Sprache zur Verfügung zu stellen.

Auch Produkte (Standardsoftware) für KMU besser verkauft werden wenn sie auf verschiedenen Plattformen laufen! Sie können auf beide Märkte zugreifen, WIN & LINUX! (und MacOSx und so weiter ...)

Große Unternehmen kaufen meist Hardware, die nur vom Produktanbieter unterstützt/zertifiziert wird, um das angegebene Produkt bereitzustellen.

1

Wenn Sie auf mehreren Plattformen gleichzeitig entwickeln, haben Sie den Vorteil, dass Sie verschiedene Tools verwenden können. Zum Beispiel hatte ich einmal einen Speicher überschreiben (ich schwöre noch, ich brauchte nicht die +1 für das Null-Byte!), Die "frei" zum Absturz führen. Ich brachte den Code unter Windows auf den neuesten Stand und fand das Überschreiben in etwa einer Minute mit Rational Purify ... es hatte mich eine Woche unter Linux gejagt, es zu verfolgen (Valgrind hätte es vielleicht gefunden ... aber ich wusste nichts davon es zu der Zeit).

Verschiedene Compiler auf der gleichen oder verschiedenen Plattformen ist für mich ein Muss, da jeder Compiler verschiedene Dinge berichten wird, und manchmal der Bericht von einem Compiler über einen Fehler wird Kauderwelsch sein, aber der andere Compiler macht es sehr deutlich.

Wenn Sie während der Entwicklung Dinge wie mehrere Datenbanken verwenden, ist es sehr viel weniger wahrscheinlich, dass Sie sich an eine bestimmte Datenbank binden, was bedeutet, dass Sie die Datenbank austauschen können, wenn es einen Grund dafür gibt. Wenn Sie etwas, das Oracle verwendet, in eine vorhandene Infrastruktur integrieren möchten, die beispielsweise SQL Server verwendet, kann es wirklich schlecht sein - viel besser, wenn die Oracle- oder SQL Server-Teile auf das andere System verschoben werden können (ich kenne einige Orte, die 3 verschiedene haben) Datenbanken für ihre Finanzsysteme ... ick).

Im Allgemeinen bedeutet, immer für zwei oder drei Dinge zu entwickeln, dass die Wahrscheinlichkeit, dass Sie Fehler finden, besser ist und die Wahrscheinlichkeit, dass das System flexibler ist, besser ist.

Auf der anderen Seite kann all das Zeit und Mühe kosten, die in der unmittelbaren Zeit als unnötiger Aufwand gesehen wird.