Цитата(Леонид Иванович @ Sep 7 2016, 21:54)

Очевидный плюс перейти на С++ состоит в том, что не надо будет больше скрывать исходники. Они являются самокриптующимися, никто из конкурентов с ними ничего сделать не сможет.
Тогда надо на Rust переходить - его уж точно конкуренты не поймут, при чем там все вкусности c++ есть - шаблоны, перегрузка, динамический/статический полиморфизм, лямбды итд. Мало того, он еще и менее императивный и более экспрессивный

Цитата
Придется и язык подучить и дизайн передизайнить, чтоб ООП задействовать. И тогда получится красиво и хорошо. Если повезет )))
Чтобы получилось хорошо - надо будет учиться пару лет. Многие думают, что C++ - синтаксический сахар над C, типa мол писали Class_method(obj), a стали писать obj->method() . Но это далеко не так. C++ мощный и сложный язык.
Это все равно, что назвать C синтаксическим сахаром для ассемблера. Действительно, какая разница - написать mov r0, r1 на асме или r0 = r1; на C

?
Хотя на самом деле.. вот кусок типичного C++ кода, при чем это довольно безобидный, а бывают реально страшные

CODE
template<class T, class TCbk, SST::TPriority cbk_priority, int Size>
class UmFifo_spsc_consecutive_reader:
public UmFifo_spsc<T,UmFifo_spsc_consecutive_reader<T,TCbk,cbk_priority,Size>,Size>
{
public:
UmFifo_spsc_consecutive_reader(const TCbk& cbk):
cbk(cbk)
{}
// call this when your cbk is completed
// You can exit your callback and call this function later
void signal_dataAccepted(){
if(this->popConsecutiveData(current_len)){
// there are more data - restart
onReadyRead();
}
}
// really private, don't lock here
public:
bool postReadyRead(){
return SST::postMessage(cbk_priority, [this](){
onReadyRead();
});
}
private:
void onReadyRead(){
const T* p = this->getConsecutiveData_ptr();
current_len = this->getConsecutiveData_len();
cbk(this, p, current_len);
}
private:
TCbk cbk;
int current_len;
};
Такой код на C невозможен в принципе. Нет, ну можно что-то похожее реализовать на #define но это будет горбатый сложный и непонятный монстр, на разработку которого уйдет куча времени, а потом через пару месяцев сами не поймете что понаписывали. Проще не париться, а каждый раз(в каждом отдельном проекте или месте использования) реализовывать по новой, изменяя параметры.
А на С++ делается 1 раз(при чем времени нужно не больше, чем на одну сишную реализацию, а то и меньше) и используется повторно без изменений в куче других проектов.