Announcement

Collapse
No announcement yet.

C vs. C++

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • C vs. C++

    Was bringt C gegenüber C++?

  • #2
    Eigentlich nichts. :-)
    Meines Wissens ist mit C++ alles möglich was mit C auch möglich ist.
    C++ hat dazu den großen Vorteil von Objectstrukture

    Comment


    • #3
      Ja,
      C ist ein Teil von C++.
      Die üblichen Programmiertechnicken von C und C++ unterscheiden sich
      allerdings. Was da besser ist, sollte man dann sich im Detail
      anschauen

      Comment


      • #4
        Ist C vielleicht einen Tick schneller als C++

        Comment


        • #5
          Das kommt sicherlich auf den Compiler an.
          Da aber C++ eine Weiterentwicklung von C ist,
          denke ich schon dass es ein Tick schneller ist

          Comment


          • #6
            Dass kann man so allgemein nicht sagen. Im compilieren ist C auf jeden fall schneller. <br> Aber ich denke gerade bei aufwendigen Projekten wird C++ wesentlich schneller sein.<br>
            Näturlich hängt das alles vom können des Programmierers ab

            Comment


            • #7
              C vs. C++

              Eine sehr interessante Frage, die nicht so leicht zu beantworten ist, wie es scheint.
              Richtig ist natürlich, dass C eine Untermenge von C++ ist. Und C++, nomen est omen, ist aus C hervorgegangen - und das aus einer tiefen Notwendigkeit heraus. Denn man hatte einen Punkt in der Software-Entwicklung erreicht, wo die Wartung von C-Sourcen immer schwieriger wurde; überdies gab es mit C noch viele andere Probleme.

              Und welche Probleme waren das? Die Speicherverwaltung obliegt bei C dem Entwickler. Das hat sich aber im Laufe der Zeit nicht nur als Segen herausgestellt, sondern ist auch nach wie vor die Quelle vieler Bugs (Speicherlecks und andere hübsche Dinge). Richtig ist übrigens auch, dass C-Code in der Regel schneller abläuft als C++-Code - dafür gibt es gute Gründe (Stichwort: keine Objekte; sehen wir mal von Objective-C ab;-)).

              Als Beweis für die bessere Performance von C sei auf die Tatsache hingewiesen, dass die meisten Betriebssysteme (besser gesagt die Kernel-Routinen) unserer Tage in C geschrieben sind - Linux/Unix, Win32 u.a.m.. Natürlich ist noch etwas Assembler mit im Spiel; der größte Teil ist aber in C geschrieben.

              Das ist aber nur die halbe Wahrheit: Die Interpreter der bekannten Programmiersprachen Python, Perl, PHP und Ruby sind ebenfalls in C implementiert. Natürlich aus den gleichen Gründen - Performance und Systemnähe sind nun mal die absoluten Stärken von C!
              Deshalb kann der ambitionierte Anwender eben diese Sprachen mit Hilfe von C nach Belieben erweitern - das ist manchmal notwendig, um eine gewünschte Funktionaltät hinzuzufügen, die es so in der Standardbibliothek nicht gibt.

              Und C bietet weitere Vorteile: Man nennt es manchmal eine "Highlevel-Lowlevel-Sprache". Einerseits besticht C durch superschnelle Performance, andererseits läßt es sich im Vergleich zu Assembler wesentlich leichter anwenden.
              Denn das war am Anfang der siebziger Jahre eine wichtige Forderung beim Design von C: Die Assembler-Programmierung war einfach zu aufwendig; folglich wurde eine Sprache benötigt, mit der man schneller arbeiten konnte.

              Wie man an diesen Fakten sieht, sind die Probleme von damals scheinbar noch die Probleme von heute - wobei sich in Sachen "Rapid Development" mittlerweile viel getan hat (Stichwort Python).

              Wie oben skizziert, gab es in der Folgezeit mit C viele Probleme. Damit schlug dann die Stunde von C++, welches Anfang der achtziger Jahre von B. Stroustrup entwickelt wurde ('C with classes' hieß das damals). Was war nun besser? Eine ganze Menge. Aber das wirklich Revultionäre an C++ waren aber, neben vielen neuen Sprachmitteln, die Programmier-Konzepte (die Stroustrup u. a. von Simula 67 entlehnte). Man kann mit Fug und Recht sagen, dass mit der Einführung von C++ der OOP erstmals im großen Stil zu ihrem Recht verholfen wurde (Smalltalk indes hat nie die Bedeutung von C++ erlangt).

              Und wie könnte es anders sein, auch C++ warf nach kurzer Zeit viele Fragen auf (die Java zuguterletzt nicht gelöst hat).
              So sagt man der Sprache nicht zu Unrecht nach, dass sie "aufgebläht" ist. Ein weiteres Problem ist die Portabilität.
              Unter Windows gibt es eben MS-C++ (besser bekannt als Visual C++), unter Linux wiederum ist Qt führend (es läuft zwar auch unter Windows, hat aber dort nicht die Bedeutung wie unter Linux) und so weiter und so fort.

              Trotz dieser Probleme hat sich C++ für die Desktop-Entwicklung als Standard etabliert (Win32, Linux-KDE). Gut, es gibt auch noch Delphi; und C# konnte C++ bisher nicht verdrängen.

              Die Gründe für die Verwendung von C++ liegen auf der Hand: die Sprache ist mächtig (durch das C-Erbe - das aber Segen und Fluch zugleich ist), ebenfalls sehr performant und es existieren viele professionelle IDEs, Werkzeuge und vor allem Bibliotheken (die STL, die MFC von Microsoft, Qt von Trolltech, auch Borland muss in diesem Zusammenhang unbedingt genannt werden).
              Last not least sei noch der Java-Compiler Jikes von IBM genannt - der ist aus Performance-Gründe

              Comment


              • #8
                Der Artikel is zwar uralt, aber ich möcht trotzdem noch mein Senf dazugeben.

                Ich selbst entwickel mit GTK+ in C und da ganz GNOME in C mit GTK+ geschrieben ist kann man nicht sagen das sich C++ auf den Desktops durchgesetzt hat. GTK+ lässt sich mit GTKmm zwar genauso unter C++ schreiben soz. als gegenstück zu Qt, trotzdem wird in GNOME zu 95% C benutzt.

                Und GNOME ist momentan die am weitest verbreitete Desktop umgebung.

                Die GTK+ Programme die ein Qt gegenstück haben laufen in GTK+ meistens schneller und RAM spaarender als ihr Qt gegenstück.

                Und ich finde (ist aber geschmackssache) das sich GTK+ wesentlich angenehmer schreiben lässt in C =)

                Comment

                Working...
                X