cross platform hello world?

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Antworten
kruger

cross platform hello world?

Beitrag von kruger »

Ich lerne unter Windows C++ (Xp und Visual Studio). Interessant wäre es einen Sourcecode zu haben der gleichzeitig unter DOS, Windows und Linux kompilieren kann.

Hat jemand sowas oder kennt eine Seite dafür?
Benutzeravatar
Jinsu
MemMaker-Benutzer
Beiträge: 79
Registriert: Di 8. Mär 2005, 11:14
Wohnort: NRW
Kontaktdaten:

Beitrag von Jinsu »

Also vielleicht solltest du dich mal so ein bisschen mit C/C++ beschäftigen, dann wird dir schon einiges klar.
Ausserdem ist C++ nicht unbedingt als "cross-platform"-Sprache bekannt, man kann den Code zwar zu einem gewissen Grad portieren, aber wenn man vernünftige Programme schreiben will, dann muss auf die Bordmittel des Systems zurückgegriffen werden.
Einfache Ein- und Ausgabe per Tastatur und Konsole mag noch angehen, aber komplexere Dinge sind da anders.
Es gibt zwar viele Bibliotheken geben, die bereits auf unterschiedliche Plattformen portiert wurden, dennoch heisst das nicht, dass ein unter Windows geschriebenes Programm auch unter Linux voll kompilierbar ist.

Überleg dir also, für welche Plattform du am ehesten Programme schreiben möchtest und siehe es erstmal aus dieser Perspektive.
Grundlegende C++-Tutorials und -Kurse werden zwar grössenteils auf allen Plattformen durchführbar sein, die einen halbwegs vernünftigen C++-Compiler mit den Standardbibliotheken haben, aber man sollte am Anfang auf nicht zu vielen Hochzeiten tanzen.

Gruß,
Jinsu
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1981
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Beitrag von ChrisR3tro »

JinSu hat geschrieben:(...), aber wenn man vernünftige Programme schreiben will, dann muss auf die Bordmittel des Systems zurückgegriffen werden.
Sorry, aber das kann ich so nicht stehen lassen.

Es gibt genügend Ports vom GNU C-Compiler für etliche Plattformen inkl. Windows (MinGW, Cygwin) und DOS (DJGPP).

Wenn man diese mit plattformübergreifenden Bibliotheken kombiniert, kann man mit C/C++ sehr plattformunabhängig programmieren, auch mit grafischer Oberfläche (siehe z.B. GTK). Für Spieleprogrammierung gibt's auch so Einiges (SDL, Allegro), was bei Bedarf ganz ohne plattformspezifische Calls auskommt. So können sogar vernünftige Programme enstehen. ;-) Der Bildeditor GIMP ist vielleicht ein Paradebeispiel für GTK.

Manche Dinge können natürlich nur durch spezielle Betriebssystemfunktionen gelöst werden, aber das sind meist kleine Dinge, die man mit ein paar #ifdef-Zeilen individuell abhandeln kann.

@kruger: Ich habe mal ein kleines Spiel geschrieben, was unter DOS, Windows und Linux kompiliert. Macht zwar keinen Spaß, aber hatte für mich einen großen Lerneffekt. Bei Interesse, kann ich's Dir schicken.

Es ist auch sicherlich nicht verkehrt, sich zum Lernen erstmal auf eine Plattform zu beschränken, wie JinSu sagt, um die ohnehin verwirrenden Programmierkonzepte (C-Strings, Pointer) erstmal grundlegend zu verstehen. Ich empfehle Dev-C++ mit MinGW (GCC-Port) unter Windows.

Gruß,
Christoph
Benutzeravatar
Jinsu
MemMaker-Benutzer
Beiträge: 79
Registriert: Di 8. Mär 2005, 11:14
Wohnort: NRW
Kontaktdaten:

Beitrag von Jinsu »

Nun ja, das mit den Plattformen war aus meiner Sicht eigentlich geklärt, ich glaube, er hat schon begriffen, dass man für jedes System den entsprechenden Compiler braucht.
Mit vernünftig implementierten Bibliotheken ist es natürlich kein Problem, solche Programme zu schreiben, die auch 100%-ig portierbar sind, das möchte ich nicht verneinen. In diesem Fall hat ja jemand das Problem dieser Abhängigkeit schon für mich gelöst. (Und eine Neue geschaffen).
Echte Plattformunabhängigkeit gibt es ja auch nicht, auch wenn die Java-VM es einem schon gut vorgaukeln kann, aber C ist da dann doch direkter.

Als Einsteiger macht man sich natürlich weniger Gedanken, um optimale Entwicklung und aus diesem Grund kann man sagen, dass man sich erstmal keine Gedanken um die Plattform machen muss.

Unter "Bordmittel" verstehe ich aber auch solch Third-Party-Bibliotheken, weil man einfach nicht hingehen kann, den Code auf einem anderen System zu kompilieren, ohne sicher zu stellen, dass diese Bibliotheken auch vorhanden.
Ausserdem habe ich die Grundfrage so verstanden, dass es wirklich darum geht:
"Ich hab hier einen Code und da ein paar Compiler, compiliert mal!".

Mal eine andere Frage an kruger:
Warum schreibst du nicht selbst solchen Code, wenn du doch gerade die Sprache lernst?
Gerade das könnte doch eine Motivation sein, sich damit zu beschäftigen.

Gruß,
Jinsu
kruger

Beitrag von kruger »

Ich lerne zur Zeit schon C++. Aber halt bei DOS den Einstieg zu bekommen ist nicht gerade einfach weil sich halt kaum noch wer damit beschäftigt.

Der mplayer läuft glaub ich auch unter allen Systemen gleichzeitig. Also so das Problem scheint es ja nicht zu sein.
Locutus hat geschrieben:@kruger: Ich habe mal ein kleines Spiel geschrieben, was unter DOS, Windows und Linux kompiliert. Macht zwar keinen Spaß, aber hatte für mich einen großen Lerneffekt. Bei Interesse, kann ich's Dir schicken.
Klar interessiert mich das.
Benutzeravatar
Jinsu
MemMaker-Benutzer
Beiträge: 79
Registriert: Di 8. Mär 2005, 11:14
Wohnort: NRW
Kontaktdaten:

Beitrag von Jinsu »

Für DOS ist vielleicht Turbo C++ empfehlenswert, da es sich wahrscheinlich am einfachsten installieren und verwenden lässt.

Borland hat die ein oder andere Version als Freeware neu veröffentlicht, da muss man sich mal umschauen.
z.B. Turbo C++ 1.01:
http://dn.codegear.com/article/21751

oder Turbo C 2.01 (nicht C++):
http://dn.codegear.com/article/20841

Vom Computermuseum München gibt es eine kleine Liste an kommerziellen Compilern von damals:
http://www.computermuseum-muenchen.de/software/dev.html

Wenn man da den einen oder anderen noch in die Hand bekommt, dann ist das sicherlich eine gute Lösung.
Wenn du was aktuelleres möchtest dann hat ja Locutus mit DJGPP schon den richtigen Tipp gegeben:
http://www.delorie.com/djgpp/

Da muss man sich natürlich etwas mehr einarbeiten.

Ein andere populärer Compiler damals war Watcom, der heute noch als OpenWatcom weiter entwickelt wird:
http://www.openwatcom.org/

Über den kann ich aber nicht so viel sagen.

Meiner Meinung nach sind die Turbo-Produkte ein guter Kompromiss, da sie einigermassen vernünftig zu bedienen sind und von Haus aus schon einige eigene Bibliotheken mitbringen.

Gruß,
Jinsu
Antworten