Welche Sprache für Linux/Windows/MacOSX-Programme lernen?

\²³/

Grand Admiral Special
Mitglied seit
12.10.2003
Beiträge
2.249
Renomée
25
  • Spinhenge ESL
Ich habe schon einige Erfahrung in Sachen Delphi und PHP/MySQL. Kann XHTML und CSS.

Nun möchte ich eine Sprache lernen, bei der es einfach möglich ist, Programme zu schreiben, die ohne großen Portier-Aufwand sowohl unter Linux als auch Windows und MacOSX laufen.

Hintergrund ist, dass wir unseren Mp3-Player ursprünglich für Windows entwickelt haben, ich nun aber fast ausschließlich Linux nutze. Mit Wine läuft er auch aber die Wiedergabe hängt immer wieder. Außerdem finde ich, dass das ein guter Ansporn ist, mal wieder mehr zu programmieren. Welche Sprache könnte ihr mir also für verschiedene Plattformen empfehlen? Wie groß ist überhaupt der Aufwand ein Programm, dass komplett neu geschrieben wird, auf so vielen Plattformen wie möglich laufen zu lassen? Was muss ich dabei beachten? Gibt es Tutorials die speziell auf die Plattformunabhänigkeit eingehen?
 
C++ mit Qt ist für alle Plattformen verfügbar und bringt sehr viel mit - auf jeden Fall einen Blick wert. Damit reicht es, es einmal für alle Plattformen zu kompilieren, mehr sollte eigentlich nicht nötig sein.

Anonsten java ;) - jetzt bekomm ich bestimmt wieder Haue, na i_hasser ;D
 
Hi,

würde hauptsächlich C(++) oder Java sagen.
Es gibt wohl viele Sprachen, die prinzipiell von der Plattform unabhängig sind. Wichtig sind die Libraries/Komponenten/Framworks mit denen du programmierst. Wenn du zum Beispiel ein Windows Programm in C++ mit den MFC Libraries programmiert hast, wird es auch auf Linux nicht laufen, weil die MFC Libraries ja nicht für Linux gedacht waren.

Eine Library, die für so kleinere 2D Spielchen ganz oft genommen wird, ist die SDL (http://www.libsdl.org/), die auch auf den drei gängigen Systemen läuft. Vielleicht wäre die SDL_sound (http://icculus.org/SDL_sound/) etwas für deinen Player?

Ciao
Phil
 
Für einen MP3-Player ist es weniger passend, aber Du kannst dich ja mal (bzgl Plattformunabhängigkeit) in die Ideen, die hinter MDA (inkl UML) stecken, reinlesen...

Ansonsten Java. Eventuell C#/Mono. Da musst Du aber schon wieder aufpassen, welche Klassenbibliotheken, auf welchem System unterstützt werden.
 
C++/Qt ist meiner Meinung nach das beste in dem Bereich, allerdings wirst du dich bei deinen Vorkenntnissen mit Java wohl leichter tun. Alternativ kannst du dir auch noch Python anschauen, das dürfte von PHP kommend wohl das einfachste sein, als GUI hast du hier die Wahl zwischen PyGTK, PyQt oder wxPython.
 
Danke für die vielen Antworten. Welche Tutorials habt ihr für C++/Qt in dem Bereich parat?

Wie ist das mit Java? Braucht man da eigentlich immer so eine Laufzeitumgebung oder funktionieren die Programme auch "alleine"?
 
Zuletzt bearbeitet:
\²³/ schrieb:
Braucht man da eigentlich immer so eine Laufzeitumgebung oder funktionieren die Programme auch "alleine"
Für Windows braucht man ganz klar immer eine Java Runtime (am häufigsten wohl die von Sun). Von alleine läuft da nix.
Das ist ja einer der Nachteile von Java (neben der "Geschwindigkeit", vor allem bei GUIs).

MfG Dalai
 
wobei das auch nicht unbedingt immer ein Nachteil für Java und .Net ist. Nur dadurch ist die Plattformunabhängigkeit überhaupt erst möglich. Im Herbst kommt dann wohl auch eine deutlich abgespeckte JRE die sich die notwendigen Klassen erst wenn sie benötigt werden aus dem Netz zieht. Macht auch nicht wirklich einen Unterschied ob du jetzt die JRE oder eine Menge Biblitheken (zum Beispiel bei Qt) mitlieferst.

Langsam sind die GUIs eigentlich auch nicht mehr wirklich da hat sich in den letzten 2-3 Jahren einiges getan und spätestens seit Java6 ist ein Geschwindigkeitsnachteil nicht mehr spürbar (schau dir zum Beispiel Netbeans als reine Java Anwendung an).

Als Buch für Qt kann ich "C++ GUI Programming with Qt4" empfehlen. Das deckt eigentlich alles ab, was man als Anfänger braucht. Genügend Beispielprogramme findet man auch auf der auf der Trolltech Seite und Hilfe bei http://www.qtforum.de
 
Zuletzt bearbeitet:
Danke für die vielen Antworten. Welche Tutorials habt ihr für C++/Qt in dem Bereich parat?
Ich nehme an, du hättest gerne was zum downloaden (kostenlos). Schau dir mal C++ GUI Programming With Qt 3 an. Hab selber bis jetzt nur oberflächlich reingeschaut, deshalb kann ich auch keine Wertung abgeben.
Wenn du es gedruckt magst, wäre für C++ "The C++ Programming Language" von Bjarne Stroustrup immer einen Blick wert. Ist allerdings insbesondere in der Abhandlung der Standard C++ Lib für Anfänger ziemlich harte Kost, da das Buch quasi die Referenz der C++ Implementierung darstellt, und deshalb auch in die Implementierungsdetails geht.

Wie ist das mit Java? Braucht man da eigentlich immer so eine Laufzeitumgebung oder funktionieren die Programme auch "alleine"?
Ja, eine RTE ist immer notwendig. Allerdings kann das ganze auch zusammen mit dem eigentlichen Programm in einem nativen Binary verpackt werden. Der Java-Compiler von Sun ist ein Beispiel dafür. Frag mich aber nicht, wie das geht. Das weiß ich selber nicht.
 
Bücher sind schon was Feines. Auch wenn ich nicht der Schlechteste in Englisch bin, was gibt es für empfehlenswerte deutsche Lektüre?
 
Für Windows braucht man ganz klar immer eine Java Runtime (am häufigsten wohl die von Sun). Von alleine läuft da nix.
Das ist ja einer der Nachteile von Java (neben der "Geschwindigkeit", vor allem bei GUIs).
MfG Dalai

Es gibt für Java auch Native Compiler, die den Code unter Windows zum Beispiel in eine EXE compilieren...die benötigten Klassen etc. werden da einfach mit reingepackt, und es ist dan kein JRE mehr nötig...allerdings ist der Sinn von Java...nämlich die Portabilität dann futsch...oder eben für jede Plattform neu compilieren...:P
 
Cybered schrieb:
Es gibt für Java auch Native Compiler, die den Code unter Windows zum Beispiel in eine EXE compilieren...die benötigten Klassen etc. werden da einfach mit reingepackt, und es ist dan kein JRE mehr nötig
Und die EXE wird dadurch sinnlos groß...
Wenn die komplette RT mit reingepackt wird, sind es dann gleich mal mehrere MB (bei mir mit der neusten 1.5er locker mal 32 MB)...

MfG Dalai
 
Zum Einstieg und Erlernen "The C++ Programming Language" von Bjarne Stroustrup zu empfehlen, ist unklug. Dieses Werk taugt nichts für Neulinge und ist erst der 3. Schritte um die Sprache zu vertiefen.
Enpfehlenswert ist die Seite c-plusplus.de. Ein sehr gutes Forum, gute und kommentierte Auswahl an Tutorien und ebenso eine kommentierte Übersicht zur Literatur,
Schaus Dir an und lass voerst die Finger von Stroustrup.
 
Ich meine das natürlich im Bezug auf C++.
Bin der Meinung, dass der Einstieg in ein neues Thema erstmal leicht gehalten werden sollte. Schwierig wird es dann von alleine.
Stroustrup biete mit seinem Buch eine Bibel und m.E. erschlägt das einen Einsteiger zuerst.
 
Ich lass mich eigentlich vom Proggen nicht erschlagen. Wenn ich was net verstanden hab, dann les ichs halt nochmal. Oder ist es wirklch ein richtiger Hammer?
 
Ich würde Stroustrup nicht zu Beginn empfehlen. Mit lesen ist in dem Buch nicht viel, es ist vergleichbar mit nem Wörterbuch (wennst das deutsche Wort nicht kennst wirst auch die italienische Übersetzung nicht finden). Es ist ganz gut für einen Profi, dem nur kurz die richtige Syntax oder so entfallen ist aber zum lernen in meinen Augen völlig ungeeignet.

Ich hab C/C++ bspw. mit "C++ in 21 Tagen" (M+T) und den Büchern C-Programmierung und C++-Programmierung von Andre Willms (Addison Wesley) bzw. Java mit "Handbuch der Java-Programmierung" von Guido Krüger (Addison Wesley) gelernt.
 
Ich habe nicht allzuviel Erfahrung mit der C/C++-Programmierung, trotzdem ein paar Sätze dazu: nach meinem Kenntnis-Stand ist ein C- oder C++-Programm erst einmal Compiler-abhängig, d.h. welche Standards ein Compiler übersetzen kann und für welche Plattformen dieser Compiler zur Verfügung steht. Ein einfaches Hello-World-C-Programm wirst Du auf nahezu jeder Plattform mit einem fast beliebigen C-Compiler zum Laufen bewegen können. Bei komplexeren Programmen kann es schon sein, dass der eine Compiler mit einer Syntax ein Problem hat und ein anderer nicht.

Die zweite Abhängigkeit bezieht sich auf die Bibliotheken, die Dein Programm einsetzt, z.B. Hilfsbibliotheken für mathematische Berechnungen - die vermutlich ebenfalls für viele Plattformen compilierbar sollten, wenn denn auch der Source-Code zur Verfügung steht und kein Inline-Assembler o.ä. verwendet wird. Schwieriger wird es, wenn Du Programme mit einer text- oder grafikorientierten Oberfläche entwickeln möchtest. Da musst Du Dich dann genau umsehen, mit welchen Du Dich auseinandersetzen kannst.

Für die Entwicklung von grafischer Software, die dann unter mehreren Betriebssystemen compilierbar und lauffähig sein soll, fallen mir spontan folgende Bibliotheken ein (wertungsfrei alphabetisch sortiert):

- GTK
- Qt
- Tk (aus Tcl/Tk)
- WxWidgets

Vermutlich gibt es nicht viel mehr, also wirst Du Dich mit mind. einer davon mal auseinandersetzen und dazu passende Lektüre auswählen müssen. Ein allgemeines C/C++-Buch sollte aber erst einmal die Sprache völlig unabhängig von solchen speziellen Bibliotheken erklären.
 
Zum Einstieg und Erlernen "The C++ Programming Language" von Bjarne Stroustrup zu empfehlen, ist unklug. Dieses Werk taugt nichts für Neulinge und ist erst der 3. Schritte um die Sprache zu vertiefen.

Wenn man kein Anfänger beim Programmieren ist, und z.B. schon in einer oder mehreren anderen Sprachen firm ist, halte ich das Buch durchaus für empfehlenswert. Sicherlich macht Stroustrup keine langen Erläuterungen bzgl. Grundkenntnisse der Programmierung. Er erläutert, wie die Konzepte in C++ umgesetzt sind. Und als schon erfahrener Programmierer, erschließt sich das einem doch recht schnell.
 
OK. Dann schau ich mich demnächst mal in ein paar Bibliotheken (=Büchereien) um, wo es welche Bücher gibt. Das meiste muss man sich ja nicht kaufen...

Wenn die ersten Fragen aufkommen, meld ich mich wieder. Danke an alle. :D
 
Zurück
Oben Unten