Nick: C vs. C++

Hallo,

ich habe gerade eine Stellenausschreibung gelesen, in der Kenntnisse in C erwartet werden. Ich kenne aber nur C++. Ist der Unterschied zwischen den beiden Programmiersprachen emens? Meint Ihr ich könnte mich trotzdem auf diese Stelle bewerben, wenn ich C++ behersche?

Danke für Eure Meinung

Nick

  1. C++ ist im Grunde objektorientiertes C. Die Ansätze und Konzepte bei den beiden Sprachen sind daher unterschiedlich, auch wenn die Syntax ausgesprochen ähnlich ist.

    Wenn Du Objektorientierung als Dogma und nicht als Konzept begreifst, wirst Du Probleme haben, in C zurechtzukommen - ansonsten sollte die Umstellung recht einfach sein.

    Gruß, LX

    --
    RFC 1925, Satz 8: Es ist komplizierter als man denkt.
  2. Hallo,

    ich habe gerade eine Stellenausschreibung gelesen, in der Kenntnisse in C erwartet werden. Ich kenne aber nur C++. Ist der Unterschied zwischen den beiden Programmiersprachen emens? Meint Ihr ich könnte mich trotzdem auf diese Stelle bewerben, wenn ich C++ behersche?

    Danke für Eure Meinung

    C ist die Mutter aller Programmiersprachen, wenn du C++ kannst, dann kannst du auch C, oder bräuchtest bisschen Zeit um dich da einzuarbeiten.

    Der größte Unterschied ist das C keine OOP ist, C++ dagegen schon.

    1. Moin Moin!

      C ist die Mutter aller Programmiersprachen,

      Nö, es gibt auch noch einige andere, die von C verschont geblieben sind, weil sie früher da waren, oder schlicht gezielt neu entworfen wurden. Um mal ein paar in die Runde zu werfen: Pascal, Modula, Fortran, Cobol und nicht zuletzt BASIC.

      wenn du C++ kannst, dann kannst du auch C, oder bräuchtest bisschen Zeit um dich da einzuarbeiten.

      Richtig. Viele der "tollen Tricks" von C++ funktionieren in C nicht (so einfach), so gibt es z.B. kein Operator Overloading.

      Der größte Unterschied ist das C keine OOP ist, C++ dagegen schon.

      Man kann mit viel Schmerzen, Präprozessor-Tricks und intimsten Kenntnissen von Compiler und Zielsystem durchaus auch in C objektorientiert programmieren. Das ist aber nur was für Leute, denen die Domina zu schlapp ist. ;-) Umgekehrt kann man in C++ auch stumpf prozedural arbeiten und mehr oder weniger C-Code mit etwas aufgepeppter Syntax abliefern. Das muß natürlich nicht unbedingt die cleverste Idee sein.

      Ich beobachte oft, dass man C und C++ durcheinander wirft, beide Begriffe synonym verwendet, oder ohne Unterschied beide unter C/C++ zusammenfaßt. Von daher würde ich mir nicht besonders viele Sorgen machen. Letztlich ist Code schreiben der kleinste Teil des Jobs (es sei denn, man heuert als Code-Sklave an).

      Alexander

      --
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
      1. Hallo,

        wenn du C++ kannst, dann kannst du auch C, oder bräuchtest bisschen Zeit um dich da einzuarbeiten.
        Richtig. Viele der "tollen Tricks" von C++ funktionieren in C nicht (so einfach), so gibt es z.B. kein Operator Overloading.

        viele der "tollen Tricks" von C++, die in C nicht zur Verfügung stehen, empfinde ich auch nicht unbedingt als Vorteil. Das Überladen von Operatoren ist vielleicht in manchen Fällen eine praktische Sache; es führt aber auch dazu, dass der Programmcode kontextabhängig wird, derselbe Code also unter verschiedenen Bedingungen unterschiedlich interpretiert wird. Das macht C++ schwer nachvollziehbar.

        Man kann mit viel Schmerzen, Präprozessor-Tricks und intimsten Kenntnissen von Compiler und Zielsystem durchaus auch in C objektorientiert programmieren.

        Ich sehe dabei überhaupt keine Schmerzen und brauche auch keine Tricks. Ich betone immer wieder: Objektorientierung findet im Kopf des Programmierers statt. Man kann sogar in Assembler objektorientiert programmieren (und das tu ich gelegentlich), in C erst recht. Und zwar ohne die Knüppel, die C++ einem dabei gelegentlich zwischen die Beine wirft.

        Das ist aber nur was für Leute, denen die Domina zu schlapp ist. ;-)

        Okay, danke für diese Lebensweisheit. Dann brauche ich die Erfahrung mit einer Domina also nicht mehr - es wäre fad und langweilig. ;-)

        Ich beobachte oft, dass man C und C++ durcheinander wirft, beide Begriffe synonym verwendet, oder ohne Unterschied beide unter C/C++ zusammenfaßt.

        Halte ich für legitim, denn ungeachtet der unterschiedlichen Ideologie ist C++ technisch eine Obermenge von C.

        Letztlich ist Code schreiben der kleinste Teil des Jobs

        Aber ein wichtiger und ein spannender - und einer, den ich mir nicht aus der Hand nehmen lassen möchte.

        So long,
         Martin

        --
        Abraham sprach zu Bebraham: Kann i mal dei Cebra ham?
        1. Hallo Martin,

          viele der "tollen Tricks" von C++, die in C nicht zur Verfügung stehen, empfinde ich auch nicht unbedingt als Vorteil. Das Überladen von Operatoren ist vielleicht in manchen Fällen eine praktische Sache; es führt aber auch dazu, dass der Programmcode kontextabhängig wird, derselbe Code also unter verschiedenen Bedingungen unterschiedlich interpretiert wird. Das macht C++ schwer nachvollziehbar.

          Sagen wir's so: C++ bietet einem so viele Möglichkeiten, die man derart einfach missbrauchen kann, dass man sehr leicht Beispiele für miserablen Code findet, den man nicht wirklich verstehen kann.

          Aber gerade z.B. Operatorüberladung: Finde ich persönlich sehr nützlich wenn brauchbar angewandt. Wenn ich eine eigene Klasse schreibe z.B. für beliebig große Integer, dann ist es praktisch, wenn ich trotzdem noch a + b schreiben kann, um die zu addieren. Dito mit z.B. Datumsklassen.

          Es gibt aber leider genug Beispiele, wo Leute Operatorüberladung für kompletten Mist eingesetzt haben. Von daher verstehe ich, dass Du dem ganzen sehr skeptisch gegenüberstehst.

          Man kann mit viel Schmerzen, Präprozessor-Tricks und intimsten Kenntnissen von Compiler und Zielsystem durchaus auch in C objektorientiert programmieren.

          Ich sehe dabei überhaupt keine Schmerzen und brauche auch keine Tricks. Ich betone immer wieder: Objektorientierung findet im Kopf des Programmierers statt. Man kann sogar in Assembler objektorientiert programmieren (und das tu ich gelegentlich), in C erst recht. Und zwar ohne die Knüppel, die C++ einem dabei gelegentlich zwischen die Beine wirft.

          Kommt darauf an, was Du machen willst. Wenn Du OOP auf den kleinsten gemeinsamen Nenner (Objekte) beschränkst, dann hast Du sicherlich recht. Wenn Du dagegen noch Laufzeitpolymorphie und Überladen von Methoden unterstützen willst (oder alternativ halt Prototyping wenn man einen anderen Weg gehen will) - und diese Konzepte machen OOP in meinen Augen erst wirklich nützlich - dann ist das in C zwar möglich (und in Assembler auch), aber das wird dann eklig.

          Ich beobachte oft, dass man C und C++ durcheinander wirft, beide Begriffe synonym verwendet, oder ohne Unterschied beide unter C/C++ zusammenfaßt.

          Halte ich für legitim, denn ungeachtet der unterschiedlichen Ideologie ist C++ technisch eine Obermenge von C.

          Strenggenommen gibt es einige winzige Ausnahmen.

          Viele Grüße,
          Christian

          --
          Mein "Weblog" [RSS]
          Using XSLT to create JSON output (Saxon-B 9.0 for Java)
          »I don't believe you can call yourself a web developer until you've built an app that uses hyperlinks for deletion and have all your data deleted by a search bot.«
                      -- Kommentar bei TDWTF