Re: Что дает template metaprogramming (по сравнению с другими языками)?
От: rg45 СССР  
Дата: 24.02.18 10:51
Оценка: +1 -2
Здравствуйте, Максим Рогожин, Вы писали:

МР>В C++ имеется механизм template metaprogramming. В C#, Java нет какого механизма (нету ведь?). Вопрос в том какие преимущества по сравнению с C#, Java дает плюсам шаблонное метапрограммирование?


Для этого нужно попытаться решить какую-нибудь практическую задачу. Например, реализацию векторно матричных операций для игровых/графических движков. Например, в C++ достаточно реализовать пару тройку наблонных классов и операций между ними:

template <size_t N, typename = double> class Vector;
template <size_t M, size_t N, typename = double> class Matrix;
template <size_t N, typename = double> class Quaternion;


Получается компактно и максимально эффективно.

Следующиющий шаг — попробовать сделать то же самое на C# или на Java, испытать разочарование после жестокого облома и реализовать сначала все возможные варианты классов, которые могут поотребоваться в средненьком игровом движке:

class Vector2Double;
class Vector2Float;
class Vector3Double;
class Vector3Float;
class Vector4Double;
class Vector4Float;

class Matrix2x2Double;
class Matrix2x2Float;
class Matrix3x3Double;
class Matrix3x3Float;
class Matrix3x4Double;
class Matrix3x4Float;
class Matrix4x4Double;
class Matrix4x4Float;

class Quaternion2Double;
class Quaternion2Float;
class Quaternion3Double;
class Quaternion3Float;


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

Ну и, наконец, попробовать заиспользовать все это говнишко, пардон за мой французский, в какой-нибудь реальной игрухе и, после замеров FPS, понять, что все это время было потрачено впустую.
--
Не можешь достичь желаемого — пожелай достигнутого.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.