Seit Jahren beschäftige ich mich mit algorithmischen Dingen, schreibe skalierbare Datenstrukturen für die Internetsuche, zum Beispiel Randomisierte binäre Suchbäume für die automatische Empfehlung, BitMaps, Wisdom of Crowd-basierte Algorithmen unter Verwendung von Grafiken, schreibe einige interessante Algorithmen für maschinelles Lernen wie Clustering, Anomalieerkennung, Arbeiten an Information Retrieval Sachen und so weiter
Es gibt eine gemeinsame Sache in den Dingen, die ich oben erwähnt habe. Alle oben genannten Dinge, wenn sie in einer Sprache wie C ++ codiert sind, erfordern eine Handvoll Klassen. Ich meine, es sind interessante Probleme, aber sie sind nicht komplex in Bezug auf stark geladene objektorientierte Dinge. Ich habe noch nie Vererbung, virtuelle Dinge usw. verwendet. Obwohl ich häufig generische Programmierung, Vorlagen usw. verwendet habe.
Ich liebe C ++ (- Sperriges OO-Zeug, wie mir gefällt, was Joe Armstrong, der Erfinder von Erlang, sagt: Wenn man in OO World nach einer Banane fragt, bekommt man einen großen Dschungel zusammen mit einem Gorilla, der die Banane hält). Ich programmiere gerne in anderen Sprachen wie Java und Python.
Meine Frage ist nun, da ich die Art von Projekten / Algorithmen genieße, an denen ich arbeite, muss ich wirklich OO-Sachen lernen. Werde ich ein besserer Programmierer / Designer sein, wenn ich nur Sachen wie Vererbung, dynamischer Polymorphismus (Virtuals) verwende? ODER kann ich in die Welt der funktionalen Programmierung wechseln (ich habe es bis jetzt noch nicht getan), was mich mehr anzieht, da ich mich nur auf Aufgaben / Algorithmen konzentrieren kann und nicht zulasse, dass auf Kingdom Of Noun basierendes OO-Zeug eine Regel ist mir?
Kurz gesagt, kann / kann mir OO-Zeug überhaupt bei der Art von Projekten / Algorithmen helfen, die ich oben erwähnt habe?
BEARBEITEN:
Ein äußerst interessanter Link, den Sie hier hinzufügen können:
http://steve-yegge.blogspot.in/2006/03/execution-in-kingdom-of-nouns.html