MichaelB: Welche Programmiersprache ist die richtige?

Beitrag lesen

Hallo,

Viele Java-Anwendungen die ich hier habe sind von der Geschwindigkeit her praktisch nicht mehr von C/C++ zu unterscheiden.

Wenn Sie erst einmal gestartet sind. Ein Java-Programm, das mir die Kommandozeilen-Parameter ausspuckt, braucht merklich länger als ein entsprechendes C oder C++-Programm oder gar PHP-Script.

Da hast Du vollkommen recht. Die Startzeit ist wirklich nicht berauschend. Deshalb schrieb ich auch in einem anderen Posting, dass ich für kleinere Sachen andere Sprachen (z.B. Skriptsprachen) bevorzugen würde.
Übrigens läßt sich mit einem Trick die Java-VM einmalig starten und im Speicher behalten, so dass der Start der Javaprogramme dann flott geht.
Schade das eine solche Option nicht irgendwo angeboten wird. Liegt vielleicht daran, dass das nicht ganz unproblematisch ist. Es könnte zu Wechselwirkungen zwischen mehreren gleichzeitig gestarteten Java-Programmen kommen.

Bei Java muss halt am Anfang der ganze java.lang.*-Krempel etc. in den Speicher geladen werden, und das kostet Zeit.

Viel Zeit braucht vorallem die Java-VM selbst. Der java.lang. Krempel wie Du ihn nennst sind ja nur Klassen und dir werden erst dann geladen, wenn sie benötigt werden.

Daher ist Java serverseitig auch nur als Servlet o.ä. sinnvoll, als CGI ist und bleibt Java Selbstmord. ;-)

Stimmt: CGI ist nicht anzuraten. Aber wer benutzt heute noch ernsthaft CGI-Skripte im ursprünglichen Sinne?

Aber insofern Zustimmung: Für ein Desktop-Programm, das ständig zumindest im Hintergrund läuft (Terminkalender, Adressbuch), dürfte es keinen wirklichen Geschwindigkeitsunterschied zu C/C++ geben.

Es kommt sicherlich immer auf den Fall an. Aber so groß wie gemeinhin angenommen ist der Unterschied auf keinen Fall. Übrigens ist schon allein C++ gegenüber C sehr viel langsamer. Ein gewisser Overhead scheint alleine schon die Objektorientierung darzustellen.

Und die Objektorientierung von C++ ist ein Witz.
Ich habe schon *ewig* (d.h. 5 Jahre oder mehr) nichts mehr in C++ gemacht, aber ich fand die Sprache eigentlich OK. Was genau hast Du daran auszusetzen?

Vergleiche mal C++ mit Objective-C, dann weißt Du was ich meine.
Es gibt viele Dinge. Vorallem aber ist es der statische Charakter. Ganz im Gegensatz zu Objective-C (oder auch Java), wo es dynamic typing, dynmische Methodensuche / dynamic-runtime-binding (statt virtuelle Methoden wie in C++). Die Botschaften die Objective-C Objekte empfangen können müssen nicht zur Compilezeit feststehen. Es gibt ein sauberen Methoden-Selektor als Alternative zu Funktionszeigern.
Übertrieben gesagt: C++ ist im Prinzip ein C mit einer Sprungtabelle.
Wie statisch die ganze Sache ist sieht man auch daran, dass die ersten C++ Compiler  aus C++ Code C-Code gemacht haben und das dann durch einen C-Compiler gejagt.
Dieses dynamic-runtime-binding erlaubt auch ein viel besseres Objekt-Design als C++. In vielen Fällen sind in C++ Hilfsklassen notwendig die nur dazu dienen bestimmte Konstrukte syntaktisch zu ermöglichen!
Aber es gibt noch weitere Vorteile dieses Verfahrens. So lassen sich zu Klassen von Klassenbiliotheken neue Funktionalitäten hinzufügen ohne die Bilitothek neu zu kompilieren.

MacOS nutzt das late-binding auch hervorragend aus. Bibliotheken und Programme können einfach ins Betriebssystem eingefügt werden, ohne dass eine großartige Installation notwendig ist oder das ganze Gehampel mit der Registry.
Komponenten braucht man nicht speziell zu deinstallieren sondern man löscht sie einfach.

Desweiteren ist die Syntax viel klarer als bei C++. Und das Speichermanagement intelligenter (ok, inzwischen gibt es sogar GarbageCollection für C++ ; passt aber nicht ganz ins Konzept). So läßt sich in Objective-C ein Objekt mit den angehängten Child-Objekten mit einem Schlag freigeben.

Zugegeben, in C++ gibt es auch einige Konstrukte die es in Objective-C nicht gibt. Aber das sind meistens Dinge, die in Objective-C ohnehin anders gehandhabt und daher nicht benötigt werden.

Unterm Strich ist für mich Objective-C das bessere Konzept.

Gruß
   MichaelB

0 111

Welche Programmiersprache ist die richtige?

Jürgen Ulmschneider
  • programmiertechnik
  1. 0
    Die dicke Tina
    1. 0
      wahsaga
      1. 0
        Andavos
    2. 0
      Onkel
      1. 0
        Fabian Transchel
    3. 0
      Atomfried
      1. 0
        Johannes Zeller
  2. 0
    Andavos
  3. 0
    Markus Trusk
    1. 0
      Andavos
      1. 0
        Markus Trusk
    2. 0
      Martin Jung
      1. 0
        MichaelB
        1. 0
          Martin Jung
          1. 0
            MichaelB
            1. 0
              Martin Jung
              1. 0
                MichaelB
                1. 0
                  Martin Jung
                  1. 0
                    MichaelB
    3. 0
      Andreas-Lindig
      1. 0
        MichaelB
  4. 0

    Nimm Java

    MichaelB
    1. 0
      Jürgen ulmschneider
      1. 0
        Fabian Transchel
        1. 0
          Christian Seiler
          1. 0
            Jürgen Ulmschneider
            1. 0
              Christian Seiler
              1. 0
                MichaelB
  5. 0
    Gerrit
    1. 0
      MichaelB
      1. 0
        Christian Seiler
        1. 0
          MichaelB
          1. 0
            Christian Seiler
            1. 0
              Jürgen ulmschneider
              1. 0
                MichaelB
              2. 0
                Ingo Turski
  6. 0
    Danny
    1. 0
      FrankieB
      1. 0
        MichaelB
        1. 0
          FrankieB
  7. 0
    Bio
    1. 0
      MichaelB
      1. 0
        Bio
        1. 0
          MichaelB
    2. 0
      Gerrit
      1. 0
        Gerrit
  8. 0
    Noodles
    1. 0
      MichaelB
      1. 0
        Noodles
        1. 0
          MichaelB
          1. 0
            Christian Kruse
            1. 0
              MichaelB
          2. 0
            GONZO
            1. 0
              MichaelB
    2. 0
      Jürgen Ulmschneider
      1. 0
        MichaelB
  9. 0
    Julian von Mendel
    1. 0
      MichaelB
  10. 0
    Jürgen Ulmschneider
    1. 0
      MichaelB
    2. 0
      Vinzenz
      1. 0
        MichaelB
        1. 0
          Klaus Mock
          1. 0
            MichaelB
          2. 0
            Frank Schönmann
            1. 0
              MichaelB
              1. 0
                Frank Schönmann
                1. 0
                  MichaelB
                  1. 0
                    Christian Seiler
                    1. 0
                      MichaelB
                      1. 0
                        Christian Kruse
                        1. 0
                          MichaelB
                          1. 0
                            Christian Kruse
                            1. 0
                              MichaelB
                              1. 0

                                Fortsetzung

                                MichaelB
                                1. 0
                                  Klaus Mock
                                  1. 0
                                    MichaelB
                  2. 0
                    Christian Kruse
                    1. 0
                      MichaelB
    3. 0
      Kopfwunde
    4. 0
      Eternius
      1. 0
        GONZO
        1. 0
          MichaelB
  11. 0
    Jürgen Ulmschneider
    1. 0
      MichaelB
      1. 0
        Fabian Transchel
        1. 0
          MichaelB
          1. 0
            Fabian Transchel
            1. 0
              MichaelB
      2. 0
        Christian Seiler
        • menschelei
        1. 0
          Fabian Transchel
  12. 0
    nobody
    1. 0
      Fabian Transchel
      1. 0
        MichaelB
        1. 0
          Fabian Transchel
          1. 0
            MichaelB
            1. 0
              Fabian Transchel
              1. 0

                Energien

                MichaelB
                • sonstiges
                1. 0
                  Christian Seiler
                  1. 0
                    Christian Seiler
                    1. 0
                      MichaelB
                  2. 0
                    Fabian Transchel
                    1. 0
                      Christian Seiler
                  3. 0
                    MichaelB
                  4. 0
                    Christian Seiler
                    1. 0
                      Klaus Mock
                      1. 0
                        Fabian Transchel
                    2. 0
                      Fabian Transchel
          2. 0
            Christian Seiler
            1. 0
              Fabian Transchel