C++ist neuer als C, aber das ist ein bisschen irrelevant. Sie sind verschiedene Sprachen.
Mat
6
Sie sollten dies wahrscheinlich bei StackOverflow oder Programmierern nachfragen (wo das Thema tatsächlich bereits gut behandelt wurde ).
rozcietrzewiacz
4
@Mat Nun, es ist nicht ganz richtig, da C ++ eine Obermenge von C ist. Sie können in C programmieren und es mit einem C ++ - Compiler kompilieren. Es wird wie erwartet kompiliert und funktioniert.
Es gab viele Diskussionen darüber. Der Grund ist hauptsächlich ein philosophischer. C wurde als einfache Sprache für die Systementwicklung erfunden (weniger für die Anwendungsentwicklung). Es gibt viele Argumente für die Verwendung von C ++, aber es gibt ungefähr so viele für nicht mit C ++ und dem Festhalten an C.
Am Ende ist es ein historisches Problem. Die meisten Anwendungen sind in C geschrieben, da die meisten Kernel-Anwendungen in C geschrieben sind. Seitdem die meisten Anwendungen in C geschrieben wurden, werden in der Regel die Originalsprache verwendet.
An dieser Stelle könnte jemand fragen: "OK, warum ist der Kernel in C geschrieben und nicht nach C ++ portiert?" . Dies wurde vor einiger Zeit auf Kerneltrap diskutiert . Eine nette Erklärung, die aus diesem Thread zitiert werden kann, ist eine Antwort von yoshi314 (direkt zitierend):
Das liegt daran, dass fast jede C ++ - App eine separate C ++ - Standardbibliothek benötigt, um zu funktionieren. Sie müssten es also auf den Kernel portieren und überall einen zusätzlichen Overhead erwarten.
c ++ ist eine komplexere Sprache und das bedeutet, dass der Compiler komplexeren Code daraus erstellt. Aus diesem Grund ist es in c einfacher, festzustellen, dass ein Problem auf einen Compiler-Fehler und nicht auf einen Codefehler zurückzuführen ist.
Auch die Sprache C ist mehr Barebone und es ist einfacher, der Assembly-Darstellung zu folgen, die oft leicht vorherzusagen ist.
c ++ ist vielseitiger, aber c eignet sich eher für Low-Level- oder Embedded-Inhalte.
Andererseits sind "die meisten Linux-Programme" ziemlich irreführend. Schauen Sie sich grafische Anwendungen an. Insbesondere in GUI-Umgebungen unter Linux gewinnt Python immer mehr an Bedeutung. Ungefähr dasselbe passiert mit Windows und .NET.
Darüber hinaus verfügt das C über eine stabile ABI und kann problemlos über das native FFI in andere Sprachen eingebunden werden, während C ++ keine von Menschen lesbare ABI aufweist und g ++ Änderungen an der ABI aufweist. Daher wurden die Bibliotheken eher in C als in C ++ geschrieben. Da Sie eine Sprache im Projekt haben möchten, wurden die Programme mit der Bibliothek gebündelt. (Zumindest war das eine Geschichte mit Gnome).
Maciej Piechotka
@MaciejPiechotka All dies ist wahr und es ist eine nette Diskussion, aber c hat kein definiertes ABI , außer dass es oft einen "offensichtlichen" Weg gibt, die Dinge auf jeder Plattform zu bearbeiten. Danach folgt er dem Anführer.
dmckee
@dmckee: Ich habe nicht angegeben, dass es standardisiert ist, aber die C-API auf jeder Plattform folgt bestimmten einfachen Regeln (einschließlich keiner oder minimaler Mangelung), die sich selten ändern - was es für den Zweck nützlich macht, auch wenn sie nicht zu 100% korrekt sind.
Maciej Piechotka
2
Heutzutage können Sie auch berücksichtigen, dass ... * alles, was Sie in C tun können, Sie auch in C ++ auf die gleiche Weise tun können, denken Sie auch an "extern C" ... * der Compiler wird keinen komplexeren Code erstellen, wenn Sie schreiben keinen komplexeren Code ... * Sie können dasselbe Barebone-Zeug in C ++ schreiben ... * Sie können C ++ - Bibliotheken von C aus verknüpfen und verwenden. Am Ende ist es ein ziemlich historisches Problem.
Zrin
7
Nach dem Lesen der folgenden E-Mail von Linus Torvalds, dem Schöpfer von Linux. Ich kann nicht anders als zu denken, dass die Antwort oben falsch ist. Er scheint zu denken , dass C ++ Programmierer sind nicht gut Systeme Programmierer. Und dass die zusätzlichen Funktionen in C ++ langfristig häufig mehr Probleme verursachen als die kurzfristigen Vorteile. Man kann ihm zwar nicht zustimmen, aber es ist schwierig, den Einfluss, den er auf das Linux-Betriebssystem hatte, zu übertreiben.
C++
ist neuer alsC
, aber das ist ein bisschen irrelevant. Sie sind verschiedene Sprachen.Antworten:
Es gab viele Diskussionen darüber. Der Grund ist hauptsächlich ein philosophischer. C wurde als einfache Sprache für die Systementwicklung erfunden (weniger für die Anwendungsentwicklung). Es gibt viele Argumente für die Verwendung von C ++, aber es gibt ungefähr so viele für nicht mit C ++ und dem Festhalten an C.
Am Ende ist es ein historisches Problem. Die meisten Anwendungen sind in C geschrieben, da die meisten Kernel-Anwendungen in C geschrieben sind. Seitdem die meisten Anwendungen in C geschrieben wurden, werden in der Regel die Originalsprache verwendet.
An dieser Stelle könnte jemand fragen: "OK, warum ist der Kernel in C geschrieben und nicht nach C ++ portiert?" . Dies wurde vor einiger Zeit auf Kerneltrap diskutiert . Eine nette Erklärung, die aus diesem Thread zitiert werden kann, ist eine Antwort von yoshi314 (direkt zitierend):
Andererseits sind "die meisten Linux-Programme" ziemlich irreführend. Schauen Sie sich grafische Anwendungen an. Insbesondere in GUI-Umgebungen unter Linux gewinnt Python immer mehr an Bedeutung. Ungefähr dasselbe passiert mit Windows und .NET.
quelle
Nach dem Lesen der folgenden E-Mail von Linus Torvalds, dem Schöpfer von Linux. Ich kann nicht anders als zu denken, dass die Antwort oben falsch ist. Er scheint zu denken , dass C ++ Programmierer sind nicht gut Systeme Programmierer. Und dass die zusätzlichen Funktionen in C ++ langfristig häufig mehr Probleme verursachen als die kurzfristigen Vorteile. Man kann ihm zwar nicht zustimmen, aber es ist schwierig, den Einfluss, den er auf das Linux-Betriebssystem hatte, zu übertreiben.
http://harmful.cat-v.org/software/c++/linus
quelle