Wofür wird C++ heute noch eingesetzt?



  • Ethon schrieb:

    Funktionale Programmiersprachen machen die IT noch sicherer. Akzeptiere mal die Unzulänglichkeiten von Rust.

    Ich habe nie geschrieben, dass Rust keine Unzulänglichkeiten hat. Es kann nur Sachen garantieren die C und C++ nicht kann und die für die Sicherheit extrem wichtig sind. Und ja, funktionale Programmiersprache bringen einem praktische frei Haus die Korrektheit einer Funktion, das ist auch eine feine Sache.



  • Nur eine Anmerkung:
    Funktionale Programmiersprachen bringen nicht 100% sicherheit:
    Was ist mit Fehlern im Compiler?
    Und selbst wenn das nicht:
    Sie haben nur den Vorteil das man sie mathematisch beweisen kann (die korrektheit), aber das kostet einiges! Ich würde sogar mutmaßen das die Prüfung genau so viel kostet wie die Entwicklung.

    C/++ ist auch korrekt, solange die Compiler Implementierung ok ist und der Programmierer keinen Müll baut.

    (Kleines Beispiel zu oberen: Die Haskel IDE Leksah ist in Haskell geschrieben -> Müsste ja fehlerfrei sein.
    Aber ich habe selten eine IDE gesehen die so häufig abschmiert).

    Also alles eine Frage des Programmierers.
    Aber das ist auch alles OT...



  • Es geht und ging hier nie um 100% Vermeidung von allen Fehlern. Es geht um die 100% Vermeidung von bestimmten SPEICHERFEHLERN! Man kann die auch in C und C++ vermeiden, aber das hängt vom Können des Programmierers ab. Bei Rust hängt es NIE vom Können des Programmierers ab, der Compiler macht das. Genau wie der Compiler bei C++ bestimmte Fehler zur Typensicherheit einem abnimmt, die in C durch viel void* Gedöns auftreten KÖNNEN.

    Nun ist es so, dass mit komplexeren Projekten die Wahrscheinlichkeit steigt, in C oder auch C++ Speicherfehlern zu verursachen. In Rust ist es egal wie komplex das Projekt wird oder wie viele Leute daran arbeiten und es ist auch egal wie gut die sind. Es kann KEINE Speicherfehler dieser Art geben, die Sprache wurde extra so konstruiert dass das nicht geht. Und der Hammer ist ja, dass das alles keinen Overhead hat. Ich glaube sogar, es wird so weniger Overhead erzeugt als bei Smartpointern in C++.

    Viele verstehen hier nicht einmal die Grundlagen von Rust und warum Sachen da so funktionieren wie sie funktionieren. Dabei ist die Speichersicherheit nur eins der tollen Features. Darauf aufbauend ist die Sprache wie gemacht für Multithreading, was auch wieder Teil der Sprache ist und auch hier kann ein KEINE Data Races geben, so wie in C++.

    Schaut euch den Webcast von OReilly an, da wird auch einiges zu Speichersicherheit erzählt. Jim Blandy erklärt da viele Seiten von Rust mit Beispielen.
    http://www.oreilly.com/pub/e/3291

    Jim Blandy works for Mozilla on Firefox's tools for web developers. He is a committer to the SpiderMonkey JavaScript engine, and has been a maintainer of GNU Emacs, GNU Guile, and GDB. He is one of the original designers of the Subversion version control system

    Hier ein Video wo es nur um die Speichersicherheit geht:
    https://www.youtube.com/watch?v=9wOzjbgRoNU

    Hier eins über C++, D, Rust und Go diskutiert wird, mit dabei Bjarne Stroustrup und Andrei Alexandrescu:
    https://www.youtube.com/watch?v=BBbv1ej0fFo

    Es ist sehr mühsam eine alternative Sprache vorzustellen, wenn selbst die bewiesenen Grundlagen dieser Sprache nicht akzeptiert werden. Leider ist das Forum hier das einzige deutsche, was sich auch intensiv mit der Systemprogrammierung beschäftigt. Leider ist es sehr C++ lastig, was ja klar ist, da bis jetzt ja auch C++ die einzige Systemsprache war für größere Projekte. Tja, das ist jetzt vorbei. Selbst hier wird C++ in Zukunft was vom Kuchen abgeben müssen, wenn nicht bei Rust oder Go dann bei einem der Nachfolger. Der Stein der modernen Systemsprachen ist ins Rollen gekommen und nimmt fahrt auf.



  • NewHope schrieb:

    Es ist sehr mühsam eine alternative Sprache vorzustellen, wenn selbst die bewiesenen Grundlagen dieser Sprache nicht akzeptiert werden.

    Niemand behauptet, dass Rust schlecht sei aber dieses ständige generve hier im Forum, dass es das Maß aller Dinge wäre und jeder sofort umsteigen müsste, verringert mMn das Interesse extrem. Rust hat schöne neue Sachen aber es ist weder ausgereift, noch gibt es ausreichend Bibliotheken. Momentan kann man Rust eher beobachten und sich das ganze etwas genauer angucken aber effektiv damit arbeiten und große Projekte erstellen ist momentan eher kontraproduktiv.

    NewHope schrieb:

    Leider ist das Forum hier das einzige deutsche, was sich auch intensiv mit der Systemprogrammierung beschäftigt. Leider ist es sehr C++ lastig,

    Es ist auch ein C++ Forum - wie kann man sich darüber wundern, dass es C++ lastig ist?



  • SLx64 schrieb:

    Es ist auch ein C++ Forum - wie kann man sich darüber wundern, dass es C++ lastig ist?

    👍



  • Rust hat schöne neue Sachen aber es ist weder ausgereift, noch gibt es ausreichend Bibliotheken.

    Genau ....
    Dazu kommt noch, das nicht nur das vorhandensein einer Biblio ne Rolle spielt, sondern auch die Lizenz zu. Und nicht nur die RUST Lib, sondern auch die drunter liegende C Lib.

    Grad in den Bereichen wo heut C++ noch ne Rolle spielt, ist dieses Thema nicht unerheblich.
    Geht schon bei der GUI los, GTK und wxWidgets sind damals bei uns (vor 3 Jahren) aus "Lizenzrechtlichen Gründen" abgelehnt wurden. Dann wirds recht dünn für GUI's auf dem "beliebtesten Desktop OS im kommerziellen Umfeld" 🙂

    Ciao ...



  • RHBaum schrieb:

    Geht schon bei der GUI los, GTK und wxWidgets sind damals bei uns (vor 3 Jahren) aus "Lizenzrechtlichen Gründen" abgelehnt wurden.

    Dann hat damals aber vmtl. auch irgendjemand die LGPL missverstanden. Zumal die wxWidgets-Lizenz ja nochmal loser als die LGPL ist.



  • Unter welcher Lizenz stehen denn die Bibliotheken?
    Rust selber ja unter der Apache / MIT da sehe ich keine Probleme.
    Wobei ich nicht ganz verstehe warum man eine Sprache nicht public domain macht. Was hat man denn davon das noch einzuschränken?



  • Hallo

    Phil_ schrieb:

    ...
    @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?

    Nein das liegt eher daran, das bei Diensten meist darum geht Bits herum zu schubsen, Kommunikation mit SPSen zu unterhalten oder darum Dateien zu lesen die ein komplett eigenständigen Bit-basiertes Aufbau haben. Ja ich hab es auch via C# implementiert, ist aber bei weitem nicht so angenehm und der Speicherverbrauch schreckt mich immer wieder ab. (C++ ca. 10MB, C# mit nicht mal der Hälfte der Implementierung und benötigt ca. 50MB).

    Und wegen Unvertrautheit, ich glaube nachdem ich jeden C# Versionswechsel mit machen durfte, sollte mir das .NET Framework gut genug bekannt sein.

    Aber wenn wir schon bei Rust sind, wie schaut es dort eigentlich mit Ring-Verkettungen aus, alla Vater hat Kinder, die wiederum ihren Vater kennen? (Hab leider kein Beispiel in Rust dazu gefunden, geschweige in der Doku was dazu finden können) Wie wird das in Rust abgehandelt und erkennt der Compiler diese Problematik?

    (Ist eins der typischen Probleme in C#, wo es ja eigentlich auch heißt, das Speicherlecks nicht mehr auftreten könnten)

    Und nochmal zum Thema, in vielen großen Altlastsystem, wird wie schon viele vorher gesagt haben, C++ nicht einfach ausgetauscht. Können sich die wenigsten einfach leisten. Ist bei uns nicht anders, wir pflegen aktuell sogar noch VB-Code.

    MfG MarcO



  • rust|cppEgal schrieb:

    Unter welcher Lizenz stehen denn die Bibliotheken?
    Rust selber ja unter der Apache / MIT da sehe ich keine Probleme.
    Wobei ich nicht ganz verstehe warum man eine Sprache nicht public domain macht. Was hat man denn davon das noch einzuschränken?

    Damit Microsoft die Sprache nimmt und zum Standard inkompatibel macht, so wie bei Java geschehen? Nö! Deswegen nimmt man Lizenzen die den Standard zusammenhalten.


Anmelden zum Antworten