it-swarm-eu.dev

Welche Rolle spielt C ++ heute?

Derzeit bin ich IT-Student und frage mich, was in C++ heute noch wichtig ist. Wofür wird es verwendet? Ich habe einen C++ - Grundkurs an meiner Universität abgeschlossen, kann mir aber nicht vorstellen, wo ich mein Wissen einsetzen kann und in welche Richtung ich C++ lernen soll.

Mit anderen Worten, was soll ich lernen, um ein erfolgreicher C++ - Programmierer zu werden?

Momentan lerne ich Java, nur weil ich nicht klar sehe, in welchem ​​Bereich C++ heute nützlich sein könnte, aber ich weiß genau, welche Art von Arbeit ich als Javamachen werde. _ Programmierer. Aber ich hoffe immer noch, dass C++ nicht tot ist.

41
hades

Die Killer-Funktion von C++ ist bereichsgebundenes Ressourcenmanagement, SBRM (besser bekannt als " RAII "). Es ist die industrielle Programmiersprache nur, die auf diesem Konzept basiert. In C++ sind die Lebenszeiten aller Objekte genau bekannt, und (gut geschriebene) C++ - Programme garantieren, dass Ressourcen vollständig deterministisch erfasst und freigegeben werden. Im Vergleich dazu bieten durch Müll gesammelte oder anderweitig verwaltete Sprachen keine derartigen Garantien. Tatsächlich können Objekte in diesen Sprachen nach dem Ende ihres Lebens bestehen bleiben.

Aus diesem Grund wird C++ in den Bereichen Finanzen, Videospiele, Hochleistungs-Embedded- und Echtzeitsysteme, Transportwesen, Fertigung und anderen Branchen eingesetzt, in denen Determinismus und Präzision wichtig sind. Es gibt keine Alternativen.

Zugegeben, es wurde für viel mehr Aufgaben als diese verwendet, und diese Aufgaben gehen für C # und Python und andere besser geeignete Sprachen) verloren, aber das hat keinen Einfluss auf seine Kernnische.

57
Cubbi

Es gibt einige Märkte für C und C++ (nach meinem begrenzten Verständnis)

  1. Vorhandener Code. C und C++ haben einige der größten vorhandenen Codebasen. Code dieser Größe kann nicht einfach weggeworfen werden, nur weil die "nächste heiße neue Sprache" aufgetaucht ist. C-Bindungen sind auf den meisten Plattformen so ziemlich der Standard für die Interaktion zwischen Sprachen. Daher ist es hilfreich, Wrapper-Bibliotheken in C oder C++ (zumindest) erstellen zu können.
  2. Hochleistungsanwendungen (z. B. Hochfrequenzfinanzierung). C und C++ erzielen immer noch eine bessere Gesamtleistung als die meisten anderen Programmiersprachen. Am wichtigsten ist, dass in C++ häufig Abstraktionen mit Nur-Compiler-Elementen wie Vorlagen erstellt werden, wodurch die Berechnung von der Laufzeit zur Kompilierungszeit verschoben wird (wodurch Ihre gesamte App schneller wird).
  3. (Ähnlich wie 2) Anwendungen mit geringer Latenz. Sprachen, die z.B. Die CLR oder die JVM kann je nach Anwendung oft fast so schnell wie C++ sein, aber die CLR oder JVM muss noch selbst in den Speicher geladen werden, bevor Ihr Programm ausgeführt werden kann. Wenn Sie harte Startanforderungen haben, ist dies wichtig. EDIT FROM COMMENT: In diesem Fall sind die Anforderungen an die harte Latenz jeder Beschreibung hier zu beachten. Sprachen, die auf virtuellen Maschinen ausgeführt werden, bieten selten harte Zeitlimits, da z. Garbage Collection ist kein deterministischer Prozess.
  4. Eingebettete Systeme. Einige eingebettete Systeme verfügen über die Hardware, um z. die JVM (Googles Android (Okay, es ist nicht wirklich die JVM, aber es ist nah dran), RIMs Blackberry) oder die CLR (Windows Phone), aber die meisten eingebetteten Systeme haben nicht die Macht dazu Führen Sie Sprachen aus, die mehr Laufzeitunterstützung erfordern als für C oder C++ (was so gut wie keine Laufzeitunterstützung bedeutet).
  5. Anwendungen mit eingeschränkter Bereitstellung. Manchmal ist die Installation der JVM oder CLR ein gewaltiger Overkill, wenn Ihr gesamtes Programm nur wenige hundert KB umfasst. (ZB müssen die meisten Programme, an denen ich arbeite als einzelne .EXE - Datei ohne Installationsprogramm oder ähnliches bereitgestellt werden. dafür gibt es keine Alternativen)
40
Billy ONeal

C++ ist immer noch sehr nützlich und keineswegs tot. Wenn Sie einen ernsthaften Vergleich zwischen verschiedenen Programmiersprachen lesen möchten, lesen Sie das Papier Ein empirischer Vergleich von C, C++, Java, Perl, Python, Rexx und Tcl . Es ist nicht das aktuellste, aber ich glaube, dass die meisten Dinge noch gelten.

3
sakisk