In meiner Freizeit entwickle ich einen NES-Emulator als Hobby. Ich benutze C ++, weil es die Sprache ist, die ich am meisten benutze, die ich am meisten kenne und am meisten mag.
Aber jetzt, da ich einige Fortschritte im Projekt gemacht habe, stelle ich fest, dass ich fast keine spezifischen Funktionen von C ++ verwende und es in einfachem C hätte tun können und das gleiche Ergebnis erzielen können. Ich verwende keine Vorlagen, Überladen von Operatoren, Polymorphismus, Vererbung. Also, was würdest du sagen? soll ich in C ++ bleiben oder es in C umschreiben?
Ich werde das nicht tun, um an Leistung zu gewinnen, es könnte als Nebeneffekt auftreten, aber die Idee ist, warum ich C ++ verwenden soll, wenn ich es nicht brauche?
Die einzigen Funktionen von C ++, die ich verwende, sind Klassen zum Einkapseln von Daten und Methoden, aber das kann auch mit Strukturen und Funktionen geschehen. Ich verwende new und delete, kann aber auch malloc und free verwenden, und ich bin Verwenden der Vererbung nur für Rückrufe, was mit Zeigern auf Funktionen erreicht werden könnte.
Denken Sie daran, es ist ein Hobby-Projekt, ich habe keine Fristen, so dass die Overhead-Zeit und die Arbeit, die ein erneutes Schreiben erfordern würden, kein Problem sind und auch Spaß machen könnten. Die Frage ist also C oder C ++?
I use C++ because is the language I use mostly, know mostly and like mostly.
Und das ist die Antwort auf Ihre Frage. Sie sollten die Sprache nur während des Projekts wechseln, wenn es ein Problem gibt, das Ihre aktuelle Sprache nicht lösen kann. I don't use templates, operator overloading, polymorphism, inheritance.
Es wäre viel wertvoller, die Konzepte zu lernen und zu verwenden, als zu C zu wechseln. Da dies ein Hobbyprojekt ist, warum nicht ein paar Dinge verwenden, die Sie vorher noch nicht verwendet haben? Sie könnten jederzeit ein anderes Projekt in C starten und die Sprache lernen, aber für Ihr aktuelles Projekt ist ein Wechsel nicht sinnvoll.
std::shared_ptr
, std::unique_ptr
, boost::scoped_ptr
, std::vector
, std::deque
, std::map
, etc. Für Callback - Funktionen, Blick in die Verwendung von functors, und in C ++ 11, Sie kann auch anfangen, Dinge wie Lambda-Funktionen zu verwenden.