Je développe un émulateur NES comme passe-temps, pendant mon temps libre. J'utilise C ++ parce que c'est le langage que j'utilise le plus, que je connais le plus et que j'aime le plus.
Mais maintenant que j'ai fait quelques progrès dans le projet, je me rends compte que je n'utilise pas presque toutes les fonctionnalités spécifiques de C ++, et j'aurais pu le faire en C simple et obtenir le même résultat. Je n'utilise pas de modèles, surcharge d'opérateur, polymorphisme, héritage. Alors que diriez-vous? dois-je rester en C ++ ou le réécrire en C?
Je ne ferai pas cela pour gagner en performances, cela pourrait venir comme un effet secondaire, mais l'idée est pourquoi devrais-je utiliser C ++ si je n'en ai pas besoin?
Les seules fonctionnalités de C ++ que j'utilise sont des classes pour encapsuler des données et des méthodes, mais cela peut aussi être fait avec des structures et des fonctions, j'utilise new et delete, mais pourrait aussi bien utiliser malloc et free, et je suis en utilisant l'héritage uniquement pour les rappels, ce qui pourrait être réalisé avec des pointeurs vers des fonctions.
Rappelez-vous, c'est un projet de loisir, je n'ai pas de délais, donc le temps supplémentaire et le travail qui nécessiteraient une réécriture ne sont pas un problème, pourraient aussi être amusants. Donc, la question est C ou C ++?
I use C++ because is the language I use mostly, know mostly and like mostly.
Et c'est la réponse à votre question. Vous ne devez changer de langue au milieu du projet qu'en cas de problème que votre langue actuelle ne peut pas résoudre. I don't use templates, operator overloading, polymorphism, inheritance.
Il serait beaucoup plus utile d'apprendre et d'utiliser les concepts que de passer au C. Comme il s'agit d'un projet de loisir, pourquoi ne pas utiliser quelques éléments que vous n'avez pas utilisés auparavant? Vous pouvez toujours démarrer un autre projet en C et apprendre la langue, mais pour votre projet actuel, cela n'a pas de sens de changer.
std::shared_ptr
, std::unique_ptr
, boost::scoped_ptr
, std::vector
, std::deque
, std::map
, etc. Pour les fonctions de rappel, regard sur l'utilisation de foncteurs, et en C ++ 11, vous peut également commencer à utiliser des choses comme les fonctions lambda.