Auf 2 verschiedenen Betriebssystemen programmieren.

P

pcboy123

Gast
Angenommen ich möchte genau das selbe Programm auf Windows und auf Linux programmieren. Worauf muss ich dann achten? Oder ist der Code einfach der selbe, sowohl für Windows als auch für Linux?

Danke ^^
 
Kannst du überhaupt "programmieren"? :D

Mit was " programmierst" du denn? Davon ist es abhängig.
 
Kann nur Webprogrammierung. Möchte aber Python oder C++ lernen und wollte eben wissen, was man beachten muss, wenn man auf Windows und auf Linux programmiert. Muss man da verschieden Programmieren oder ist der Sourcecode das selbe und muss es nur compilieren?
 
Kurze Antwort: It depends

Lange Antwort: Schreib dein Programm in Java oder einer Sprache mit Interpreter, dann geht das problemlos. Bei Sprachen die zu Maschinencode kompiliert werden geht das nicht mehr so einfach, das kompilierte Programm läuft im Normalfall nur auf dem System wo du es kompiliert hast. Der Quellcode ist natürlich unabhängig, bedarf aber meist diverser plattformspezifischer Anpassungen. Etwas einfacher wird es wenn du auf ein plattformübergreifendes Framework wie z.B. Qt setzt.

Deiner Frage und dem daraus zu folgernden Unwissen nach zu urteilen, solltest du möglichst auf Java, JavaScript, Python oder Ruby setzen.
 
Schau dir Qt an.
 
C++-Code muss man an das Betriebssystem anpassen.
Du kannst z.B. schreiben:
Code:
#if defined(WIN32)
... Code für Windows
#else ...
Bei größeren Projekten wird das aber - gerade für Anfänger - doch recht schnell zu unübersichtlich.

Es gibt auch IDE's, mit denen du deinen C++ Code recht einfach für mehrere Plattformen erstellen kannst, ohne irgendwelche Unterscheidungen treffen zu müssen (z.B. Embarcaderos Firemonkey, da wechselst du mit einem Klick zwischen Windows, OSX, iOS und Android). Das geht aber halt auch nur bis zu einem bestimmten Grad und dann geht die Fummellei wieder los.

Wenn du das selbe Projekt für Win und Linux erstellen willst, rate ich dir von C++ ab. Nimm da lieber Java.
 
naja.. am einfachsten ist es mit derselben laufzeitumgebung..

java bietet sich z.b. an dafür..

es kommt natürlich darauf an, was du machen willst, generell sind cpu's/ssd's inzw. so schnell, dass man java durchaus nutzen kann, es gibt aber anwendungen, da ist c++ besser, da deutlich performanter.


unter macOS war c++ ein graus.. assi zum installieren (mit ecplipse), probleme mit makefiles, dinge die unter windows komplett anders funktionierten..

auch mit QT ist es nicht so easy.. gibt schon genügend probleme von ubuntuu zu macOS.
Ergänzung ()

unter der überschrift hab ich auch was anderes erwartet^^

dachte sowas wie github, svn ..
 
Zuletzt bearbeitet:
Es ist Unfug zu behaupten, dass Sprachen wie Java durch ihr Framework komplett plattformunabhängig sind.
Das hängt komplett von deinem jeweiligen Projekt ab und ist eine Aussage, die man auch jede Sprache/Umgebung beziehen kann.
Java erledigt Kram für dich, allerdings musst du dich auch mit den Eigenheiten des Betriebssystemes herumschlagen (Dateisysteme, I/O, Rechte, usw.).

Du benutzt ja schon Python, dann bleibe doch dabei (auch wenn ich es persönlich nicht weiterempfehlen kann).

Mr.Smith schrieb:
es kommt natürlich darauf an, was du machen willst, generell sind cpu's/ssd's inzw. so schnell, dass man java durchaus nutzen kann, es gibt aber anwendungen, da ist c++ besser, da deutlich performanter.

Wo würde denn nur bei Java die HDD/SSD ausbremsen?
Auch wenn Java im Vergleich zu nativen, aber auch zu IL noch ein ganzes Stück langsamer ist, wirst du als normaler Nutzer (er sowieso nicht) nicht an die Grenzen kommen.
Ich arbeite zur Zeit in C# an einem 3D Terrain-Generator. Da dauert die Regenfall-Simulation zur Bestimmung von Flusspfaden, Seen und Bodenfeuchtigkeit schon ein Weilchen (10 Sekunden), aber da es keine Echtzeitanwendung ist, interessiert das keinen. Man designt mit Bedacht und optimiert dann nachher bei Bedarf (ich war z.B. hier ursprünglich bei 45 Sekunden, was mir zu langsam war). Optimierungen kommen nicht selten auch mit erhöhter Komplexität und damit schlechterer Wartbarkeit einher, da muss man sich erst einmal an den Funktionsumfang herantasten und danach wenn nötig optimieren (wobei das anstehende Refactoring das in der Regel sowieso erledigt).
 
Zuletzt bearbeitet:
wer behauptet das?
hier in dem thread niemand.
evtl. bist du ja im falschen thread^^

alles was ich aus den posts herauslese ist, dass es mit java deutlich einfacher als mit z.b. c++ ist, wenn es plattformunabhängig sein soll, aber es kommt natürlich immer auf den einsatzzweck an.


und programmieren ist ein weiter begriff..
 
Ich habe keine "richtige Lösung" (die gibt es meiner Meinung nach nicht), aber einen Vorschlag.

Da Du schon Python kennst und es einigermaßen Plattform unabhängig ist, wäre aus meiner Sicht der Einsatz einiger zusätzlicher Bibliotheken sinnvoll:

GUI / Grafik Implementierung -> PyQt
Statistik/numerische Probleme -> NumPy und SciPy

PyQt hätte den positiven Nebeneffekt, daß Du Dich schon einmal ein wenig mit dem Qt-Framework auseinandersetzen könntest und wenn Python Dir nicht mehr passen sollte, Du mit C++ weitermachen könntest, dabei aber bereits ein Plattform übergreifendes Framework kennst.
 
Kommt auf die Art der Anwendungen an, theoretisch kannst Du auch mit PHP-Programmieren wenn Du schon Webprogrammierung kannst.

Ansonsten kannst Du mit C/C++ auf fast jede beliebige Plattform crosscompilen sogar für alte Apple G3/G4 Rechner könntest Du es kompilieren. Beim Frontend ist das hier empfohlene Qt-Framework wohl eine gute Lösung (habe selbst allerdings nie Multiplatformprogramme geschrieben die ein Frontend benötigten).
Du musst beim Programmieren Dich aber möglichst allgemein halten oder wie S.Kara schon geschrieben hat bestimmte Programmteile doppelt programmieren für je nach OS, denn Linux/Unix z.B. behandelt Semaphoren anderst als Windows.
Welche Sprache man wählen sollte? Immer die, die am geeignetesten ist ;)
Wenn Du keine Performance brauchst und nicht irgendwas direkt auf die Hardware runtercoden willst kannst Du Java nehmen oder
theoretisch C#/Mono (letzteres ist allerdings dann nicht mehr so kompatibel mit allem), PHP würde auch gehen.
C/C++ ist komplizierter und aufwändiger (je nach Programm) hat aber die beste Performance (wenn man ASM nicht zählt ;))
Mit Python hab ich mich nie viel beschäftigt, kann ich nicht viel dazu sagen.

Für reine Kommandozeilen-Tools geht die Umsetzung mit C/C++ sehr schnell
 
Um deine Frage für C++ zu beantworten: Man sollte schon wissen was man will und was man kann.

Ich habe 8 Jahre numerische Simulationen im wissenschaftlichen Bereich (Optik, Supraleitung, Quantenmechanik) für Linux und Windows geschrieben. Einfache Dinge wie Dateien und Threads sind mit C++14 sehr gut abstrahier- und portierbar zwischen mehreren Systemen. Ich rate dir als Anfänger jedoch davon ab grafische Dinge zu versuchen, mit OpenGL ist das zwar gut machbar aber das drumherum wird haarig. Unterschätze nicht die Komplexität die dahinter steckt und nimm eine Bibliothek wie QT oder SFML die möglichst alles übernimmt.

Wenn du Anfänger bist, nimm Java oder eine x-beliebige Scriptsprache. Meiner Meinung nach kommst du mit Java schon sehr weit und für die ersten Gehversuche reicht es allemal.
 
Zurück
Oben