Wofür wird C++ heute noch eingesetzt?



  • Hi,

    wofür wird C++ heute noch eingesetzt? Ist es nicht in einer unbequemen Position zwischen C auf der einen und Sprachen wie C# oder Java auf der anderen Seite? Treiber und Betriebssysteme werden größtenteils in C programmiert. Das meiste Embedded auch. Windows Anwendungen und dergleichen werden in .NET/C# oder Java entwickelt. Wofür also noch C++ außer vielleicht für Computerspiele, wo ein managed Garbage Collector manchmal stört. Aber sonst gibt es doch kaum Gründe, die heutzutage noch für C++ sprechen, oder?



  • Jakob70 schrieb:

    Windows Anwendungen und dergleichen werden in .NET/C# oder Java entwickelt.

    Die Frage wurde hier sicher schon paar tausend mal gestellt. Vor allem kleinere Programme und Individualsoftware wird in C# und Java geschrieben. Fast alle großen und bekannten Programme sind in C++ geschrieben. Browser, Office, Videobearbeitung, Bildbearbeitung, CAD, 3D Software usw.



  • Mechanics schrieb:

    Fast alle großen und bekannten Programme sind in C++ geschrieben. Browser, Office, Videobearbeitung, Bildbearbeitung, CAD, 3D Software usw.

    Allerdings hat das historische Gründe, das sind nämlich alles gewachsene Projekte.
    Ich finde als Argument kann man das nicht gelten lassen, denn
    ich denke der TS wollte wissen, für welche neuen SW Projekte man heute C++ einsetzen würde.

    Wir haben ja jetzt Rust, D, Go und viele weitere Sprachen, die für die Systemprogrammierung und vergleichbare Großprojekte geeignet sind und wären.

    Google nutzt z.B. Go.
    Facebook D.
    Mozilla Rust.
    Warum nutzen die also nicht C++?



  • Aus meiner Erfahrung heraus meine ich, dass C#/VB.NET und auch häufig Java vor allem im Business-Bereich eingesetzt werden, weil dies die Entwicklungszeiten schlank hält.

    Für Realtime-Anwendungen kommt nach wie vor C++ zum unverzichtbaren Einsatz und es ist sogar erst recht wieder stark im kommen, seit Modern C++. Microsoft selbst schlägt ja den Weg zurück zu C++ vor.

    Auch Personal-Recruiter sehen das mittlerweile so, da wird schon so langsam vorsichtig abgeklopft ob man sich mit dieser Thematik auseinandergesetzt hat.

    Es ist m.E. heute besser über den Tellerrand zu schauen und von allem etwas anbieten zu können. Vor allem bei Java sehe ich gerade beruflich eine starke Nachfrage (auch wenn ich persönlich Java gar net mag).

    Das .NET-Framework wurde/wird jetzt ja Open-Source und MS setzt wieder mehr auf C++. Das wird für alle, die beruflich im MS-Umfeld entwickeln bald starke Auswirkungen haben, glaube ich.

    In Vorstellungsgesprächen kann man bei den Recruitern jedenfalls meiner Erfahrung nach mit der Erwähnung von C/C++ schon jetzt deutlich mehr punkten als wie mit .NET (um Missverständnisse auszuschließen: ich finde das .NET-Framework genial, gebe hier nur das wieder was ich so tgl. erlebe!).



  • Ich verstehe immer nicht, was diese Threads sollen.

    C++ ist eine systemnahe Programmiersprache, sie wird vorrangig für Anwendungen genutzt, die keine Zeit/Energie/Speicher zu verschwenden haben oder sehr systemnah sein müssen.

    C++ wird solange genutzt, bis es einen Nachfolger gibt, der es in seinem Bereichen ablösen kann und mehr Vorteile liefert.

    Mehr ist dazu einfach nicht zu sagen.



  • -portierbarkeit
    ich denke es wird auch eingesetzt wenn portierbarkeit wichtig ist, da die software oder auch nur libs von kleinen 8bit chips (z.b. ATMega8), ueber mainstream cpus(handies,tablets,desktops,laptops) bis HPC (NVidia Titan,Intel XeonPhi) ueberall laeuft und auch fast jedes OS sie unterstuetzt.

    -zukunftssicherheit
    Microsoft hatte eine zeitlang auf C# gesetzt (z.b. XBox XNA, Windows Phone 7) und von vielen entwickler deswegen eine absage bekommen. sterben lassen koennen sie es nicht, weil soviele firmen sich drauf verliessen und MS verklagen wuerden, deswegen wird es jetzt "Community driven" sein. ich denke diese zukunftsunsicherheit ist es auch was viele neue sprachen fuer firmen riskant machen. sprachen sterben, entwickler sterben, software lebt unbekannt lange und wer weiss ob es in 10jahren C#, Rust, GO, Java etc. gibt. Das kann natuerlich niemand bei c++ garantieren, aber wenn ich auf etwas setzen sollte, waere es auf keinen fall D, E, F, Go, Rust,...

    -qualitaet
    da c++ als aufwendiger zu meistern gilt, hat es zwar (beim managern) den nachteil als kostspieliger zu gelten als higher level sprachen (sagt nicht ihr habt nicht "koennen wir da nicht einen junior von der uni einstellen der das in java/c# mal eben programmiert, es must ja nicht x y z koennen/haben"). aber zugleich, wenn etwas wirklich gut werden soll und geld weniger eine rolle spielt, ist c++ gefragt, selbst wenn es nicht wirklich einen vorteil bringt. Das ist so aenlich wie manche meinen ihre software in assembler schreiben zu muessen damit sie schneller ist, und mit ihrer 0 erfahrung c++ compiler in -O0 schlagen. aber der ruf ist nunmal da und deswegen werden dann irgendwelche UI intensiven applications in c++ geschrieben. Ich denke, da neue sprachen eher von juengeren und c++ eher von alten hasen genutzt wird, ist dein eindruck tendenziel richtig, was natuerlich unfair ist den schlechten c++ und herausragenden c#/java... codern gegenueber.

    -flexibilitaet
    wenn es nicht gerade politisch getrieben ist, dann bietet eigentlich fast jeder eine c++ schnittstelle fuer ihre APIs. es werden natuerlich wrapper etc. fuer irgendwann fuer andere sprachen entwickelt, aber oft gibt es den besten support fuer c++. gerade die alternativen sprachen selbst haben oft von haus aus keinen support fuer interoperability mit mehr als sich selbst und c++. (z.b. java <-> c#, python, lua) und support fuer latest latest sprach features gibt es oft auch erst in den c++ basierenden libs (z.B. neuste ECMAScript features).

    -userbase
    neue entwickler einzustellen ist oft nicht einfach. wenn man einen senior oder principal sucht der 10jahre erfahrung in seinem bereich hat und c++ kann und gut ist, dann kann man finden, bei java, c# etc. wird es eng.
    Auch spezialisten (damit meine ich die hoch bezahlten leute, nicht sowas wie C#-UI 'specialist') findet man meistens mit c++ erfahrung. Auch leute aus forschung z.B. unis die spezialisiert sind in z.B. kompressionen, datenbank optimierungen,network traffic, AI, computer vision, ... sind mittlerweile meistens c++ coder (frueher waren das erstaunlicherweise oft pascal menschen). java/c# wird zwar oft als einstieg gelehrt, aber irgendwann arbeiten die doktoranten dann doch mit c++.
    Der Grund weshalb z.b. 3D engines oft 'verschenkt' werden an non-profit leute, ist nicht wirklich so sehr der wille zur wohltat, sondern um eine 'hire base' zu haben, denn die beste sprache/software nutzt nichts wenn firmen niemanden einstellen koennen der damit umgeht.
    deswegen ist aus firmensicht oft c++ besser. aus entwicklersicht ist es natuerlich job sichernd wenn man eine software entwickelt die pearl, make, python, java und c++ koppelt. 🤡

    ich denke wir entwickler verfallen sehr gerne in die schiene lieber etwas from scratch neu und "besser" zu schreiben, statt bestehende dinge zu maintainen, zu fixen und zu verbessern, obwohl wir wissen dass es quasi ein "antipattern" ist. deswegen entwickeln wir gerne gleich eine neue sprache, oft macht sie eine sache "besser", limitiert aber an 100anderen stellen.

    Ich denke c++ alleine waere fuer alle ein vorteil. Juniors wuerden nicht so sehr als code aeffchen angesehen (wie bei anderen sprachen), niemand muesste non-programmern immer erklaeren weshalb der buz um eine neue sprache nicht die welt retten wird, alle platformen waeren fuer alle nutzbar, da der focus von allen sich konzentrieren wuerde, darf man bessere compiler, mehr libs, etc. erwarten.



  • rapso schrieb:

    ich denke diese zukunftsunsicherheit ist es auch was viele neue sprachen fuer firmen riskant machen. sprachen sterben, entwickler sterben, software lebt unbekannt lange und wer weiss ob es in 10jahren C#, Rust, GO, Java etc. gibt. Das kann natuerlich niemand bei c++ garantieren, aber wenn ich auf etwas setzen sollte, waere es auf keinen fall D, E, F, Go, Rust,...

    Das ist ein 0 Argument.

    Beweis:

    Turbo Pascal und Borland sind tot, aber FreePascal lebt und wer will, der kriegt damit seine Software auch compiliert. Auch für neue Rechner.

    Daraus folgt:

    Sobald eine Sprache von der Community weitergepflegt wird und es einen freien Compiler gibt, wird sie nicht aussterben.

    Ich denke c++ alleine waere fuer alle ein vorteil.

    Jede Sprache hat ihre Vor- und Nachteile und Entwicklungszeit und Geld sind begrenzte Ressourcen.

    Wenn es mit Sprache XY schneller geht, dann entwickelt man sicherlich nicht in C++, es sei denn es gibt wirklich triftige Gründe, die für C++ sprechen.



  • Ich glaube, dass in C++ nur noch eine handvoll großer Programme geschrieben werden(OS-Teile, aufwändige Spiele, 3D-Software, VMs etc). Wie lange noch wird man sehen. Falls Rust erfolgreich ist, dann ist das aber auch über kurz oder lang Geschichte.

    Die meiste Software wird in anderen Sprachen geschrieben, wie Java, C#, PHP, Javascript, Python, Obj-C usw.. PHP-Software z.B. nutzen wir heute so oft wie C++-Programme, siehe dieses Forum hier.

    C++ wird nur noch eingesetzt wo es unbedingt nötig ist, aber dies wird nur solange funktionieren, solange es keine Konkurrenz dafür gibt.

    Wenn man sich in diesem Forum hier aufhält, dann ist das immer wie eine Zeitreise zu den ewig Gestrigen, was sich schon in der Forensoftware wieder spiegelt. Von Jahr zu Jahr ist hier aber auch immer weniger los. C++ wird immer mehr angeknappert und spielt bei vielen Entwicklern überhaupt keine Rolle mehr im Alltag.

    Wenn ich mir Fachzeitschriften anschauen, dann spiegelt sich die Nische, in der C++ noch existiert, auch dort wieder. Man findet kaum was zu C++ in den Fach-Zeitschriften, das ist auch immer ein guter Spiegel. So sehr RedMonk und Tiobe-Index auch schlecht sein mögen, auch hier ist ein Trend weg von C++ zu erkennen. Alles zusammen glaube ich nicht, dass C++ je von diesem langsamen Vergrauen noch zu retten ist.

    Auch wenn die Sicherheits-Löcher in C++ immer wieder geflickt werden, so sind sie immer noch da. Das kann man sich in Zeiten von NSA-Skandal einfach nicht mehr lange leisten. Dem Programmierer allein alle Sicherheit aufzubürden ist grob fahrlässig.

    Wenn man die Wahl hat, dann meidet man C++.



  • Ich bin auch der Meinung, man sollte die Sprache nehmen, die für den Einsatzzweck am besten geeignet ist. Ich glaube aber nicht, dass deswegen C++ aussterben wird.

    Ich halte des meist sehr einfach, bei Oberflächen Programmierung wird zu C# mit WPF gegriffen, sobald es aber um Dienste geht die auch mal länger als ein paar Stunden laufen dann wird C++ genommen.

    Das letzte Projekt mit C++ Dienst wurde vor einem Jahr angefangen, also auch nichts historisch gewachsenes.

    Und ja ich weis C# geht auch für Dienste, hatte dabei aber schon genug Schwierigkeiten.

    Mfg Marco

    PS: gehöre nicht zu den ewigen gestrigen.



  • Dass sich Microsoft eine "Rückkehr" zu C++ wünscht, denke ich nicht. Das ist ein Gerücht, was damals im Zuge der Windows 8/Metro Präsentation entstanden ist und selbst wenn die Windows 8/Metro Leute bei MS diese Schiene vertreten sollten, hat ihr enormer Miserfolg ihnen sicherlich den Wind aus den Segeln genommen. Die Wichtigkeit des .NET Frameworks und C# nehmen in Windows doch von Version zu Version eher zu.

    Natürlich hat man in C++ feinere Kontrolle über Speicher und Ressourcen, aber das spielt ja bei den meisten der Anwendungen keine Rolle, insbesondere bei all den Nachteilen die man mit C++ dafür auch in Kauf nehmen muss. Ausführungsgeschwindigkeit ist schon lange kein Argument mehr, weil .NET und Java genauso schnell sind. Und so eine richtig tragende Rolle im OS und Embedded Bereich, wie manch einer einem gerne glauben machen will, spielt C++ auch nicht. Dort ist C einfach meistens die bessere Wahl. Windows Treiber kann man z.B. gar nicht in C++ schreiben und im Linux Kernel ist C++ doch auch unerwünscht, soweit ich weiss.

    @Marc-O Dein Problem mit Diensten erschließt sich mir jetzt nicht. Wenn du da Schwierigkeiten hattest, liegt das doch wahrscheinlich eher an deiner Unvertrautheit (?) mit dem .NET Framework?



  • Phil_ schrieb:

    Und so eine richtig tragende Rolle im OS und Embedded Bereich, wie manch einer einem gerne glauben machen will, spielt C++ auch nicht. Dort ist C einfach meistens die bessere Wahl.

    Embedded Systeme sind unglaublich vielfälltig. Schwer zu sagen, was da am meisten eingesetzt wird. Je kleiner desto wohl mehr C als C++, aber auch das teilweise historisch bedingt. Aber auch bei den kleinen gibt es diverse C++ Anwendungen:

    - Arduino ist ja recht weit verbreitet. Die "Sketch" Sprache da ist leicht getarntes C++, verwendet wird der g++. Die IDE dagegen ist Java.

    - Etwas größer ist die mbed Plattform vom Prozessorhaus ARM. Die wird ja gerade zu Betriebssystem für "Dinge" im Internet der Dinge ausgebaut. Im Moment ist C++ da die einzige Programmiersprache für die Mikrocontroller. In den Tools wird viel Python verwendet.

    Gehen wir mal zu etwas größeren Embedded Systemen, Robotersteuerung. Da findet man sehr viel C++.

    - Da gibt es Open Source Projekte wie Orocos.org, da fällt mir nicht mal eine irgendwie geartete C Alternative ein. Kannst Du eine nennen ?

    - Die Point Clound Library (unter pointclouds.org) ist weit verbreitet in der Robotik. Auch da kenne ich keine C Alternative.

    - Bei beiden liegt das auch an der Mathematik. Für C++ gibt es Eigen, Armadillo, usw. Da gibt es in C nicht so viel entsprechendes.

    Gehen wir mal weg von Embedded. Der nächste Bereich wäre CAD. Die marktführenden Systeme (CATIA, Pro Engineer, usw.) sind alle in C++ geschrieben. Für Plugins wird meist eine spezielle Visual Studio Version gefordert. Viele kleinere Anbieter von CAD Systemen bauen auf dem ACIS-Kernel der Spatial Corporation auf. Der ist in C++ geschrieben.

    Ein Spezialgebiet beim CAD ist der Vergleich von Konstruktionsdaten mit Laserscans. Da gibt es eigentlich nur zwei Anbieter in der Industrie Polyworks und Geomagic (früher Rapidform). Beide in Visual C++ geschrieben.

    Kommen wir von den Robotern zu den SPSsen. Beckhoff ist ein deutscher Anbieter, der Visual Studio verwendet. Man kann da auch mit VC++ Code für die SPS schreiben, statt den SPS-Dialekten. Die Siemens Soft-SPSsen (die auf PC-Hardware laufen), haben ein Visual C++ SDK, sind wahrscheinlich selber damit geschrieben. Mitsubishi SPS (weltweit nach Siemens die Nummer 2) haben ein optinales C++ SDK.

    Alles in allem gibt es in der Industrie so viel C++ Software, dass die Sprache noch Jahrzente im Einsatz bleiben wird. Trotzdem sind neue Sprachen wichtig und nützlich. Aber bis die in diesen Anwendungsgebieten auftauchen, wird es etwas dauern.



  • [quote="nn"]

    Phil_ schrieb:

    Kommen wir von den Robotern zu den SPSsen. Beckhoff ist ein deutscher Anbieter, der Visual Studio verwendet. Man kann da auch mit VC++ Code für die SPS schreiben, statt den SPS-Dialekten. Die Siemens Soft-SPSsen (die auf PC-Hardware laufen), haben ein Visual C++ SDK, sind wahrscheinlich selber damit geschrieben. Mitsubishi SPS (weltweit nach Siemens die Nummer 2) haben ein optinales C++ SDK.

    Alles in allem gibt es in der Industrie so viel C++ Software, dass die Sprache noch Jahrzente im Einsatz bleiben wird. Trotzdem sind neue Sprachen wichtig und nützlich. Aber bis die in diesen Anwendungsgebieten auftauchen, wird es etwas dauern.

    Beckhoff benutzt TwinCAT, welches auf Codesys basiert. Beckhoff hat das nur in VS integriert.
    Ich für meinen Teil bin froh das man C++ benutzen kann und das auch wieder im kommen ist, da die SPS Programmiersprachen, außer ST, generell furchtbar sind.
    Roboter, egal ob Industrieroboter oder andere, werden auch zunehmend mit C++ programmiert. (ros.org)

    Für Anwendungsentwicklung war doch sowieso schon eher Java in Benutzung bzw. C#.



  • Ja, bei Industrie-Robotern wird sehr viel C++ eingesetzt.

    Nicht nur bei ros, auch bei den kommerziellen gibt es teilweise die Möglichkeit komplizierte Dinge in C++ zu machen. Dabei entdeckt man dann auch Indizien wie Dateinamen, dass zumindest Teile der Steuerung in C++ implementiert sind.



  • Automotive: Die Steuergeräte im Auto sind meist in C, das HMI meist in C++. Dann Mikro-Controller aller Art, für die Senorik im Auto, sind oft die Klasse RL78K von Renesas. Da gibt es eine C/C++ IDE aber da würde keiner was mit JAVA oder C# machen.



  • Für all diese industriellen Sachen wäre Rust super geeignet, denn da kann man sich noch weniger Fehler leisten. Ich drücke fest die Daumen, dass auch dort C++ immer weniger eine Rolle spielen wird in Zukunft. Nach den VM-Sprachen kommen jetzt endlich neue Systemsprachen auf den Markt...es wird auch Zeit.



  • Wenn solche Einsatzfelder einmal besetzt sind, ändert sich da nur langsam was. Da kann man in Jahrzehnten rechnen (eher mehr als eins).

    Wo Rust & Co früher auftauchen könnten sind kombinierte Ansätze, wie z.B. hier
    http://halcon.com/
    Im Innern C/C++/Assembler und GPU-Programmierung. Nach außen C/C++/.net . Wenn bei solchen Produkten mal Rust auftaucht, dann kann man darüber nachdenken es zu benutzen.

    Es hat einige Jahre nach dem Erscheinen von .net gedauert, bis C# in solchen Produkten auftauchte (und Delphi verschwandt). C++ war die ganze Zeit über da ...



  • Rustiger schrieb:

    Für all diese industriellen Sachen wäre Rust super geeignet, denn da kann man sich noch weniger Fehler leisten. Ich drücke fest die Daumen, dass auch dort C++ immer weniger eine Rolle spielen wird in Zukunft. Nach den VM-Sprachen kommen jetzt endlich neue Systemsprachen auf den Markt...es wird auch Zeit.

    Welche Vorteile hätte den Rust gegenüber C++?



  • Cybertec schrieb:

    Rustiger schrieb:

    Für all diese industriellen Sachen wäre Rust super geeignet, denn da kann man sich noch weniger Fehler leisten. Ich drücke fest die Daumen, dass auch dort C++ immer weniger eine Rolle spielen wird in Zukunft. Nach den VM-Sprachen kommen jetzt endlich neue Systemsprachen auf den Markt...es wird auch Zeit.

    Welche Vorteile hätte den Rust gegenüber C++?

    Für eine ausführliche Diskussion siehe diesen Thread.



  • Ja klar wird es Jahrzehnte dauern bis sich eine neue Systemsprache wirklich etabliert hat. Ich persönlich finde es auch schwer in Rust rein zu kommen, da man einfach anderes Denken lernen muss und mir fehlt auch noch GUI, IDE etc, obwohl Binding zu C-Libs wirklich da extrem schnell realisiert werden. SDL, GTK, OpenGL, GLGW und viele andere sind ja alle schon da.

    Interessant ist auch dass man mit Rust auch gut fürs Web programmieren kann. Da gibt es schon ein fertiges Projekt, mir fällt der Name nicht ein.

    Dazu ist der neue Paketmanager und Buildtool cargo echt toll. Keine Probleme mehr Libs zu nutzen, da werden Abhängigkeiten aufgelöst, fehlende Libs gleich runter geladen, ein Projekt mit Ordner-Struktur und XML-Build-Datei angelegt, usw.. Mit cargo run z.B. wird gebaut und gleich gestartet und so weiter und so fort...echt nett.

    Auf https://crates.io/ kann man sich so das werkeln an Libs anschauen. Da wird wirklich alles mögliche für Rust verfügbar gemacht.

    Und bald ist Rust auch endlich wirklich Final und dann werden auch die IDE-Unterstützung, Bücher etc. nicht lange auf sich warten lassen. Bevor eine Sprache nicht final ist macht ja so etwas keinen Sinn.



  • Diese Rust-Trollerei ist mittlerweile echt lästig.


Anmelden zum Antworten