Имеется проект под встроенную realtime ОС, содержащий смесь C и C++ файлов. Его необходимо "причесать" для дальнейшего усовершенствования. Коллега, программист на asm и C, задает вопросы:
1.Надо бы перевести проект на "плюса", да только надо ли? Есть ли и в чем преимущество "плюсов" в контексте поставленной задачи? С другой стороны, когда к проекту подключатся другие разработчики(C++), это потребуется все-равно.
2.Он считает, что быстродействие C-программы лучше, чем C++. Так ли это?
3.Есть ли вообще преимущество C++ в задачах такого класса, где требуется максимальная скорость и по-возможности экономия ресурсов?(вопрос ставился именно так — "зачем C++, если есть C?".
В проекте глобально решается 3 типа задач:
-первоначальная инициализация "железа", записать-считать регистр
-взаимодействие с внешним миром — задачи ip-stack, snmp,и.т.д.
-взаимодействие между блоками и внутри блоков в оборудовании
Для программиста C++ структурированная работа с использованием классов C++ — привычна и логична. Но как объяснить это C-программисту? И прав ли он, что C-программы быстрее? (размер программы и памяти не критичны). Для него работы через подпрограммы удобнее и проще, чем через методы классов.
А может быть в данном случае программа на C действительно будет более эффективна? В другом имеющемся у нас C++ проекте реально от возможностей C++ используется очень мало....
Пока был принят один аргумент:
1.перегрузка функций. Вместо набора функций write_byte(addr, data), write_word(addr, data), write_dword(addr, data) используется одна перегруженная функция write_data(addr, data).