theSnowOne: Blöde frage ... Wie Platformübergreifend ist C++? C++ <> Java?

Ja Hallo liebe Forumer und Forumerinnen!...

Ich hab da mal wieder eine Frage an Euch.... Naja, genau genommen sind es zwei....

1.) Wie Platformübergreifend ist C++? Läuft da wirklich jedes Programm unter Windows, Linux, Unix? Und wenn ja, oder nein, was brauche ich dafür das das funktioniert?

und 2.) Was ist für welche Anwendung besser geeigent? Java oder C++? Oder was ist Platformübergreifender?

Und (naja, doch 3 Fragen... ;o) 3.) Was ist für einen Anfänger wie mich am besten geeigent um ne echte Programmiersprache zu lernen? Ich 'kann' bisher nur php, und perl...

Ich bedanke mich recht Herzlich bei Euch für Eure Hilfe!

T H X !

MfG

TheSnow

  1. 1.) Wie Platformübergreifend ist C++? Läuft da wirklich jedes Programm unter Windows, Linux, Unix? Und wenn ja, oder nein, was brauche ich dafür das das funktioniert?

    Mit C++ kann man sicherlich Programme für alle diese Plattformen schreiben. Allerdings muß man sie teilweise wohl doch heftigst anpassen, wenn man ein Original-Windows-Programm auf Linux laufen lassen will und umgekehrt. Die Sprache C++ ist dabei nicht das Hindernis, sondern die Systemumgebung und die APIs. Die grafische Benutzeroberfläche von Linux wird einfach anders angesprochen.

    und 2.) Was ist für welche Anwendung besser geeigent? Java oder C++? Oder was ist Platformübergreifender?

    Java läuft ohne Änderungen auf jeder Plattform, für die es eine Java Virtual Machine gibt. Das geht deshalb, weil diese "Maschine" die Standard-Java-Aufrufe für irgendwelche Bildschirmdarstellung umsetzt auf die jeweilige Plattformerfordernis, oder es auch selbst übernimmt. Mit C++ hättest du den Vorteil, das es im Prinzip schneller ist, weil Java (zwar nicht grundsätzlich, aber mit heutigen Möglichkeiten) immer noch Zwischenschritte braucht und die CPU die Java-Befehle nicht direkt ausführt. Es gibt aber sehr wohl spezielle Java-CPUs, die darauf ausgelegt sind, Java direkt auszuführen, und die sind logischerweise sehr schnell.

    Also für zeitkritische Dinge nimm nicht unbedingt Java. ;) Für Applets, die im Browser laufen, nimm nur Java.

    Und (naja, doch 3 Fragen... ;o) 3.) Was ist für einen Anfänger wie mich am besten geeigent um ne echte Programmiersprache zu lernen? Ich 'kann' bisher nur php, und perl...

    PHP und Perl sind echte Programmiersprachen. Man kann tolle Dinge damit machen, und das teilweise auf wesentlich elegantere und kürzere Art und Weise, als das bei C++, C oder Java der Fall ist. Da PHP und Perl aber eher aufs Internet ausgerichtet sind, wäre Java irgendwie die passende Ergänzung dazu, oder? Du kannst natürlich auch was ganz anderes lernen, z.B. Pascal, Python, Lisp, Fortran,...

    - Sven Rautenberg

    1. und 2.) Was ist für welche Anwendung besser geeigent? Java oder C++? Oder was ist Platformübergreifender?

      Java läuft ohne Änderungen auf jeder Plattform, für die es eine Java Virtual Machine gibt. Das geht deshalb, weil diese "Maschine" die Standard-Java-Aufrufe für irgendwelche Bildschirmdarstellung umsetzt auf die jeweilige Plattformerfordernis, oder es auch selbst übernimmt. Mit C++ hättest du den Vorteil, das es im Prinzip schneller ist, weil Java (zwar nicht grundsätzlich, aber mit heutigen Möglichkeiten) immer noch Zwischenschritte braucht und die CPU die Java-Befehle nicht direkt ausführt. Es gibt aber sehr wohl spezielle Java-CPUs, die darauf ausgelegt sind, Java direkt auszuführen, und die sind logischerweise sehr schnell.

      Hm.. Java und plattformunabhängigkeit...

      Warum werden Grids unter Windows direkt, unter Linux besche** und unter Solaris erst im zweiten Schritt dargestellt?

      Warum laufen manche JAVA-Applikationen super.. bis .. ja bis man sie mal auf Unix-Rechnern statt auf nem Windows Rechner kompiliert und ausführt (bei der selben Java-Version) da man sie dort z.b. für ein Programmierpraktika abgeben muß?

      So kompatibel ist JAVA da gar nicht.. gibt noch etliches was irgendwie nicht ganz klappt...

      Und das spezielle JAVA-CPU's besoders schnell sind.. sorry.. je komplexer die CPU Befehle sind (und bei JAVA werden sie im Vergleich zu normalen Assembler sehr komplex) desto lahmer ist eine gleichschnell getaktete CPU.
      Siehe Patterson&Hennesy : Computer Architecture & Design.

      (Ganz grob, Parallellverarbeitung von Prozessen, Ein Befehlszyklus ist viel länger und muß auch von kleinen Befehlen ganz durchlaufen werden usw.)

      1. Hallo,

        Warum laufen manche JAVA-Applikationen super.. bis .. ja bis man sie mal auf Unix-Rechnern statt auf nem Windows Rechner kompiliert und ausführt (bei der selben Java-Version) da man sie dort z.b. für ein Programmierpraktika abgeben muß?

        darauf kann man nur sagen:
        Es gibt Befehle, die sind VISUAL Java spezifisch!
        Wenn man seine Anwendung erstellt, sollte man auch darauf
        achten nicht Microsoftspezifische Befehle zu benutzen
        (zum beispiel bei einer Datenbankverbindung)
        sondern die auch zum echten Java gehoeren!
        Sonst ist es ja kein Wunder wenns nicht auf Linux funktioniert.

        Ausserdem gibts zu den Grids verschiedene Details nachzulesen,
        in denen erklaert wird, warum die Darstellung differiert.
        Steht alles in den Dokus, man muss es nur lesen und beachten!
        Nein ich habe die jetzt nicht mehr im Kopf, aber mein
        Gedaechtnis meint sich an "Goto Java 2" und die Sun Homepage dunkel
        zu erinnern, das reichte mir zumindest, um mit der Plattform
        keine Probleme zu haben.

        Gruss
        Sonia

    2. hi!

      Mit C++ kann man sicherlich Programme für alle diese Plattformen
      schreiben. Allerdings muß man sie teilweise wohl doch heftigst
      anpassen, wenn man ein Original-Windows-Programm auf Linux laufen
      lassen will und umgekehrt. Die Sprache C++ ist dabei nicht das
      Hindernis, sondern die Systemumgebung und die APIs. Die grafische
      Benutzeroberfläche von Linux wird einfach anders angesprochen.

      Nicht unbedingt. Beispielsweise ist die Qt-Bibliothek mittlerweile
      frei verfügbar für Windows, Linux und MacOS (für nicht-kommerzielle)
      Programme. Damit ist es möglich, grafische Oberflächen für alle drei
      Betriebssystemen gleichermaßen zu schreiben. Und oft verhält es sich
      mit anderen Bibliotheken genauso.

      Es ist also nicht mehr unbedingt so kompliziert, eine C++-Anwendung
      für mehrere Betriebssysteme zu schreiben, wenn man alles richtig
      macht.

      Mit C++ hättest du den Vorteil, das es im Prinzip schneller ist,
      weil Java (zwar nicht grundsätzlich, aber mit heutigen
      Möglichkeiten) immer noch Zwischenschritte braucht und die CPU die
      Java-Befehle nicht direkt ausführt.

      Das kann man wohl sagen... ;) Java-Programme sind ca. 20 bis 50 mal
      langsamer als kompilierte Programme in C oder auch C++.

      PHP und Perl sind echte Programmiersprachen. Man kann tolle Dinge
      damit machen, und das teilweise auf wesentlich elegantere und
      kürzere Art und Weise, als das bei C++, C oder Java der Fall ist.

      Da PHP und Perl aber eher aufs Internet ausgerichtet sind, wäre

      Total falsch. Perl wurde lange Zeit bevor es im Internet verwendet
      wurde schon auf Unix-Systemen zur Systemadministration und ähnlichem
      eingesetzt... :) Dass es jetzt sehr starken Einsatz in CGI-Skripten
      findet, liegt nur daran, dass es sehr gut geeignet ist, um zb.
      String-Verarbeitung durchzuführen.

      Bei PHP stimme ich dir zu, aber das ist ja auch nix... ;)

      Java irgendwie die passende Ergänzung dazu, oder? Du kannst
      natürlich auch was ganz anderes lernen, z.B. Pascal, Python, Lisp,
      Fortran,...

      Lisp? Das wird er ja wohl nie wieder brauchen, es sei denn er geht
      mal an die Uni... Und Fortran? ;)

      Python ist eigentlich recht einfach und auch recht hübsch, und man
      lernt, richtig einzurücken (Abseitsregel!). Sollte sich für Anfänger
      also auch recht gut eignen. Wobei man dann wieder nicht lernt,
      Variablen zu deklarieren und so, dafür müsste man dann schon eine
      Programmiersprache wie C(++), Java oder Pascal lernen.

      bye, Frank!

      1. Moin !
        ... kleine Bemerkung !

        Mit C++ hättest du den Vorteil, das es im Prinzip schneller ist,
        weil Java (zwar nicht grundsätzlich, aber mit heutigen
        Möglichkeiten) immer noch Zwischenschritte braucht und die CPU die
        Java-Befehle nicht direkt ausführt.

        Das kann man wohl sagen... ;) Java-Programme sind ca. 20 bis 50 mal
        langsamer als kompilierte Programme in C oder auch C++.

        Java ist zwar als "Junge Programmiersprache" etwas langsamer als C oder C++ , aber die Zeiten in denen man von Faktor 20 bis 50 reden konnte sind schon lange vorbei. (Ansonsten hätte sich Java wohl kaum soweit entwickelt).

        Durch Überarbeitung der Compiler und einiger zusätzlichen Tools kann man je nach Anwendung von Faktor 2 bis 3 reden. ( geht natürlich auch langsamer aber Faktor 20 bis 50 beruht nicht mehr auf aktuellen Informationen.)

        CU

        1. Joho,

          Java ist zwar als "Junge Programmiersprache" etwas langsamer als C oder C++ , aber die
          Zeiten in denen man von Faktor 20 bis 50 reden konnte sind schon lange vorbei. (Ansonsten
          hätte sich Java wohl kaum soweit entwickelt).

          Richtig.

          Durch Überarbeitung der Compiler und einiger zusätzlichen Tools kann man je nach
          Anwendung von Faktor 2 bis 3 reden. ( geht natürlich auch langsamer aber Faktor 20 bis 50
          beruht nicht mehr auf aktuellen Informationen.)

          Nein ;-) das ist falsch. 10 bis 15 mal waere richtig, laut Benchmarks, und laut "GoTo Java 2".

          Gruss,
           CK
           http://wwwtech.de

  2. Hi,

    also ich habe nen Job als JAVA Programmierer und würde sagen das ich damit deshalb auch recht gut umgehen kann. Was ich dabei aber gelernt habe ist das, wenn man "richtige" Programme schreibt doch recht häufig an seine grenzen stößt (Performance, zugriff auf I/O dinge, Plattform abhängiges Zeug halt) und dann doch wieder C++/C benutzen muss. Davon abgesehen halte ich Java für die "schönere" Sprache und die Plattform Unabhängigkeit ist, wenn man kein Nativen-Code einsetzt, doch relativ einfach zu realisieren.

    Bei Pascal, Lisp, Prolog und wie sie alle heißen glaube ich nicht das sie noch aus ihrem Nischen Dasein rauskommen werden. Da würde ich dann noch eher VBasic lernen.

    Hmm was wollte ich also sagen, wenn du planst dich in Zukunft sehr intensiv mit Programmieren zu beschäftigen lerne lieber C++ dann ist das mit Java auch kein großes Problem andersherum ist es schon etwas schwieriger.

    Aber eigentlich sollte jeder erst mal Assembler lernen :-)

    Machs gut

    Tina

    1. Hallo,

      .....wenn man "richtige" Programme .....

      Was ist das?

      Grüße,
      Martin

      1. .....wenn man "richtige" Programme .....
        Was ist das?

        <philosophier>
        anwendungen, die mehr tun, als mal nur ein bisschen
        in ihrer eigenen Anwendung rumzukrickseln und bessere
        Taschenrechner darstellen ;-)
        die zusaetzlich auf mehreren Umgebungen lauffaehig sein
        muessen, gleichzeitig aber komplexe einstellungen
        wie Server automatisch einrichten und anderes tun,
         am besten noch ohne grosses zutun des Benutzers.
        die vielleicht in der lage sind (ok das kann man auch ohne grosses
        wissen), bei unachtsamkeit,oberflaechlichkeit oder
        unwissen des Programmierers das BS unbrauchbar zu machen.
        Kann sehr lustig sein :-)</philosophier...>

        na denn...
        <lasst uns mal n bissl am rechten unteren fluegel in
        der hintersten kernelschraube drehen,
        vielleicht explodiert der Reschner dann>
        *gg*

        Sonia

        1. Hi,

          die zusaetzlich auf mehreren Umgebungen lauffaehig sein
          muessen, gleichzeitig aber komplexe einstellungen
          wie Server automatisch einrichten und anderes tun,
          am besten noch ohne grosses zutun des Benutzers.

          Das hat wenig (gar nichts) mit der Implementierungssprache, aber sehr viel mit der Architektur/Design der Anwendung zu tun.

          die vielleicht in der lage sind (ok das kann man auch ohne grosses
          wissen), bei unachtsamkeit,oberflaechlichkeit oder
          unwissen des Programmierers das BS unbrauchbar zu machen.

          siehe oben.

          Wir entwickeln u.a. Java-Applikationen (Dokumentenmanagement, verschiedene Middleware-Applikationen im Bankenumfeld etc.) für Unix nur auf NT. Klappt wunderbar.
          Das sind für mich übrigens auch "richtige" Programme (vielleicht sind Desktop-Programme ja nur "halbrichtige" Programme ;-)) ).

          Grüße,
          Martin

          1. Wir entwickeln u.a. Java-Applikationen (Dokumentenmanagement, verschiedene Middleware-Applikationen im Bankenumfeld etc.) für Unix nur auf NT. Klappt wunderbar.

            Echt? ist ja witzig...klingt vertraut... Bei "nur" NT gehts
            ja noch, ich hab mal nur eine Setup-automation fuer
            Win95-98-NT-2000 gemacht, wobei dieses Anpassen schon aufwendig war,
            obwohls nur MS-Kram war. NT ging ja einfach, das auf 95 auch "gehend"
            zu machen war unter den gegebenen Umstaenden nicht einfach, noch
            schlimmer weils nachtraeglich war.

            Das sind für mich übrigens auch "richtige" Programme (vielleicht sind Desktop-Programme ja nur "halbrichtige" Programme ;-)) ).

            ja - koennte sein :-))

            so denn, frohes schaffen ;-)
            Sonia