LINUX.ORG.RU

История изменений

Исправление aureliano15, (текущая версия) :

Мне трудно себе представить надёжное не глючное ядро на шаблонах, как и производительное ядро, использующее виртуальные функции и длинные цепочки наследования с конструктором на каждом шаге.

Придется развить воображение. Для примера, в Linux повсеместно применяются контейнеры, «виртуальные» функции и наследование. А goto вместо деструкторов это высший пилотаж.

Если речь об указателях на функции и вложенных структурах, то это не совсем то. При использовании любого числа вложенных си-структур, для каждой из них при создании не выполняется код. Аналогично, указатели на функции могут использоваться там, где это нужно программисту, а виртуальные функции — всегда виртуальные. Нет, я знаю, что и виртуальную функцию можно вызвать как обычную, но обычно никто так не делает, т. к. в этом случае исчезает смысл использования виртуальных функций. Т. е. сама концепция ООП направлена на создание более безопасного и легко сопровождаемого, но менее эффективного кода. Что касается шаблонов, то использование абстрактных типов в коде ядра, которые могут порождать или не порождать конкретные функции (причём в одной версии функция может быть порождена, а в следующей уже исчезнуть) может привести к серьёзным проблемам, которые сведут на нет весь профит. Даже если шаблонами пользоваться аккуратно.

Исходная версия aureliano15, :

Мне трудно себе представить надёжное не глючное ядро на шаблонах, как и производительное ядро, использующее виртуальные функции и длинные цепочки наследования с конструктором на каждом шаге.

Придется развить воображение. Для примера, в Linux повсеместно применяются контейнеры, «виртуальные» функции и наследование. А goto вместо деструкторов это высший пилотаж.

Если речь об указателях на функции и вложенных структурах, то это не совсем то. При использовании любого числа вложенных си-структур для каждой из них при создании не выполняется код. Аналогично, указатели на функции могут использоваться там, где это нужно программисту, а виртуальные функции — всегда виртуальные. Нет, я знаю, что и виртуальную функцию можно вызвать как обычную, но обычно никто так не делает, т. к. в этом случае исчезает смысл использования виртуальных функций. Т. е. сама концепция ООП направлена на создание более безопасного и легко сопровождаемого, но менее эффективного кода. Что касается шаблонов, то использование абстрактных типов в коде ядра, которые могут порождать или не порождать конкретные функции (причём в одной версии функция может быть порождена, а в следующей уже исчезнуть) может привести к серьёзным проблемам, которые сведут на нет весь профит. Даже если шаблонами пользоваться аккуратно.