Ist C/C++ eine Sprache oder zwei Sprachen?

Lesezeit: 9 Minuten

Benutzer-Avatar
Scott O’Donnell

Ist C/C++ eine Sprache oder zwei Sprachen? Ich habe gehört, C++ sei nur C mit Klassen. Ist das richtig?

  • Das ist nicht sehr schön, Leute. Die Frage könnte wahrscheinlich mit einer Google-Suche beantwortet werden, aber Sie müssen sich beruhigen. Sie müssen wirklich zwischen einer in böser Absicht gestellten Frage und einer Frage von jemandem unterscheiden, der neu in der Programmierung ist.

    – zneak

    15. Januar 2013 um 2:50 Uhr


  • @BenjaminLindley Der offizielle Begriff dafür ist “Clean C”.

    – Mystisch

    15. Januar 2013 um 2:54 Uhr

  • @Mystcial: Ich bin mir nicht sicher, was das zum formellen Begriff macht. Es war nur der Begriff, wie er in irgendeinem Buch verwendet wurde. Der Name macht die Bedeutung sicherlich nicht klar. Wenn ich C-Code schreibe, der Arrays mit variabler Länge verwendet, restrictund andere vollkommen gute Funktionen, mein Code ist nicht “Clean C”?

    – Benjamin Lindley

    15. Januar 2013 um 3:11 Uhr


  • Ich denke, @zneak macht hier einen wichtigen Punkt. Dies mag eine Anfängerfrage sein, die jedem mit ein wenig Erfahrung offensichtlich erscheint, aber es ist sicherlich keine Frage, die „wahrscheinlich zu Debatten, Argumenten, Umfragen oder ausgedehnten Diskussionen führen wird“. IMO gibt es keine Notwendigkeit, dies zu schließen.

    – Adam Lear

    15. Januar 2013 um 4:06 Uhr

  • Eigentlich, C/C++ ist ein Ausdruck (der sowohl in C als auch in C++ ein undefiniertes Verhalten hat, weil er C modifiziert und versucht, seinen Wert ohne dazwischenliegenden Sequenzpunkt zu verwenden).

    – Jerry Sarg

    15. Januar 2013 um 5:54 Uhr

Benutzer-Avatar
Kartoffelklatsche

C++ wich 1982-1983 von C ab, und das ist eine lange Zeit in Computerjahren. Aber es gibt viele C-Bibliotheken mit C++-Kompatibilität, einschließlich der C-Standardbibliothek selbst, und ein ständiger Strom von Programmen wird von C nach C++ portiert. Viele C-Programmierer kennen oder verwenden nur die Features, die mit C++ kompatibel sind.

Sie werden durch verschiedene ISO-Normen von separaten Gremien definiert. Selbst wenn sie kompatible Funktionen definieren, wird dies oft mit unterschiedlichen Begriffen definiert.

Die Bezugnahme auf C/C++ ist ungefähr so ​​gültig wie die Bezugnahme auf Italienisch/Spanisch. Sie sollten vorsichtig sein, wem und wann Sie einen solchen Begriff verwenden. Aber es stimmt, dass Ideen in beide Richtungen verbreitet werden und die Ähnlichkeiten mehr als zufällig sind.

  • @BoPersson Heh, ich habe es nicht wirklich verifiziert. Aber die Komitees sind sehr groß, und die gemeinsamen Mitglieder sind wenige.

    – Kartoffelklatsche

    15. Januar 2013 um 12:11 Uhr

  • In den frühen neunziger Jahren wurden einige Ideen des C++-Komitees vom C-Komitee übernommen, so dass es eine gewisse Interaktion in Bezug auf die Sprachentwicklung gibt. Und das würde man erwarten, wenn man die Geschichte der Sprachen berücksichtigt.

    – Honky-Tonk

    15. Januar 2013 um 13:21 Uhr

  • @HonkyTonk In den frühen 2010er Jahren wurden einige Ideen aus Java (range-based for) wurden von C++ übernommen. Alle Sprachen vermischen sich. Wahrscheinlich sollte ich Kompatibilitätsfunktionen wie Casts im C-Stil und das Makro erwähnen offsetof, aber das sind Details. Die gegenseitige Kompatibilität ist ein zweitrangiges Anliegen, obwohl es berücksichtigt wird. Aber die C-Standardbibliothek wird immer von C ++ unterstützt, also gibt es das … diese Antwort könnte in der Tat erweitert werden.

    – Kartoffelklatsche

    15. Januar 2013 um 14:01 Uhr

  • Ich wage eine Klarstellung: Programmiersprache wird in einem Dokument definiert. In diesem Zusammenhang sind C und C++ zwei verschiedene Programmiersprachen. Laufzeit eingeben und die Übersichtlichkeit geht verloren. Geben Sie ABI ein und C ist das Biest, das unten lebt und sie alle regiert.

    – Chef Gladiator

    1. August 2021 um 10:04 Uhr

Benutzer-Avatar
Leichtigkeitsrennen im Orbit

“C/C++” ist genau null Sprachen. Es existiert nicht.

Andererseits ist C eine Sprache.

C++ ist eine andere Sprache, die C ähnlich ist, aber auch Klassen und hat viele andere Unterschiede.


Um es klar zu sagen, @Zoidberg war genau richtig:

C und C++ sind zwei völlig unterschiedliche Sprachen. C mit Klassen war der Vorgänger von C++, aber der Begriff wird immer noch oft für nicht-modernes C++ verwendet (zB das überall rohe Zeiger verwendet).

Benutzer-Avatar
Hogan

Es ist zweisprachig. C++ „C mit Klassen“ zu nennen, ist wie einen Elefanten ein vierbeiniges Tier zu nennen. Es scheint wahr, bis Sie es mit einer Maus vergleichen.

Es gibt viele Sprachen, die von C abstammen: C++, Java, C#, JavaScript, csh, die Liste geht weiter. Sie unterscheiden sich alle in vielerlei Hinsicht, haben aber eine ähnliche Syntax.

Natürlich ist C von B abgeleitet. Aber das ist eine andere Geschichte (und niemand kümmert sich mehr um B.)

  • So lustig es auch ist, ich glaube nicht, dass es die lehrreichste Antwort ist, zu der Sie kommen könnten.

    – zneak

    15. Januar 2013 um 2:55 Uhr

  • @zneak: Ihr Beitrag zu dieser Frage besteht bisher darin, sich (a) über die Kommentare zu beschweren und (b) sich über die Antworten zu beschweren. Möchtest du eine “lehrreiche Antwort” beitragen?

    – Leichtigkeitsrennen im Orbit

    15. Januar 2013 um 2:55 Uhr

  • @LightnessRacesinOrbit, ich habe keinen Grund, es nach Potatoswatters vollkommen guter Antwort zu tun.

    – zneak

    15. Januar 2013 um 2:56 Uhr


  • (Ich habe nicht einmal den Mauselefanten über meinem Kopf fliegen hören..)

    Benutzer166390

    15. Januar 2013 um 2:58 Uhr


  • @pst – Mouselephant … das klingt für mich nach JavaScript.

    – Hogan

    15. Januar 2013 um 3:03 Uhr

Benutzer-Avatar
KamikazeCZ

Einfache Antwort: zwei Sprachen

Es handelt sich um zwei verschiedene Sprachen, obwohl fast jeder C-Code gültiger (nicht unbedingt guter) C++-Code ist.

C++ wurde zuerst als „C, aber mit Klassen“ betrachtet, aber im Laufe der Zeit unterschied es sich immer mehr und jetzt ist C-Code sehr schlechter C++-Code. Sie können C oder C++ oder beides lernen, aber Sie normalerweise Verwechseln Sie sie nicht (aber Sie können).

C/C++ ist zweisprachig. C ist die eine Sprache und C++ die andere. C++ wird als „besseres“ C angesehen. C ist prozedural, während C++ objektorientiert ist. C++ hat viele Verbesserungen gegenüber C und hat eine ähnliche Syntax wie C.

  • Ich wäre vorsichtig: Ich kann mir vorstellen, dass es viele Leute gibt, die C++ eher für eine Bastardverfälschung von C halten als für ein “besseres C”. Die meisten davon sind wahrscheinlich VB.net-Programmierer, die den Unterschied nicht erkennen können. Ich bin nicht einer von ihnen. 🙂

    – Mac

    15. Januar 2013 um 4:18 Uhr

  • C++ ist keine objektorientierte Sprache. Es unterstützt die objektorientierte Programmierung, aber auch eine Handvoll anderer Paradigmen wie die prozedurale Programmierung und die funktionale Programmierung. Oh, und Sie können OOP auch in C machen, nur dass es ziemlich umständlich ist.

    – Ulrich Eckhardt

    15. Januar 2013 um 6:38 Uhr


  • Ich denke, das ist ein guter Punkt. Ich nenne es immer eine objektorientierte Programmiersprache, weil ich denke, wenn Sie es nicht als OO verwenden, verwenden Sie es falsch. Aber du hast Recht.

    Benutzer1944429

    15. Januar 2013 um 6:45 Uhr

Benutzer-Avatar
didierc

Es sind zwei verschiedene Sprachen. C++ heißt so, weil ein Teil davon aus C stammt und in gewissem Sinne mit C kompatibel ist.

Gemäß Scott Myers’s Effective C++ können wir C++ als eine einheitliche Sprache mit den folgenden 4 Komponenten betrachten:

  1. C-Sprachteil, Blöcke, Anweisungen, Präprozessor usw
  2. Objektorientiertes C++: einschließlich Klasse, Kapselung, Vererbung, Polymorphie usw
  3. Vorlage C++: einschließlich C++-Vorlagen, Metaprogrammierungsmaterial
  4. Die STL.

C++ ist also in gewisser Weise leistungsfähiger als C.

  • Ich wäre vorsichtig: Ich kann mir vorstellen, dass es viele Leute gibt, die C++ eher für eine Bastardverfälschung von C halten als für ein “besseres C”. Die meisten davon sind wahrscheinlich VB.net-Programmierer, die den Unterschied nicht erkennen können. Ich bin nicht einer von ihnen. 🙂

    – Mac

    15. Januar 2013 um 4:18 Uhr

  • C++ ist keine objektorientierte Sprache. Es unterstützt die objektorientierte Programmierung, aber auch eine Handvoll anderer Paradigmen wie die prozedurale Programmierung und die funktionale Programmierung. Oh, und Sie können OOP auch in C machen, nur dass es ziemlich umständlich ist.

    – Ulrich Eckhardt

    15. Januar 2013 um 6:38 Uhr


  • Ich denke, das ist ein guter Punkt. Ich nenne es immer eine objektorientierte Programmiersprache, weil ich denke, wenn Sie es nicht als OO verwenden, verwenden Sie es falsch. Aber du hast recht.

    Benutzer1944429

    15. Januar 2013 um 6:45 Uhr

Benutzer-Avatar
Gemeinschaft

Der Name “C” bezieht sich auf eine Familie verwandter Sprachen, von denen einige als internationale Standards formalisiert sind. Diese beinhalten K&R C, ANSI-C, C99und C11.

Der Name “C++” bezieht sich auf eine Familie verwandter Sprachen, von denen einige als internationale Standards formalisiert sind. Dazu gehören C++98,
C++03,
C++11,
C++14und das spekulierte C++17.

Der Begriff “C/C++” ist von vielen Menschen genutzt um sich informell auf die Schnittmenge von C und C++ zu beziehen, die gewesen ist absichtlich von den Designern von C++ gepflegt.

Der unmittelbare Vorgänger von C++ hieß ursprünglich “C with Classes”. Dies wird in Bjarne Stroustrups 1994 erschienenem Buch “The Design and Evolution of C++” (und auch hier). Der Name wurde schließlich in „C++“ geändert, hauptsächlich aus Höflichkeit gegenüber der C-Community, weil es für die Leute zu verlockend geworden war, „C with Classes“ auf „C“ oder „neues C“ abzukürzen.

Es gibt viele Sprachfeatures in C++, die es nicht in C gibt (das Gegenteil gilt in geringerem Maße). Insbesondere die klassenbasiertes Modellist aufgrund seiner Fähigkeit, implizite Funktionsaufrufe aufzurufen, so leistungsfähig, dass C++ (eher organisch) Programmierstile auf höherer Ebene entwickelt hat, die die typische Verwendung von C++ machen ganz anders als die von C. Die bemerkenswertesten Beispiele dafür sind mit dem Konzept namens verbunden Ressourcenerwerb ist Initialisierungdie in den Standardklassen verkörpert ist
Schnur, Vektorund shared_ptr sowie die Stream-Klassen der Standard-I/O-Bibliothek.

Weitere Hinweise:

  • GCC ermöglicht Ihnen die Angabe welche dieser Sprachvarianten Sie kompilieren möchten (wie andere Compiler, da bin ich mir sicher), mit einigen Einschränkungen.

  • C++98 und C++03 weisen minimale Funktionsunterschiede auf und werden oft als im Wesentlichen dieselbe Sprache behandelt.

  • Die wichtigsten Fragen, die sich mit der gemeinsamen Teilmenge von C und C++ befassen:

    • Welche Auswirkung hat extern “C” in C++-Quellen?
    • Wo ist C keine Teilmenge von C++?

  • Der Begriff „C/C++“ wird von vielen Menschen verwendet, um sich informell auf die Schnittmenge von C und C++ zu beziehen. Meiner Erfahrung nach beziehen sich die meisten Leute, die den Begriff „C/C++“ verwenden, nicht auf die Schnittmenge der beiden Sprachen. In den meisten Fällen ist dies ein Hinweis darauf, dass der Autor die Beziehung zwischen C und C++ nicht versteht und wahrscheinlich nicht in der Lage wäre, die “Schnittmenge” zwischen ihnen zu beschreiben. In diesem Sinne kann es eine nützliche Flagge sein.

    – Keith Thompson

    4. Juni 2015 um 16:07 Uhr

  • @KeithThompson: Vielleicht sind es die Leute, auf die Sie sich beziehen versuchen “auf die Kreuzung verweisen”, auch wenn sie nicht genau wissen, was das ist. Nur weil jemand etwas nicht perfekt definieren kann, heißt das nicht, dass er nicht versuchen kann, darüber zu diskutieren. Ich nehme an, dass “C/C++” in manchen Kontexten verwendet werden könnte, um “entweder C oder C++, aber nicht unbedingt beides” zu bedeuten. In diesem Fall wollen sie wahrscheinlich etwas, das mit einem C++-Compiler funktioniert, aber sie sind in Ordnung, wenn es auch mit einem C-Compiler funktioniert (oder vielleicht sogar umgekehrt).

    – Brent Bradburn

    4. Juni 2015 um 16:36 Uhr

  • Es könnte davon abhängen, wonach sie suchen. Wenn ein Personalvermittler sagt, dass er nach “C/C++”-Programmierern sucht, sucht er wahrscheinlich nach C-Programmierern und/oder C++-Programmierern, nicht (notwendigerweise) nach Programmierern, die in der Lage sind, Programme an der Schnittstelle von C und C++ zu schreiben.

    – Keith Thompson

    4. Juni 2015 um 17:20 Uhr

1381870cookie-checkIst C/C++ eine Sprache oder zwei Sprachen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy