Ergebnis 1 bis 18 von 18

Thema: Welche Programsprache ist für Windows, Linux/ BSD/ Unix verwendbar?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Welche Programsprache ist für Windows, Linux/ BSD/ Unix verwendbar?

    Welche Programsprachen gibt es, welche sowohl für Windows auch als für Linux (und kompatible Systeme) compiliert werden kann?
    Benötige ich dafür GTK+ (GNOME T Kit?).

    Wenn es bei den Fensteranwendungen unter Linux auch noch unterschiede gibt: Bevorzugt GNOME.

    Java möchte ich jetzt mal ausschließen, da Java angeblich nicht wirklich schnell sein soll im Vergleich mit den anderen Sprachen.

  2. #2
    Zum Beispiel C und C++. Und sogar PureBasic ist Linux und Windowsübergreifend, aber eben ein Basicdialekt. (was manchem ja ein Dorn im Auge ist)

  3. #3
    So ziemlich alle außer Delphi und vielen Basic Dialekten.

  4. #4
    Zitat Zitat von DFYX
    Delphi
    Notfalls -> Free Pascal mit Lazarus, funktioniert wie Delphi und ist auch ganz gut, der ganze Internet-Kram und teilweise das Datenbank Zeug sind allerdings noch nicht vorhanden. Außerdem sind die Dateien etwas groß, so 5-7 MB für ne billige Fenster Anwendung ohne viel drauf

    edit: Ach ja, compilbar sind die Anwendungen dafür unter OS X, Win und Linux (sogar unter qt und gtk einzeln)

    edit2: Ach ja ^^ Kylix, auch wenn es nicht mehr weiterentwickelt wird, kann man wenn man statt der VCL auf die CLX zurückgreift Delphi 7 Anwendungen unter Kylix 3 benutzen. Allerdings würde ich Kylix nicht grad empfehlen da es selbst und auch seine Anwendungen mit ner angepassten libwine Bibliothek zusammengelinkt wurden, d.h. da muss alles durchgeschleift werden, und somit werden die Anwendungen langsammer und vor allem größer (unter Linux, bei Windows bleibt es Normal, da man unter Windows ja kein Wine braucht )

    Geändert von Crash-Override (28.06.2006 um 15:22 Uhr)

  5. #5
    Zitat Zitat von dennis_meckel
    Welche Programsprachen gibt es, welche sowohl für Windows auch als für Linux (und kompatible Systeme) compiliert werden kann?
    Benötige ich dafür GTK+ (GNOME T Kit?).
    GTK ist lediglich dafuer da, grafische Oberflaechen zu erzeugen, und wird auf keinen Fall benoetigt (ist aber hilfreich, wenn du portable GUI-Anwendungen schreiben willst). Wenn du nicht gerade Delphi, Basic oder irgendwas aus dem Hause Microsoft benutzt (Visual Basic/Visual C++/Visual Whatever; wobei C# sogar einigermassen unter Linux laeuft) und dich an Standards haelst, solltest du fuer den meisten Kram Compiler finden. gcc (der Standardcompiler fuer unixoide Systeme) kann uebrigens C, C++, Obj C, Java, Fortran und Ada kompilieren.
    Und mit Scriptsprachen (Python, Ruby, ...) bist du eh fein raus.

    Ach ja, und GTK steht nicht fuer GNOME T Kit, sondern fuer GIMP ToolKit (GIMP wiederum steht fuer GNU Image Manipulation Program; und GNOME steht (bzw. stand mal) fuer GNU Network Object Model Environment (iirc). Ach ja, und GNU steht fuer GNU's not Unix. Akronyme sind toll).

  6. #6
    Zitat Zitat von masterquest
    Ach ja, und GTK steht nicht fuer GNOME T Kit, sondern fuer GIMP ToolKit (GIMP wiederum steht fuer GNU Image Manipulation Program; und GNOME steht (bzw. stand mal) fuer GNU Network Object Model Environment (iirc). Ach ja, und GNU steht fuer GNU's not Unix. Akronyme sind toll).
    Ich dachte das heißt doch nicht Gimp ToolKit.
    Okay, danke für die Aufklärung.

    Phyton ist mir zu umständlich zum einbauen in Systeme (meine Erfahrung soweit - habe mich aber auch nie richtig damit beschäftigt).
    Was ich gerne hätte wäre eine Sprache, mit welcher ich viele System ansprechen kann und wenig installiert werden muss (wenn möglich nur die Dateien die eben zu meinem Programm gehören).

    Schade das der Pascal Kram nicht so unterstützt wird ohne weiteres - mit dem Zeugs fangen wir nächstes Jahr in der Schule an und steigen dann noch auf Delphi über (Exkursmäßig).
    Werde ich mir in den Ferien mal Euere Postings nocheinmal durchlesen und schauen ob ich neben Pascal nicht noch eine ander Sprache ausprobieren werde.

  7. #7
    Binaerkompatibilitzaet wirst du ohnehin nicht haben. Das heisst, dass fuer jedes System ohnehin eigene ausfuehrbare Dateien erzeugen musst. Zum anderen ist natuerlich Pascal Plattforumunabhaengig. Genau so wie jede Sprache auf allen Plattformen laeuft, wo es fuer sie Compiler bzw Interpreter gibt.

  8. #8
    Zitat Zitat von Ineluki
    Binaerkompatibilitzaet wirst du ohnehin nicht haben. Das heisst, dass fuer jedes System ohnehin eigene ausfuehrbare Dateien erzeugen musst. Zum anderen ist natuerlich Pascal Plattforumunabhaengig. Genau so wie jede Sprache auf allen Plattformen laeuft, wo es fuer sie Compiler bzw Interpreter gibt.
    Das ist mir schon klar (auser es gibt Emulatoren/ Schnittstellen die eben die Programme abspielen können). Aber mit Pascal alleine dürfte man nicht sonderlich weit kommen - ich warte erstmal ab bis Ferien sind.

  9. #9
    Zitat Zitat von Ineluki
    Binaerkompatibilitzaet wirst du ohnehin nicht haben. Das heisst, dass fuer jedes System ohnehin eigene ausfuehrbare Dateien erzeugen musst. Zum anderen ist natuerlich Pascal Plattforumunabhaengig. Genau so wie jede Sprache auf allen Plattformen laeuft, wo es fuer sie Compiler bzw Interpreter gibt.
    Mit Java hat man weitgehende Binärkompatibilität. Zugegeben, Java ist von barocker Komplexität und manchmal muß man für einfache Aufgaben durch Reifen springen, aber in Sachen Portabilität ist Java ganz weit vorne.

    Ansonsten kommt man an C/C++ nicht vorbei. Dotnet/Mono ist sehr begrenzt zwischen Windows und Linux portabel (solange du im Wesentlichen alle Windows-Standardklassen vermeidest und GTK installierst), läuft aber AFAIK sonst nirgends. Objective-C läßt sich zwar auf allen großen Plattformen kompilieren, ist aber nur für die Apple-Welt relevant. Python und sonstige Skriptsprachen können zwar oft GUIs, sind aber nur für Linux interessant.

    Wenn man portable GUI-Anwendungen schreiben will ist GTK übrigens nicht unbedingt die erste Wahl - der Anwender muß erstens immer noch GTK bei sich installieren und zweitens neigen GTK-Anwendungen dazu, unter Windows nicht hundertprozentig wie Windows-Anwendungen auszusehen. Das gilt auch für Qt.
    In Sachen portable GUIs dürfte wxWidgets unübertroffen sein - für Windows kompiliert greift es auf GDI zurück, für Linux auf GTK und für OS X auf Carbon. Damit kriegst du auf jeder Plattform ein sehr natives Look-and-Feel. Allerdings gibt es AFAIK für wxW keine guten freien RAD-IDEs (im Gegensatz zu beispielsweise Qt oder FLTK).
    Wenn die Softtware auch unter MacOS laufen soll hast du im Wesentlichen die Wahl zwischen Java und C++/wxWidgets. Anders dürfte es schwer werden, ein gutaussehendes Programm hinzukriegen. (Kommt mir nicht mit GTK und Qt. Auf dem Mac sind GTK und Qt derb häßlich.)

    FLTK verdient eine Sondererwähnung: Es macht deinen Code minimal größer, läuft auf vielen Plattformen und kommt mit einer brauchbaren RAD-IDE, dafür ist es allerdings auch pottenhäßlich. Also, so richtig. Windows 95 war schöner.

  10. #10
    Zitat Zitat von Jesus_666
    (Kommt mir nicht mit GTK und Qt. Auf dem Mac sind GTK und Qt derb häßlich.)
    Rendert Qt nicht inzwischen auch ueber die nativen Widgets? Ich meine, mal irgendwo gelesen zu haben, dass das in einer der neueren Versionen eingebaut wurde.

  11. #11
    Zitat Zitat von masterquest
    Rendert Qt nicht inzwischen auch ueber die nativen Widgets? Ich meine, mal irgendwo gelesen zu haben, dass das in einer der neueren Versionen eingebaut wurde.
    Ja, an sich schon. Aber alle Programme in DarwinPorts/Fink/Portage wollen das X11-Qt als Dependency. Und den ganzen Kram ohne jegliches Paketmanagement von Hand zu bauen ist seit Jahren selbst für Linux-User unter der Würde.


    Zitat Zitat von Dingsi
    Dafür müsstest du den Teil des Kernels umschreiben, der für die Ausführung von ausführbaren Dateien zuständig ist: Also ja.
    Oder du stellst in den Kerneloptionen ein, daß er MISC-Binaries ausführt und stellst für dein Format einen Handler (also im Wesentlichen eine VM) bereit. Auf die Weise kann man beispielsweise PEs direkt an Cedega durchreichen.


    @Pascal: Warum nicht? Pascal nimmt zwar an Beliebtheit immer weiter ab und ich bevorzuge C-artige Syntaxen, aber ansonsten...


    @Mono: Okay, Mono läuft unter OS X auch, aber ich denke, man muß letztenendes doch wieder über GTK oder wxW gehen - Kram wie WinForms ist ja nicht ansatzweise portabel.
    Dann hat man das Problem, daß Mono/Dotnet das gleiche Grundprinzip wie Java verfolgt, also zu Bytecode kompiliert und JIT in Maschinencode übersetzt wird. Ergo hat man in etwa die gleiche Performanz wie mit Java.

    Übrigens ist die Sprachvielfalt nicht unbedingt ein wichtiges Argument für Dotnet - es gibt schon mehrere Sprachen wie Nice oder Groovy, die zu Java-Bytecode kompiliert werden.

  12. #12
    Zitat Zitat von Jesus_666
    @Mono: Okay, Mono läuft unter OS X auch, aber ich denke, man muß letztenendes doch wieder über GTK oder wxW gehen - Kram wie WinForms ist ja nicht ansatzweise portabel.
    Wobei ich anmerken muss, dass an der unterstützung der WinForms bereits gearbeitet wird. Wie die letztendlich dann auf dem Bildschirm aussehen werden, sprich ob natives Look and Feel usw. weiß ich jetzt aber nicht.

  13. #13
    Zitat Zitat von Ineluki
    Binaerkompatibilitzaet wirst du ohnehin nicht haben.
    Was zum Teil daran liegt, dass Linux keine Dateien ohne bestimmtes, ausführbares Format (COM-Dateien) zulässt. Würde Linux/UNIX diese Dateien auch zulassen, und wenn der Programmierer direkt die Hardware anspricht, wären gleiche Programme (ein und dieselbe Datei) die unter diesen verschiedenen System gleich laufen, durchaus möglich. Ist zwar viel LowLevel-Arbeit, aber beispielsweise für Virenprogrammierer wäre es eventuell ganz praktisch.

    freundliche Grüße, Rolus

  14. #14

    Users Awaiting Email Confirmation

    Zitat Zitat von Rolus
    Was zum Teil daran liegt, dass Linux keine Dateien ohne bestimmtes, ausführbares Format (COM-Dateien) zulässt. Würde Linux/UNIX diese Dateien auch zulassen, und wenn der Programmierer direkt die Hardware anspricht, wären gleiche Programme (ein und dieselbe Datei) die unter diesen verschiedenen System gleich laufen, durchaus möglich. Ist zwar viel LowLevel-Arbeit, aber beispielsweise für Virenprogrammierer wäre es eventuell ganz praktisch.

    freundliche Grüße, Rolus

    Ich kenn mich da net so aus, aber wäre es dann vielleicht nicht möglich, beim Installationsprozess das Unix/Linux System so zu verändern, dass es solche Dateien und somit eine Datei für beide System zulässt? Oder wäre das (a) nicht möglich, da man unix/linux dazu neu kompilieren müsste oder (b) wieder zu hardwareplattformabhängig?

  15. #15
    Zitat Zitat von .Mi
    Ich kenn mich da net so aus, aber wäre es dann vielleicht nicht möglich, beim Installationsprozess das Unix/Linux System so zu verändern, dass es solche Dateien und somit eine Datei für beide System zulässt? Oder wäre das (a) nicht möglich, da man unix/linux dazu neu kompilieren müsste oder (b) wieder zu hardwareplattformabhängig?
    Dafür müsstest du den Teil des Kernels umschreiben, der für die Ausführung von ausführbaren Dateien zuständig ist: Also ja.
    Alternativ könnte man die COM-Dateien in irgendeinem Emulator oder einer virtuellen Maschine laufen lassen, keine Ahnung ob es irgendwas schlankes dafür gibt.

  16. #16
    Zitat Zitat von .Mi
    Ich kenn mich da net so aus, aber wäre es dann vielleicht nicht möglich, beim Installationsprozess das Unix/Linux System so zu verändern, dass es solche Dateien und somit eine Datei für beide System zulässt? Oder wäre das (a) nicht möglich, da man unix/linux dazu neu kompilieren müsste oder (b) wieder zu hardwareplattformabhängig?
    Du kannst im Protected Mode (Nachfolger des Realmode [16 Bit], kein Speicherschutz ...) nicht einfach so eben auf die Hardware zugreifen. Die sogenannten BIOS-Interrupts sind im PM nicht verfügbar, deshalb werden im PM auch Treiber für alles mögliche gebraucht, im RM übernimmt das zum Großteil das BIOS (allerdings sind die Treiber halt sehr viel leistungsfähiger). Und die Ports zum ansteuern der Hardware werden im PM auch nur für den Kernel zugängig, Programme laufen im "Ring 3", der Kernel im "Ring 0" d.h. der Speicher/Hardware-Schutz des PMs lässt es auf Hardware-Basis schon garnicht zu das sowas geht. So können Programme nur auf allgemeine Sachen wie jumps, schreiben in bestimmte speicherabschnitte, if's (<- Hardware abhängig) und eben auf Betriebssystem-Interne Sachen zugreifen. So ist es beinahe unmöglich ohne gigantische Anpassungen Com bzw. Exe Dateien nativ unter Linux laufen zu lassen, aber das wollte ja eh keiner, denn der freie POSIX Betriebssatz ist um einiges besser und eben auch portabler als die WinAPI.

  17. #17
    Zitat Zitat von dennis_meckel
    Java möchte ich jetzt mal ausschließen, da Java angeblich nicht wirklich schnell sein soll im Vergleich mit den anderen Sprachen.
    @Jeez ... deswegen hab ich nichts zu Java gesagt, sonst hast du natuerlich vollkommen recht.

    Es ist zwar korrekt, dass Java grausam langsam sein kann, doch das Problem hast du nur bei zeitkritischen Berechnungen. Gerade im Bereich der GUI Anwendungen ist der Unterschied idR unerheblich, da eine GUI Anwendung ohnehin 90% der Zeit auf Usereingaben wartet.

    Ich versteh aber nicht, warum ihr so auf Pascal rumreitet. Ein Pascal Compiler ist bei der GCC doch dabei, und damit fuer fast jede relevante Plattform vorhanden. zumden bietet Pascal auch die Moeglichkeit, auf dynamische Bibliotheken zuzugreifen, wodurch ein Einsatz der GUI Toolkits wie GTL, FLTK, QT, wxW durchaus moglich sein soll. In Sachen Portabilitaet steht Pascal in einer Stufe mit C/++. Auch darf man die IDE/RAD Delphi nicht mit der Programmiersprache (Object)Pascal verwechseln. UNd auch fuer Delphi gibt es mit Lazarus mittlerweile einen auf der GCC aufbauenden FOSS Ansatz. MMn ist Pascal eine ausgezeichnete Anfaengersprache, mit der man durchaus auch lange Arbeiten kann.

  18. #18
    Zitat Zitat
    Objective-C läßt sich zwar auf allen großen Plattformen kompilieren, ist aber nur für die Apple-Welt relevant.
    Das ist aber doch kein Argument gegen Objective-C oder? Sicher ist es nur unter OSX stark verbreitet, aber die meisten wichtigen Libaries sind doch meines Wissens nach in C geschrieben, und da dürfte Objective-C doch auch drauf zugreifen können. Dem End-User is doch eh Wurscht in welcher Sprache ein Programm geschrieben ist.

    Zitat Zitat
    Dotnet/Mono ist sehr begrenzt zwischen Windows und Linux portabel (solange du im Wesentlichen alle Windows-Standardklassen vermeidest und GTK installierst), läuft aber AFAIK sonst nirgends.
    Ich habe letztens eine Seite gesehn wo ein Game Maker für OSX vertrieben wird und laut der Seite basiert das Ding auf Mono. Ich habs allerdings noch nicht ausgetestet, aber anscheinend geht Mono auch unter OSX.

    Ansonsten möchte ich Luki zustimmen was Pascal angeht. Die Sprache ist portabel (dank freepascal) und für die großen und wichtigen libaries (wie wxWidgets) gibt es auch Bindings. Außerdem wieviel Portabilität will man denn? Will ich nur die drei großen OS abdecken (Windows, Linux, OSX) vielleicht noch BSD? Oder will ich auch auf PDAs, Handys oder Handhelds laufen? Das eine Sprache auch auf 50 Millionen anderen OS läuft, die ich aber nie anpeile ist für mich kein wirkliches Argument für diese Sprache.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •