C vs. C ++

C vs. C ++

Dies ist ein objektiver Vergleich der Anwendungen, Verwendung und Sprachmerkmale von C Und C++. Die Ursprünge und die Entwicklung der beiden Programmiersprachen werden ebenfalls diskutiert.

Vergleichstabelle

Unterschiede - Ähnlichkeiten - C gegen C ++ Vergleichstabelle
CC++
  • Die aktuelle Bewertung beträgt 4.01/5
  • 1
  • 2
  • 3
  • 4
  • 5
(412 Bewertungen)
  • Die aktuelle Bewertung beträgt 4.12/5
  • 1
  • 2
  • 3
  • 4
  • 5
(412 Bewertungen)
Entworfen von Dennis Ritchie Bjarne Stroustrup
Müllsammlung Handbuch; Ermöglicht eine bessere Verwaltung des Speichers. Kein GC in der C ++ Standard Library (STD) verfügbar. STD bietet jedoch effiziente und deterministische Möglichkeiten zur Verwaltung von Ressourcen wie Objektbesitz und Referenzzählung.
Beeinflusst von B (BCPL, CPL), Algol 68, Montage C, Simula, ADA 83, Algol 68, Clu, ML
Erschien in 1972 1985
Klassen Verwendet stattdessen Strukturen und verleiht daher mehr Freiheit, interne Designelemente zu verwenden Klasse und Struktur
OOP (objektorientierte Programmierung) Nicht eingebaut; Freiheit, Strukturen einzurichten, um wie Objekte zu handeln. Fehlt die Fähigkeit, die Kapselung zu deklarieren. Eingebaut; Größe und Speicherlayout von Objekten sind deterministisch. Virtuelle Funktionsaufrufe können ohne CRTP ohne vtable durchgeführt werden.
Wichtige Implementierungen GCC, MSVC, Borland C, Watcom C Sammlung von GNU Compiler, Microsoft Visual C ++, Borland C ++ Builder, Intel C ++ Compiler, LLVM/Clang
Disziplin tippen Statisch, schwach Statisch, stark, unsicher, nominativ
Block Kommentare Gremiter /* Und */ /* Und */
Erklärung Terminatoren ; ;
Inline -Kommentare Abgrenzer // //
Beeinflusst awk, csh, c ++, c#, objective-c, bitc, d, gleichzeitlich c, java, javascript, limbo, perl, PHP ADA 95, C#, Java, Php, D, Aikido
Übliche Dateiname -Erweiterungen .C .CC, .CPP, .CXX, .H, .HH, .Hpp
Paradigmen Imperative (prozedurale) System -Implementierungssprache Multi-Paradigma, objektorientiert, generisches, prozedurales, funktionales, meta
Arrays dynamisch Größe NEIN NEIN
Plattformen Fast alles auf dem Planeten; erfordert Neukompilien Fast alles, einschließlich OS-basierter und nicht OS-basierter Plattformen
Geschwindigkeit C -Anwendungen sind schneller zu kompilieren und auszuführen als C ++ - Anwendungen +-5% im Vergleich zu C, wenn Sie wissen, wie man C gut nutzt++. Die Leistung von C ++ - und C -Programmen kann häufig gleich sein, da Compiler für beide Sprachen reif sind.
Ausführungsfluss Oben nach unten Oben nach unten
Programmierung #enthalten #enthalten
Programmierungstyp Kein nationaler String -Typ; oft als eine Reihe von Zeichen deklariert Array, Std :: String
Programmiereinput /Ausgabe scanf für Eingabe; printf für die Ausgabe iOstream, fstream (std :: cin, std :: cout)
Code Kompiliert für native binäre ausführbare Dateien mit einem Compiler wie BCC. Kompiliert zu nativen binären ausführbaren Dateien
Sprachtyp Verfahrensorientierte Sprache Multi-paradigme objektorientierte Sprache
Entwickelt von Dennis Ritchie & Bell Labs Bjarne Stroustrup
Objektorientierte Nicht nativ Ja
Generische Programmierung NEIN Ja
Verfahrensprogrammierung Ja Ja
Funktionelle Programmierung Ja Teilweise
Metaprogrammierung NEIN Ja
Betrachtung NEIN NEIN
Mehrdimensionale Arrays unterstützt Ja Ja
Plattform Jeder, der einen Compiler hat Jeder, der einen Compiler hat

Ursprünge von C und C++

Dennis Ritchie von den Bell Labs entworfen das C, eine Allzweck -Computerprogrammiersprache im Jahr 1972 zur Verwendung mit UNIX, einem Betriebssystem von damals. C wird überwiegend für die Systemprogrammierung von Systemsoftware verwendet, ist aber auch sehr nützlich für die Erstellung allgemeiner Anwendungssoftware. Einige der zur Beschreibung von C verwendeten Adjektiven sind blockstrukturierte, imperative und prozedurale Sprache.

C ++ (ursprünglich "C mit Klassen" bezeichnet und als Überstruktur von C in Computerkreisen bekannt) wurde 1983 in den Bell Labs als Verbesserung von C durch Bjarne Strousstrup entwickelt. Stroustrup, 1979, wurde mit dem Hinzufügen von Klassen, virtuellen Funktionen, Überladungen des Bedieners, mehrerer Vererbung, Vorlagen, Ausnahmebehandlung usw. begonnen. Der C ++ - Programmiersprache C ++ wurde 1998 als ISO/IEC 14882: 1998 ratifiziert und die aktuelle Version ist die 2003 -Version von ISO/IEC 14882: 2003, die die korrigierte Version des C ++ 1998 infaktiert. Der 2005 veröffentlichte "Bibliothek Technische Bericht 1" enthält Einzelheiten zu Erweiterungen in die Standardbibliothek, ohne Teil der Standarversion zu sein. Eine neue Version des Standards (informell bekannt als C ++ 0x) ist in der Entwicklung in der Entwicklung. C ++ ist seit 1990 eine sehr erfolgreiche kommerzielle Programmiersprache. Obwohl C ++ lizenzfrei ist, ist seine Dokumentation nicht frei verfügbar.

Verwendung von C vs. C++

C erwies sich als sehr nützlich für die in der Montagesprache kodierten Anwendungen, die aufgrund seiner Stärken wie einem einfachen Compiler, niedrigeren Zugriffsniveaus, niedrigeren Laufzeitunterstützung und einer effizienten Konstruktionssprache, die mit den Hardwareanweisungen synchronisiert wurde. Ein weiterer Credits ist, dass es ein hoch tragbares (kompatibel mit einer Vielzahl von Betriebssystemen und Plattformen) mit sehr minimalen Quellcodeänderungen ist. Somit hat es Remote -Operationen und Unabhängigkeit von der Hardware aktiviert. C entspricht auch einer Vielzahl von Standards und sorgt dafür, dass es mit allem funktioniert.

C ++ ist als Sprache mit mittlerer Ebene bekannt. Aufgrund der Tatsache, dass das C ++ sowohl aus Sprachmerkmalen auf hoher Ebene als auch aus Sprachfunktionen auf niedriger Ebene umfasst. Einige der zur Beschreibung von C ++ verwendeten Adjektiv.

Stroustrup, während er für seinen pH -Wert programmiert.D These der These, fand heraus, dass die Simula-Sprache auf hohe Stufe hilfreich für eine große Softwareentwicklung aufwies, aber zu langsam für den praktischen Gebrauch war, während die BCPL (Sprache) schnell, aber zu niedrig war und somit für große Softwareentwicklung ungeeignet war. In Bell Labs musste er den Unix -Kernel in Bezug auf verteilte Computing analysieren, was weitere Probleme verursachte, und machte sich vor, C (aufgrund seiner ultra -tragbaren Natur) mit Merkmalen aus der Simula zu verbessern. C ++ wurde 1983 mit zusätzlichen Funktionen wie virtuellen Funktionen, Funktionsname und Operatorüberladung, Referenzen, Konstanten, benutzerkontrolliertem Speicher des freien Ladens, verbesserten Typ-Überprüfungen und Einzellinien-Kommentaren mit zwei Vorwärts-Schrägstrichen erstellt (//) (//). Die CFRONT (kommerzielle Version) wurde 1985 mit der Klasse, der abgeleiteten Klasse, der starken Typ -Überprüfung, der Inline- und Standardargumentationsfunktionen veröffentlicht. 1985 wurde auch die C ++ - Programmiersprache veröffentlicht, ein wichtiger Hinweis auf die Sprache ohne offiziellen Standard. Es folgte die Veröffentlichung des C ++ 2.0 im Jahr 1989 mit Merkmalen wie mehreren Vererbung, abstrakten Klassen, statischen Mitgliedsfunktionen, Const -Mitgliedsfunktionen und geschützten Mitgliedern. Funktionen wie Vorlagen, Ausnahmen, Namespaces, neue Casts und Boolesche Typ wurden nach 1990 hinzugefügt.

Zusammen mit der Sprache entwickelte sich auch die Bibliothek mit mehreren Ergänzungen wie der Stream -E/A -Bibliothek, der Standard -Vorlagenbibliothek usw.

Die ersten Ausgaben des Buches K & R, geschrieben von Dennis Ritchie & Brian Kernighan (Originalname: Die C -Programmiersprache) beschreibt ihre Version von C als K & R C mit vollständigen Spezifikationen, während die späteren Ausgaben die ANSI (American National Standards enthalten Institut) C Standards. Einige der beschriebenen hervorragenden Merkmale sind die Einführung verschiedener Datentypen, die Entfernung mehrerer semantischer Unklarheiten, das Auslassen anderer Funktionserklärungen usw. Auch nach der Einführung des ANSI C war der K & R C aufgrund seiner breiteren Kompatibilität weiterhin die tragbarste Programmiersprache für Programmierer.

K & R-Funktionserklärungen enthielten keine Informationen zu Funktionsargumenten, die zu Überprüfungen des Funktionsparametentyps zur Verfügung stehen, obwohl einige Compiler eine Warnmeldung ausgestellt haben, wenn eine lokale Funktion mit der falschen Anzahl von Argumenten aufgerufen wurde oder wenn mehrere Aufrufe an eine externe Funktion verwendet wurden Verschiedene Anzahl von Argumenten. Tools wie das Lint -Dienstprogramm von UNIX wurden erstellt, um die Konsistenz der Funktionen über mehrere Quelldateien zu überprüfen.

Sprachmerkmale

Eigenschaften von c

Einige der wichtigen Eigenschaften von C sind wie folgt:

  1. Strukturierte Programmieranlagen
  2. Bestätigung der Algol -Traditionen
  3. Kurzschlussbewertung - Verwendung von nur einem Operand, wenn das Ergebnis allein mit ihm bestimmt werden kann
  4. Statische Schreibsystem zur Vermeidung unbeabsichtigter Vorgänge
  5. Wert bestanden Parameter mit Relevanz für den Zeigerwert
  6. Heterogene Datenkombination & Manipulation
  7. Reservierte Schlüsselwörter und Free-Format-Quelltext
  8. Größere Anzahl von zusammengesetzten Operatoren wie += =, ++
  9. Riesige variable Versteckkapazität, obwohl Funktionsdefinitionen nicht zu störbar sind
  10. Charakter - ganzzahlige Verwendung ähnlich wie die Assemblersprache
  11. Niedriger Zugriff auf den Computerspeicher über Maschinenadressen und typisierte Zeiger
  12. Funktionszeiger ermöglichen rudimentäre Formen von Verschlüssen und polymorphe Laufzeit
  13. Zeigerarithmetik definierte Array -Indexierung (sekundärer Begriff)
  14. Standardisierter Prozessor zum Definieren von Makros, einschließlich Quellcode -Dateien und bedingten Kompilierungen
  15. Komplexe Eingangs-/Ausgabe- und mathematische Funktionen mit konsistenter Delegation zu Bibliotheksroutinen
  16. Syntax wie „B“ (C -Vorgänger), jedoch anders als Algol e.G.: … Ersetzt beginnen… Ende && und || ersetzt und & oder welche
  17. Während B verwendet & und | In beiden Bedeutungen unterscheidete C sie syntaktisch von den bit-weisen Operatoren unterscheidet
  18. Ähnlichkeiten zu Forran E.G: Das gleiche Zuordnungsmittel- (Kopieren) und zwei aufeinanderfolgende gleiche Signalabzeichnungen, um die Gleichheit zu testen (verglichen mit Gl.) Oder das gleiche Sign in Basic)

Andere inoffizielle Merkmale, die mit der Zeit hinzugefügt wurden, waren:

  1. Hohlraumfunktionen
  2. Funktionen, die Strukturen oder Gewerkschaftstypen anstelle von Zeigern zurückgeben
  3. Für Strukturdatentypen aktivierte Zuordnungen
  4. Const Qualifier, um ein Objekt schreibgeschützt zu machen
  5. Aufzählte Typen
  6. Kreation des Werkzeugs, um die inhärenten Probleme der Sprache zu vermeiden

Bald wurde C mächtig genug, um den UNIX-Kernel (in einer Versammlungssprache geschrieben) erneut geschrieben zu machen, was ihn zu einem der ersten OS.

Eigenschaften von c++

  1. C ++ ist als statisch typisierte, allgemeine Sprache, die ebenso effizient und tragbar ist wie C
  2. C ++ ist so konzipiert, dass sie mehrere Programmierstile direkt und umfassend unterstützen (prozedurale Programmierung, Datenabstraktion, objektorientierte Programmierung und generische Programmierung)
  3. C ++ ist so konzipiert, dass der Programmierer die Wahl hat, auch wenn der Programmierer dies falsch auswählt
  4. C ++ ist so konzipiert, dass er mit C so kompatibel ist wie möglich und somit einen reibungslosen Übergang von c
  5. C ++ vermeidet Merkmale, die plattformspezifisch oder nicht allgemeiner Zweck sind
  6. C ++ entsteht keinen Overhead für nicht verwendete Funktionen
  7. C ++ ist so konzipiert, dass sie ohne eine ausgefeilte Programmierumgebung funktionieren

Der Polymorphismus, eine der herausragenden Eigenschaften von C ++, ermöglicht esmany Implementierungen mit einer einzelnen Interphase und für Objekte, um nach den Umständen zu handeln. C ++ unterstützt sowohl statische (Kompilierungszeit) als auch dynamische (Laufzeit-) Polymorphismen. Der Kompilierungszeitpolymorphismus erlaubt bestimmte Laufzeitentscheidungen nicht, während der Laufzeitpolymorphismus typischerweise eine Leistungsstrafe verursacht. C ++, obwohl es als Superset von C angesehen wird, gibt es einige Unterschiede, die dazu führen, dass einige gültige C -Codes in C ++ ungültig sind oder sich in C unterschiedlich verhalten++. Probleme wie das C ++ - Definieren neuer Schlüsselwörter, nämlich neue & Klasse, die als Kennungen in C verwendet werden. C- und C ++ - Codes können durch Deklarieren eines C -Code.

Entwicklungen in beiden Sprachen

Mit der Zeit wurde die Standardisierung aufgrund einer großen Anzahl von Erweiterungen und einer zufälligen Bibliothek mit zunehmender Popularität der Sprache und der mangelnden präzisen Implementierung von Compilern nach den Spezifikationen immer wichtiger. Eines der Ziele des C -Standardisierungsprozesses war es, eine Superset von K & R C zu produzieren, die viele der inoffiziellen Merkmale einbezogen hat, die später eingeführt wurden. Das Standardkomitee umfasste jedoch mehrere neue Funktionen wie Funktionsprototypen, Leerzeiger, Unterstützung für internationale Charakter -Sets und -Storaten und einen fähigeren Präfokessor. Die Syntax für Parameterdeklarationen wurde ebenfalls erweitert. Post 1970er Jahre ersetzte C Basic als führende Sprache für die Mikroprozessorprogrammierung und wurde durch die Zusammenarbeit mit den IBM -PCs populär. In der Zwischenzeit begannen Bjarne Stroustrup und andere bei Bell Labs mit der Arbeit am Erstellen des C ++, das C-Konstrukte der objektorientierten Programmiersprache zu C hinzufügte. Darüber hinaus bildete ANSI 1983 ein Komitee namens X3J11, um eine Standardspezifikation von C und 1989 festzustellen, der Standard wurde als ANSI X3 ratifiziert.159-1989 "Programmiersprache C."Dies ist die Version von C, die oft als ANSI C, Standard C oder C89 bezeichnet wird. C90, der 1990 eingeführt wurde. Während sich C ++ rasant entwickelte, blieb C bis 1995 statisch, als die normative Änderung 1 einen neuen Standard schuf, der eine weitere Überarbeitung unterzogen wurde, was zur Veröffentlichung von ISO 9899: 1999 im Jahr 1999 führte. Dieser Standard wird allgemein als "C99" bezeichnet."Es wurde im März 2000 als ANSI -Standard übernommen. Einige der neueren Funktionen werden unten erwähnt:

  • Inline -Funktionen
  • Fähigkeit, Variablen überall zu deklarieren, anstatt nur nach einer anderen Deklaration oder zu Beginn einer zusammengesetzten Aussage
  • Neue Datentypen wie Long Long INT, optionale erweiterte Ganzzahltypen, expliziter boolescher Datentyp und komplexer Typ, um komplexe Zahlen zu bezeichnen
  • Arraylängen können variabel sein
  • Einzeilen-Kommentare beginnen mit // unterstützt
  • Bibliotheksfunktionen wie SNPRINTF
  • Neue Header -Dateien wie STDBOOL.H und Inttypes.H
  • Mathematische Typ-Generen-Mathematik (TGMath.H)
  • Verbesserte Unterstützung für den IEEE -Schwimmpunkt
  • Bezeichnete Initialisierer
  • Zusammengesetzte Literale
  • Unterstützung von variadischen Makros (Makros variabler Arität)

C ++ entwickelt sich weiterentwickelt, um die Anforderungen der Zukunft zu erfüllen. Indikationen legen nahe, dass C ++ weiterhin von seiner Multi-Paradigmen-Natur nutzen wird, und bemerkenswerte Verbesserungen können die native Unterstützung für Threading und Konzepte sein, wodurch die Arbeit mit Templetes erleichtert wird. Um kontrovers diskutiert derzeit das Hinzufügen von Mülleimer. Eine Gruppe namens Boost.org, der den C ++ Standards -Ausschuss für gute Merkmale und Verbesserungen empfiehlt, arbeitet ausgiebig daran, C ++ in seiner aktuellen Form mit erweiterten Funktionen und Metaprogrammierungen zu entwickeln.

Bjarne Stroustrup beschreibt im Design und der Entwicklung von C ++ (1994) einige Regeln, die er für die Gestaltung des C verwendet hat++. Das Wissen der Regeln hilft zu verstehen, warum C ++ die Art und Weise ist, wie es ist. Viel mehr Details finden Sie im Design und der Entwicklung von C++.

Einflüsse

Cs Einfluss kann auf Werke wie awk, csh, c ++, c#, d, objective-c, gleichzeitig C, Bitc, Java und JavaScript, Limbo, Perl, PHP usw. zurückgeführt werden. Einige der wichtigsten Implementierungen von C umfassen Borland C, Watcom C, GCC und MSVC. C ++ hat zu seiner Anerkennung andere Werke wie D, C#, ADA 95, Aikido, Java & PHP beeinflusst.

Kritik von C vs. C++

Trotz seiner Popularität wurde C dafür kritisiert der Sprache.

Als objektorientierte Sprachen populär wurden, war C ++ eine Erweiterung von C, die objektorientierte Funktionen mit C ++ bereitstellte.

C ++ aus C abgeleitet wird, erbelt auch die meisten gegen C geprägten Kritikpunkte. Aber da die Sprache tatsächlich eine Komposition von zwei verschiedenen Sprachen ist, zusammen mit der Ladung großer Programme, macht die Zusammenstellung in Bezug. Wenn dieses Problem durch Deaktivieren einiger Fransencodes versucht wird, vermieden zu werden, wurde es erneut dafür kritisiert, mehrere wichtige Versorgungsunternehmen zu verlieren. Der Schöpfer von C ++ ist auch der Ansicht, dass C ++ als komplexe Sprache gerechtfertigt ist.