Ich baue einen Clustering-Algorithmus in C++, aber ich bin nicht gut mit OOP und den Status von Variablen (Member-Daten), die sich ändern. Für einen Algorithmus von einiger Komplexität finde ich das ein Hindernis für meine Entwicklung.Ähnlich wie C++ - Zugriff durch Referenz?
Also habe ich überlegt, die Programmiersprache in eine der funktionalen Sprachen zu ändern: Ocaml oder F #. Abgesehen davon, dass ich meine Einstellung zur Programmierung ändern muss, muss ich etwas klären. In C++ verwende ich eine Doppelend-Warteschlange, um ein Zeitfenster durch die Daten zu schieben. Nach einiger Zeit werden die ältesten Daten entfernt und neuere Daten angehängt. Daten, die noch nicht zu alt sind, verbleiben in der Doppelendeschlange.
Eine andere und anspruchsvollere Aufgabe besteht darin, die Eigenschaften eines jeden Objekts zu vergleichen. Jedes Objekt ist die Daten aus einer bestimmten Zeit. Und wenn ich in einem bestimmten Zeitfenster eintausend Datenobjekte habe, muss ich je nach Bedarf zwischen keinem oder zwanzig oder dreißig vergleichen. Und einige Eigenschaften des zu vergleichenden Objekts können sich als Ergebnis dieses Vergleichs ändern. In C++ benutze ich Referenzen, was bedeutet, dass ich auf Objekte im Speicher zugreife, dass sie niemals kopiert werden, daher läuft der Algorithmus mit voller Geschwindigkeit (für meine Kenntnisse von C++).
Ich habe über funktionale Programmierung gelesen, und die Idee, die ich bekomme, ist, dass jede Funktion einige Operationen ausführt und dass die ursprünglichen Daten (die Eingabe) nicht geändert wird. Dies bedeutet, dass die Sprache die Datenstruktur kopiert und die erforderliche Transformation durchführt. Wenn dies der Fall ist, verzögert die Verwendung der funktionalen Programmierung die Ausführung des Algorithmus sehr. Ist das richtig? Wenn nicht, d. H. Wenn es eine schnelle Möglichkeit gibt, eine Transformation in Daten durchzuführen, ist es möglich, mir zu zeigen, wie es geht? Ein sehr kleines Beispiel wäre großartig.
Ich hoffe, eine Art von Einrichtung zu haben. Ich habe gelesen, dass sowohl Ocaml als auch F # in Forschung und wissenschaftlichen Projekten verwendet werden.