Gibt es keine Sprache, die C++ ersetzen kann?
die Frage lässt eine Abneigung vermuten…das ignoriere ich mal.
Ersetzen könnte ich auf zwei Arten auffassen:
1. kann C++ in einem bestimmten Umfeld/Projekt/usw. ersetzt werden, d.h. es geht darum bestimmte Eigenschaften, die gebraucht werden zu ersetzen.
2. kann eine andere Sprache C++ mit allen ihren Eigenschaften ersetzen, was letztlich bedeutet, dass die Ersetzung auf allen möglichen Gebieten möglich sein soll, die andere Sprache muss dazu eine Obermenge der Eigenschaften von C++ bieten (oder wenigsten gleich)
Was unterscheidet C++ von anderen Sprachen? oder was sind besondere Eigenschaften?
Ich denke, die Haupteigenschaft ist die Eignung zur Systemprogrammierung, manche sagen bare metal, also so viel wie nah an der nackten Hardware.
Das hat vor allem mit dem Zugriff auf die Hardware zu tun (Speicheradressen, Ports, auch Maschinenbefehle wie Interrupt-Steuerung usw.).
Da C++-Compiler normalerweise Assemblerbefehle einbinden können, ist dies in weitem Umfang möglich, sogar mit exotischen CPU-Eigenschaften.
Dies bieten ganz wenige Sprachen.
Eine Compilersprache ist prinzipiell notwendig.
Ein Nachteil von C++ (z.B. gegenüber C) ist, dass bei manchen Konstrukten kaum noch klar ist, was für ein Maschinencode am Ende herauskommt.
Deswegen benutzen viele Leute immer noch C, wenn um Systemprogrammierung oder den Embedded-Bereich geht.
Aber es ist auch immer möglich, sich in C++ auf C-Ebene zu bewegen, also die objektorientierten Konstrukte nicht zu verwenden, wenn es nötig ist und trotzdem höhere Konstrukte zu verwenden, wo es etwas bringt.
Als Antifeature bzgl. Berechenbarkeit (die man bei Systemprogrammierung braucht, stabiles Timing) wirkt normalerweise Garbage-Collection. Sprachen die GC verwenden (bzw. wo man sie [bereichsweise] nicht abschalten kann), fallen also normalerweise aus.
Beispiel: Go.
Bei Systemprogrammierung ist zudem die Geschwindigkeit wichtig. In C++ ist viele auf Optimierung durch den Compiler ausgerichtet, z.B. Templates. Templates (oder Generics) verwenden auch andere Sprachen, aber bei C++ wird üblicherweise für jede Template-Variante (Typ usw.) ein eigener Code-Teil erzeugt, der für die jeweilige Variante optimiert wird. Dagegen verwenden andere Sprachen oft mehr Indirektion und werden dadurch gegenüber normalem Code langsamer. Aber Compiler-Schalter können hier wie da Wunder bewirken, das ist also eher eine Präferenz. Wichtig ist hier eher, dass C++ immer und überall auf Geschwindigkeit getrimmt wird und dafür auch manches opfert.
Zur Systemprogrammierung gibt es durchaus auch andere Sprachen, die aber bisher nie einen Stand erreicht haben, um mit der Vielfalt von C++ und vor allem auch der verfügbaren Libraries konkurrieren zu können.
Eines der besseren Beispiele wäre die Sprache "D".
Bei den neueren Ansätzen wäre Rust recht vielversprechend. Rust wird z.B. demnächst auch im Linux-Kernel Einzug halten, was C++ immer verwehrt geblieben ist.
Die Frage, ob eine neue Sprache C++ komplett ersetzen kann, ist schwer zu beantworten.
C++ ist eine lange Zeit (10 Jahre oder so) auf einem Stand stehen geblieben, was einige Anstrengungen bzgl. anderer Sprachen als Ablösung in Gang gesetzt hat.
Aber etwa ab 2011 (oder besser C++11) hat C++ wieder langsam Fahrt aufgenommen und ab C++14 oder 17 kam es so richtig in Schwung.
Jede neue Sprache die C++ komplett ersetzen will, muss also nicht nur das Vorhandene aufholen, sondern sich zusätzlich schnell genug weiterentwickeln, um auch die kommenden Eigenschaften zu ersetzen. Das ist angesichts der Manpower hinter C++ zumindest schwierig.
Trotzdem könnte es irgendwann einen Kipppunkt geben, an dem sich mehr Manpower zu dieser neuen Sprache hinwendet und dann kann es schnell gehen.
Man denke an Python, das mit dem Laufe der Zeit Perl ersetzt hat (wobei Perl deswegen nicht tot ist).
Bei der Gesamtersetzung ist Rust vielleicht der aktuell stärkste Kandidat.
Allerdings gibt es auch gleich neue Konkurrenten, die sich die Manpower der "Erneuerungswilligen" dann teilen müssen. Z.B. wird gerade Carbon als neuer "neuer Nachfolger" gehandelt.
Es wird vermutlich auch von Mammutprojekten abhängen, ob sich so etwas durchsetzt.
Das ist ein Spiel zwischen "wovon hört man?" bis "was hat man schon mal benutzt?" und "was für Module/Libraries brauche ich?".