Я занимаюсь разработкой эмулятора NES в свободное время. Я использую C ++, потому что это язык, который я использую в основном, знаю в основном и нравится в основном.
Но теперь, когда я продвинулся в проекте, я понял, что не использую почти никаких специфических возможностей C ++, и мог бы сделать это на простом C и получить тот же результат. Я не использую шаблоны, перегрузку операторов, полиморфизм, наследование. Так что бы вы сказали? я должен остаться в C ++ или переписать его в C?
Я не буду делать это для повышения производительности, это может быть побочным эффектом, но идея в том, зачем мне использовать C ++, если он мне не нужен?
Единственные возможности C ++, которые я использую, - это классы для инкапсуляции данных и методов, но это можно сделать и с помощью структур и функций, я использую new и delete, но могу также использовать malloc и free, и я использование наследования только для обратных вызовов, что может быть достигнуто с помощью указателей на функции.
Помните, это хобби-проект, у меня нет сроков, поэтому время и работа, которые потребуют переписывания, не являются проблемой, а также могут быть интересными. Итак, вопрос в C или C ++?
I use C++ because is the language I use mostly, know mostly and like mostly.
И это ответ на ваш вопрос. Вы должны переключать языки только в середине проекта, когда есть проблема, которую ваш текущий язык не может решить. I don't use templates, operator overloading, polymorphism, inheritance.
Изучать и использовать концепции гораздо полезнее, чем переходить на C. Поскольку это хобби-проект, почему бы не использовать несколько вещей, которые вы раньше не использовали? Вы всегда можете запустить другой проект на C и выучить язык, но для вашего текущего проекта переключать не имеет смысла.
std::shared_ptr
, std::unique_ptr
, boost::scoped_ptr
, std::vector
, std::deque
, std::map
и т.д. Для функции обратного вызова, вид в использование функторов, и в C ++ 11, вам Можно также начать использовать такие вещи, как лямбда-функции.