C, C++, C# was ist der unterschied?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
was ist besser?

Assembler.

was wird am meisten genutzt und von wem?

C++; von Softwareentwicklern aller Branchen und Bereiche.

und mit welchem von den dreien kann man am meisten machen?

C - weil es am nähesten an Assembler ist.

Ok, die Antworten waren jetzt nicht genau das, was du hören wolltest, sind aber faktisch (denke ich) korrekt.

Und jetzt mal ein bisschen Klartext:

"Welches ist die bessere/beste Sprache?" ist eine sehr sinnlose Frage in Bezug auf Computersprachen. Denn Computersprachen sind Werkzeuge. Und genauso wie du nicht pauschal sagen kannst: "Die Zange ist besser als Hammer oder Säge" gibt es keine bessere/beste Programmiersprache. In beiden Fällen hängt es komplett davon ab, was du machen willst.

Aber natürlich macht es Sinn, sich über die Eigenheiten der Sprachen zu informieren (und nicht, wer welche Sprache am häufigsten benutzt). Also:

C ist die "niedrigste" Sprache von den dreien in Bezug auf den Entwicklungsstand. Wenn du noch nicht so viel mit Programmiersprachen zu tun hattest, dann wird es dir vielleicht nichts sagen, aber reines C ist prozedural und nicht objektorientiert. So etwas wie Objekte gibt es im reinen C gar nicht bzw. müsstest du dir selbst reinbasteln. Dafür gibt es für so ziemlich alle gängigen Computersysteme und Betriebssysteme C-Compiler.

Eingesetzt wird C meistens, wenn direkt und unmittelbar Hardware programmiert werden muss. Das geht wirklich runter bis auf die Ebene, dass du mit einem C-Befehl veranlasst, dass auf eine bestimmte Leitung Strom gegeben wird oder nicht. Wenn du also einen Treiber für irgendein Gerät programmieren willst oder auf unterster Ebene auf eine Hardware zugreifen willst (z.B. bei einem Betriebssystem), dann würde ich tatsächlich C empfehlen.

C++ ist die eierlegende Wollmilchsau unter den Programmiersprachen. Damit kannst du alles machen, wirklich alles. Du kannst bis auf Hardwarebene runter gehen und da herum programmieren, du kannst auch hübsche bunte Programmoberflächen oder Spiele basteln, das steht dir alles völlig frei. Aber natürlich ist nicht alles eitel Sonnenschein, auch C++ hat seine Schattenseiten. Wie ich sagte: Du kannst bis auf Betriebssystemebene oder sogar Hardwarebene gehen mit C++ - dummerweise auch unabsichtlich.

Bei C++ musst du extrem sorgfältig arbeiten, sonst handelst du dir Fehler ein, die im Extremfall sogar deinen Rechner abstürzen lassen. Wenn du mir nicht glaubst, denke einfach an die ganzen Games, die rauskommen und gelegentlich mal abstürzen, bis ein Patch rausgegeben wird. Die Mehrheit der Spiele ist in C++ geschrieben. Und wie schon erwähnt kannst du in C++ alles programmieren, was dir so einfällt: Tabellenkalkulationen, Datenbankfrontends, Video- und Audioconverter usw. usf.

C# ist die "bequemste" Sprache von den dreien. Denn zum Ausführen von C#-Programmen ist ein Runtime Environment notwendig. Bestimmt hast du schon von .net gehört. Das ist das Framework, welches von C# verwendet und dessen Runtime benötigt wird. Das Ganze hat den Effekt, dass du dir unter C# keine großartigen Gedanken machen musst, die Ressourcen des Rechners, die du benutzt hast, nach Gebrauch auch wieder sauber freizugeben.

Ein ganz kleines Beispiel: Du programmierst einen Bildbetrachter und öffnest mit dem eine gigantische Bilddatei von 4 GB Größe. Damit der Bildbetrachter diese Datei laden kann, muss er auch 4 GB an Speicher von deinem Rechner anfordern. Ist das geschehen, können die Bilddaten in diesen Speicher geladen werden und du kannst dir dann das Bild anschauen und alles ist gut. Wenn du aber bei C oder C++ beim Schließen des Bildes/Programms nicht explizit sagst, dass du diese 4 GB Speicher nicht mehr benötigst, dann bleiben die reserviert und dein Computer kann sie nicht mehr verwenden, bis du den Rechner neu gestartet hast. Das ist der klassische "memory leak", der jedem C++-Programmierer ein Begriff ist. Unter C# erkennt die Runtime irgendwann: "Oh hoppla, da sind ja noch 4 GB Speicher reserviert und werden gar nicht mehr verwendet. Na, dann kann ich den Speicher ja wieder freigeben."

In C# lässt sich auch eine Menge programmieren: Anwendungen, Spiele usw. Aufgrund der benötigten Runtime kannst du aber keine unmittelbare und direkte Hardwaresteuerung in C# programmieren. Also ein Betriebssystem z.B. bekommst du damit nicht hin.

Ich hoffe, ich konnte ein wenig weiterhelfen.

EragonSaphira17  22.07.2020, 00:17

Wow. Eine wirklich gute Antwort. Hast mir auf jeden Fall geholfen da mal einen Überblick zu bekommen. Danke^^

2
Muellmann275  22.05.2022, 20:37

Eine super Antwort!
Nur eine Kleinigkeit muss ich korrigieren: Die beim Memory-Leak erwähnten 4 GB Speicher bleiben nur solange reserviert, wie das Programm/der Prozess läuft. Mit Beendigung des Programms werden sie wieder frei (jedenfalls bei den gängigen Betriebssystemen). Ein Rechnerneustart ist dafür nicht erforderlich.

0
  • C ist eine imperative, (relativ) maschinennahe Programmiersprache und ist schon sehr alt. C bietet nicht sehr viel an Funktionen und ist deshalb sehr schnell und performant. Der Einsatzbereich liegt vorwiegend in eingebetteten Systemen (wo jede Millisekunde an Performance eine Rolle spielt) und bei hardware-nahen Sachen (der Linux-Kernel ist z.B. in C geschrieben).
  • C++ ist eine Erweiterung von C mit vielen (damals) "neuen" Konzepten (u.a. Objektorientierung mit Klassen, Generics/"Templates", ...), aber immernoch sehr maschinennah, um vieles (Fehlerbehandlung, Überläufe, Puffer, ...) muss man sich also wie in C selbst kümmern. Da es für C++ viele Bibliotheken gibt, kann man C++ auch für Programme mit GUI verwenden (z.B. über die Bibliothek qt), ein Vorteil ist auch hier die gute Performance (aber teils schlechter als C wenn man die Erweiterungen nutzt). Viele GUI-Programme sind in C++ geschrieben.
  • C ist kompatibel zu C++, man kann in einen C++-Compiler auch C-Code reinstecken. (war zumindest früher so)
  • C# ist eine Programmiersprache von Microsoft und greift viele Konzepte von C/C++, allerdings auch anderer Programmiersprachen (Java, Delphi) auf. Im Gegensatz zu C/C++ erleichtern viele Elemente das Programmieren (Garbage-Collection in C# vs. manuelle Speicher-Allokation/-Freigabe in C/C++, Typsicherheit, keine ungesicherten Speicherzugriffe und Überläufe, Auto-Properties, Event-Handling, GUI-Frameworks z.B. Windows Forms oder WPF). Dadurch verschlechtert sich aber auch die Performance gegenüber C/C++. Dementsprechend sind viele GUI-Anwendungen für das Windows-Betriebssystem in C# geschrieben, da sie damit sehr einfach sind.
  • Grundsätzlich ist C# sehr ähnlich zu Java, weshalb beide Sprachen mittlerweile in ihrer Mächtigkeit äquivalent sind, auch wenn es Unterschiede gibt. (Ergänzung: Prinzipiell sind C/C++ genauso mächtig, die Frage ist nur, mit welchem Aufwand.)
  • C# wird in Form von ASP.NET bzw. .NET Core auch bei Webanwendungen oder im Backend von (Web-)Anwendungen eingesetzt, da man solche Anwendungen auch relativ einfach mit Datenbanken konfiguieren kann.
  • C# ist nicht kompatibel zu C/C++. C/C++ kann eigentlich direkt von einer Maschine ausgeführt werden (natürlich mit Kompilieren, etc.), für C# muss eine Runtime installiert sein (z.B. .NET Framework), ähnlich wie bei Java die JVM.

Ich habe mal den Satz gehört "C# ist wie die Mutter, die das Zimmer aufräumt, die Wohnung macht und kocht. Mit C/C++ muss man sich um alles selbst kümmern."

Woher ich das weiß:Berufserfahrung – Software-Entwicklung (Java Enterprise)

C# ist eine Allzweckprogrammiersprache und wird in kann fast überall eingesetzt werden. Sie ist ziemlich komfortabel und gut lesbar. Da sie das .NET Framework verwendet, ist die Sprache an sich ziemlich oberflächlich und geht nicht soo tief.

C/C++ sind auch Sprachen die du ziemlich universell einsetzen kannst. Bspw. sind viele Spiele in C++ geschrieben. Am Bekanntesten sollte die Unreal Engine sein, die auch in C++ geschrieben ist.

Woher ich das weiß:Berufserfahrung – Anwendungsentwickler (vorwiegend .NET)

C/C++ und C# völlig verschiedene Sprachen, die heißen nur fast gleich. Ich denke man kann behaupten, dass C# näher an Java als an C++ ist. Da gibt es auch kein allgemeines "besser oder schlechter".

C und C++ sind hingegen ähnlich. C++ ist nämlich sozusagen eine Erweiterung von C. Jedes C-Program ist auch ein gültiges C++ Programm.

Woher ich das weiß:Studium / Ausbildung – Informatikstudium
J0T4T4  31.01.2020, 11:49

Ich glaube man hat mich hier mal belehrt, dass der letzte Satz nicht mehr zutrifft. Zum einen ist C ein wenig "fahrlässiger" als C++ und zum anderen haben sich die Standards ebenfalls etwas auseinander entwickelt.

Ich lassemich aber gerne wieder vom Gegenteil belehren ;)

1
triopasi  31.01.2020, 11:53
@J0T4T4

Also so weit ich weiß kannt man fast jeden C-Code auch mit dem C++-Compiler kombinieren. "Fast jeden" weil es wohl eine selten genutzte Kleinigkeit gibt die nicht rückwärtskompatibel ist. Also sollte es in 99.9% der Fälle klappen.

0
triopasi  31.01.2020, 12:16
@KarlRanseierIII

Krass, mehr Unterschiede als gedacht. Aber dennoch sehr feine und wohl nicht so häufige Unterschiede.

1