Здравствуйте, hokkaido, Вы писали:
H>Да, в общем-то на С делается две библиотеки — одна AVR_UART, другая Simulator_UART. все отлаживается, переносится и т.д. Но не в том суть.
Тогда будет один глобальный namespace, где одни функции будут от симулятора, другие внутренние (портируемые). Разобраться что где через год после написания можно будет или по именам/комментариям, или смотря, что где объявлено. В C++ это делается средствами языка (один класс для методов симулятора, другой — для UART-а, все обращения явные). Одного взгляда на объявление BusImplementation<Simulator, TransactionInfo> понятно, какие функции берутся от симулятора, и как передается информация о транзакциях. В Си эта информация была бы "размазана" по исходникам и была бы менее явной.
H>Наверное надо сказать, что embedded конечно бывает разное. Например если надо написать хм... браузер или там RSS ридер под S60, то очевидно надо использовать всю мощщььь ООП
. Просто, ну реально сталкивался (не раз) с такими ситуациями когда банально лишняя операция доступа к памяти приводила к тому что производительности не хватало. Или (в случае с параметризируемыми типами который Вы привели) лишние 10 байт уже не влазили во внутреннюю память.
Фишка в том, что многие "шаблонные дебри" резловятся при компиляции и получаемый код ни на байт не хуже чисто-сишного.
H>В общем embedded она разное, ага.
Таки да. Каждому подходу ниша найдется