Willkommen zu einem spannenden Vergleich zwischen C++ und C#! Als moderne Programmiersprache wurde C# entwickelt, um im modernen Microsoft .NET Framework sowohl für Client- als auch für webbasierte Anwendungen eingesetzt zu werden. Während C++ eine objektorientierte Sprache ist, gilt C# als komponentenorientierte Programmiersprache.
Was ist C++?
C++ ist eine plattformübergreifende Programmiersprache zur Entwicklung von Hochleistungsanwendungen. Bjarne Stroustrup entwickelte C++ als Erweiterung der Programmiersprache C. C++ gibt den Programmierern viel Kontrolle über den Speicher und die Ressourcen des Systems. C++ ist eine der am weitesten verbreiteten Programmiersprachen der Welt. Heutige Betriebssysteme, grafische Benutzeroberflächen und eingebettete Systeme enthalten alle C++. Es ist eine objektorientierte Programmiersprache, die Programmen einen logischen Rahmen bietet und ermöglicht es, Code wiederzuverwenden, was die Entwicklungskosten reduziert. C++ ist eine portable Programmiersprache, mit der Anwendungen für verschiedene Systeme erstellt werden können.
Was ist C#?
C# (ausgesprochen “C sharp”) ist eine allgemeine, moderne und objektorientierte Programmiersprache. Sie wurde von Microsoft im Rahmen des .NET-Programms entwickelt, das von Anders Hejlsberg und seinem Team koordiniert wurde und von der European Computer Manufacturers Association (ECMA) und der International Standards Organization (ISO) (ISO) genehmigt wurde. Die aktuelle Version von C# ist eine der Sprachen für die Common Language Infrastructure.
Geschichte von C++
1983
Der Name der Sprache wurde 1983 von “C with Classes” in C++ geändert. Der ++ Operator in der Programmiersprache C wird verwendet, um eine Variable zu erhöhen, was etwas über Stroustrups Einstellung zur Sprache aussagt. Rund um diese Zeit wurden viele neue Funktionen implementiert, wie zum Beispiel virtuelle Funktionen, Funktionsüberladung, Referenzen mit dem Symbol &, das Schlüsselwort const und einzeilige Kommentare mit doppelten Schrägstrichen.
1985
C++ wurde 1985 als kommerzielles Produkt veröffentlicht. Die Sprache war zu diesem Zeitpunkt noch nicht standardisiert. Geschützte und statische Member sowie Vererbung von mehreren Klassen wurden 1989 zur Sprache hinzugefügt.
1990
Turbo C++ wurde 1990 als kommerzielles Produkt eingeführt. Turbo C++ enthielt eine Reihe neuer Bibliotheken, die einen erheblichen Einfluss auf die Entwicklung von C++ hatten.
1998
Das C++-Standardkomitee veröffentlichte 1998 den ISO/IEC 14882:1998, auch bekannt als C++98, als ersten weltweiten Standard für C++. Auch die Standard Template Library wurde eingeführt, die bereits 1979 konzeptuell entwickelt wurde. Das Komitee reagierte 2003 auf verschiedene Probleme, die mit ihrem Standard von 1998 aufgetreten waren, und überarbeitete ihn entsprechend. Der neue Name der Sprache war C++03.
2011
Der neue C++-Standard (C++11) wurde Mitte 2011 abgeschlossen. Die neuen Funktionen umfassten das Schlüsselwort “auto”, neue Containerklassen, eine verbesserte Unterstützung für Unionen und Array-Initialisierungslisten sowie die Unterstützung von Rahmen. Regex-Unterstützung, eine Randomisierungs-Bibliothek, eine neue C++-Zeitbibliothek, Unterstützung für Atomare, eine Standard-Thread-Bibliothek und eine neue Syntax für For-Schleifen, die eine ähnliche Funktionalität wie For-Each-Schleifen in bestimmten anderen Sprachen bieten.
Geschichte von C
C# 1.0
C# v1.0 wurde zusammen mit dem .NET-Framework 1.0, 1.1 veröffentlicht, sowie Microsoft Visual Studio 2002 und der CLR-Version 1.0.
C# 2.0
C# 2.0 wurde zusammen mit dem .NET Framework 2.0 veröffentlicht, das CLR 2.0 und Microsoft Visual Studio 2005 enthielt.
C# 3.0
C# 3.0 wurde zusammen mit dem .NET Framework 3.0, CLR 2.0 und Microsoft Visual Studio 2008 veröffentlicht.
C# 4.0
C# v4.0 wurde zusammen mit dem .NET-Framework 4.0 veröffentlicht, das die CLR-Version 4.0 sowie Microsoft Visual Studio 2010 enthielt.
C# 5.0
C# v5.0 wurde zusammen mit dem .NET-Framework 4.5 veröffentlicht, das die CLR-Version 4.0 sowie Microsoft Visual Studio 2012 und 2013 enthielt.
C# 6.0
C# v6.0 wurde zusammen mit dem .NET-Framework 4.6 veröffentlicht, das die CLR-Version 4.0 sowie Microsoft Visual Studio 2013 und 2015 enthielt.
C# 7.0
C# v7.0 enthielt das .NET Framework 4.6, 4.6.1 und 4.6.2 sowie Microsoft Visual Studio 2015 und 2017.
C# 8.0
C# v8.0 wurde zusammen mit Microsoft Visual Studio 2019 und dem .NET-Framework 4.8 mit CLR-Version 4.0 veröffentlicht.
Grundprinzipien der C++-Entwicklung
Objekt
Dies ist der grundlegende Baustein der objektorientierten Programmierung. Das heißt, sowohl Daten als auch datenverarbeitende Funktionen sind als Objekt gruppiert.
Klasse
Wenn Sie eine Klasse erstellen, erstellen Sie im Wesentlichen einen Bauplan für ein Objekt. Es beschreibt keine Daten, gibt aber an, wofür der Klassenname steht, d.h. woraus ein Klassenobjekt besteht und welche Operationen damit durchgeführt werden können.
Abstraktion
Datenabstraktion bedeutet, nur wichtige Informationen an die Außenwelt weiterzugeben und dabei Hintergrunddetails zu verbergen. Das bedeutet, die erforderlichen Informationen in einem Programm zu repräsentieren, ohne die Details anzuzeigen.
Kapselung
Kapselung ist der Vorgang, Daten und die Funktionen, die mit ihnen arbeiten, an einem Ort zu platzieren. Bei der Verarbeitung von prozeduralen Sprachen ist nicht immer klar, welche Funktionen auf welche Variablen zugreifen, aber die objektorientierte Programmierung bietet Ihnen einen Rahmen, um Daten und relevante Funktionen in dasselbe Objekt zu integrieren.
Vererbung
Wiederverwendbarkeit von Code ist eine der vorteilhaftesten Eigenschaften der objektorientierten Programmierung. Wie der Name schon sagt, ist Vererbung der Vorgang, eine neue Klasse von einer vorhandenen Klasse, die als Basisklasse bezeichnet wird, zu erstellen. Die neue Klasse wird als abgeleitete Klasse bezeichnet. Dies ist ein wichtiges Konzept in der objektorientierten Programmierung, da es zur Reduzierung des Codeumfangs beiträgt.
Polymorphismus
Polymorphismus bezieht sich auf die Fähigkeit, einen Operator oder eine Funktion auf verschiedene Arten zu verwenden oder den Operatoren oder Funktionen unterschiedliche Bedeutungen oder Funktionen zuzuweisen. Der Begriff “Poly” bedeutet “viele”. Polymorphismus bezieht sich auf eine einzelne Funktion oder einen Operator, der je nach Kontext auf verschiedene Arten verwendet werden kann.
Überladen
Polymorphismus umfasst auch das Konzept der Überladung. Es gilt als überladen, wenn ein vorhandener Operator oder eine Funktion so verändert wird, dass sie mit einem neuen Datentyp funktioniert.
Grundprinzipien der C#-Entwicklung
Single Responsibility Principle (SRP)
Das SRP-Prinzip besagt, dass eine Klasse, wenn sie zwei Gründe hat, sich zu ändern, die Funktionalität in zwei Klassen aufgeteilt werden sollte. Jede Klasse ist dann nur für eine Aufgabe verantwortlich.
Open Closed Principle (OCP)
Das Open Closed Principle in der objektorientierten Programmierung besagt, dass “Software-Entitäten (Klassen, Module, Funktionen usw.) für Erweiterungen geöffnet, jedoch für Änderungen geschlossen sein sollten”, was bedeutet, dass das Verhalten einer Entität erweitert werden kann, ohne den Quellcode zu ändern.
Liskov Substitution Principle (LSP)
Das Liskov Substitution Principle (LSP) ist ein Prinzip der objektorientierten Programmierung, das besagt, dass Funktionen, die Zeiger oder Referenzen auf Basisklassen verwenden, in der Lage sein müssen, Objekte aus abgeleiteten Klassen ohne Kenntnis davon zu verwenden.
Interface Segregation Principle (ISP)
Nach dem Interface Segregation Principle (ISP) sollte kein Client dazu gezwungen werden, Methoden zu verwenden, die er nicht benötigt. ISP ist, wie das High Cohesion Principle von GRASP, eines der fünf SOLID-Prinzipien des objektorientierten Designs.
Dependency Inversion Principle (DIP)
Das Dependency Inversion Principle ist ein Typ von lose gekoppeltem Softwaremodul, das in der objektorientierten Architektur verwendet wird. Nach dem Prinzip sollten sich Module auf hoher Ebene nicht auf Module niedriger Ebene verlassen. Abstraktion sollte in beiden Fällen verwendet werden.
Hauptunterschiede
C++
- C++ ist eine Low-Level-Programmiersprache
- C++ kompiliert zu Maschinencode, während C# zu CLR (Common Language Runtime) kompiliert wird
- C++ ist eine objektorientierte Programmiersprache, die C um objektorientierte Möglichkeiten erweitert
- Die Speicherverwaltung in C++ erfolgt manuell durch den Programmierer
- C++ Code kann auf jeder Plattform ausgeführt werden
- C++ unterstützt Mehrfachvererbung über Klassen
- Der Compiler in C++ führt keine Grenzüberprüfung durch
C
- C# ist eine High-Level-Sprache
- C# wird zu CLR (Common Language Runtime) kompiliert, die von JIT in ASP.NET interpretiert wird
- C# ist eine komponentenorientierte Sprache
- Die Speicherverwaltung in C# erfolgt automatisch durch den Garbage Collector
- C# Code ist nur mit Windows kompatibel
- C# unterstützt keine Mehrfachvererbung über Klassen
- Der Compiler in C# führt Grenzüberprüfungen in Arrays durch
- Zeiger können nur im unsicheren Modus in C# verwendet werden
- C# Code wird nach der Kompilierung in Zwischensprachecode umgewandelt
In diesem Artikel haben wir über C++ und C# sowie ihre jeweilige Geschichte gelernt. Wir haben die Entwicklungsprinzipien der Programmiersprachen C++ und C# sowie die Hauptunterschiede zwischen den beiden diskutiert.
Um mehr über solche Konzepte zu erfahren und zum Experten in Programmiersprachen zu werden, besuchen Sie Simplilearn. Sie können auch Simplilearns Postgraduate Program in Full Stack Web Development erkunden, das in Zusammenarbeit mit Caltech CTME durchgeführt wird. Die Teilnahme an diesem Kurs wird Ihnen helfen, Ihre Karriere als Softwareentwickler voranzutreiben. Mit über 30 gefragten Ressourcen und Fähigkeiten, 20 Lektionsabschluss- und fünf Phasenabschlussprogrammen sowie einem Capstone-Projekt in vier Bereichen werden Sie von den renommiertesten Arbeitgebern wahrgenommen.
Lernen Sie auch die gefragtesten Fähigkeiten kostenlos auf Skill-Up, einer Initiative von Simplilearn.