Здравствуйте, rean, Вы писали:
R>Разумно не браться за задачу, где надо все усложнять, а упростить задачу, чтобы реализовать ее в достаточном объеме и с достаточными техническими характеристиками. Произвольное число — это усложнение. Оно реально нужно в вашей деятельности? R>Вам руководство выделит деньги на реализацию этого безумия?
Это не безумие. Вот как раз этот пример хоть и прост, но вполне жизненный.
На этапе постановке задачи для той же обработки изображений может показаться, что типа float хватит за глаза. А потом приходит от тепловизора картинка в 16 бит на пиксель и для точности некоторых фильтров уже нужен double. Или int.
Оказывается, что обобщённая запись алгоритмов рулит и экономит время.
Re[3]: Что дает template metaprogramming (по сравнению с другими языками)?
Здравствуйте, AlexRK, Вы писали:
ARK>Почему не
ARK>
ARK>class Vector<T> { public Vector(int len) { ... } }
ARK>class Matrix<T> { public Matrix(int len1, int len2) { ... } }
ARK>class Quaternion<T> { public Quaternion(int len) { ... } }
ARK>
R>Ну хотя бы потому, что в C#, например, тебе не будут доступны никакие арифметические операци над элементами — ни сложить, ни вычесть ни умножить — можешь попробовать, если не веришь.
В дополнение к предыдущему посту: если, все-таки, выберешь время поэкспериментировать, попробуй реализовать на C# вот такой урезанный до минимума пример:
Здравствуйте, rg45, Вы писали:
ARK>>Почему не
ARK>>
ARK>>class Vector<T> { public Vector(int len) { ... } }
ARK>>class Matrix<T> { public Matrix(int len1, int len2) { ... } }
ARK>>class Quaternion<T> { public Quaternion(int len) { ... } }
ARK>>
R>Ну хотя бы потому, что в C#, например, тебе не будут доступны никакие арифметические операци над элементами — ни сложить, ни вычесть ни умножить — можешь попробовать, если не веришь.
Почему это не будут? Делаешь методы Add, Multiply, Divide, и все доступно. Или ранимая душа программиста требует именно значков "+" и "-"?
Re[4]: Что дает template metaprogramming (по сравнению с другими языками)?
Здравствуйте, rg45, Вы писали:
R>В дополнение к предыдущему посту: если, все-таки, выберешь время поэкспериментировать, попробуй реализовать на C# вот такой урезанный до минимума пример:
А можно рассказать, что этот пример делает?
Re[4]: Что дает template metaprogramming (по сравнению с дру
Здравствуйте, rg45, Вы писали:
R>Ну хотя бы потому, что в C#, например, тебе не будут доступны никакие арифметические операци над элементами — ни сложить, ни вычесть ни умножить — можешь попробовать, если не веришь. Как это ни печально, но дженерики C# — это совсем не то же самое, что шаблоны C++, несмотря не некоторую схожесть. При этом о быстродействии даже говорить нет смысла
Доступны через интерфейсы, но плата за это отсутствие инлайнинга, хотя для интерфейсов структур инлайнятся.
Второе очень часто используемое это T4 http://rsdn.org/forum/dotnet/6736340.1
ARK>Почему это не будут? Делаешь методы Add, Multiply, Divide, и все доступно. Или ранимая душа программиста требует именно значков "+" и "-"?
Дело не в значках, а в том, что ты не сможешь так же точно и реализовать перечисленные функции — по причине отсутствия возможности описать подходяшие констрэйнты. Ну ты попробуй сначала, глядишь, мне и убеждать тебя ни в чем не придется.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[5]: Что дает template metaprogramming (по сравнению с дру
Здравствуйте, Serginio1, Вы писали:
S> Доступны через интерфейсы, но плата за это отсутствие инлайнинга, хотя для интерфейсов структур инлайнятся.
Не сможешь ты этого сделать Ребята, попробуйте реализовать минимальный пример того, о чем говорите, приносите, потом будем обсуждать. Минимальный пример для ориентира можно взять отсюда: http://rsdn.org/forum/cpp/7063448.1
Здравствуйте, AlexRK, Вы писали:
R>>В дополнение к предыдущему посту: если, все-таки, выберешь время поэкспериментировать, попробуй реализовать на C# вот такой урезанный до минимума пример:
ARK>А можно рассказать, что этот пример делает?
Определяет шаблонный класс вектора произвольной размерности, с произвольным типом элемента и реализует операцию скалярного произведения с автоматическим выведением правильного типа результата. Ну и плюс минимальная проверка.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rean, Вы писали:
R>А вы почитайте. И с карандашом. Подумайте над каждой мыслью. Того гляди и от извращений метапрограммирования уйдете. Станете здоровым программистом, а может быть даже и инженером-программистом.
По-моему, чрезмерное увлечение метапрограммированием в стиле C++ наносит практически непоправимый урон психике. Это что-то типа посттравматического синдрома. Так что нет, не станет.
Re[6]: Что дает template metaprogramming (по сравнению с дру
Здравствуйте, rg45, Вы писали:
R>>Разумно не браться за задачу, где надо все усложнять, а упростить задачу, чтобы реализовать ее в достаточном объеме и с достаточными техническими характеристиками. Произвольное число — это усложнение. Оно реально нужно в вашей деятельности? R>>Вам руководство выделит деньги на реализацию этого безумия?
R>Дальше не читал Много букв — признак путанницы в голове, имхо.
Ну вообще-то, там все буквы по делу...
Re[6]: Что дает template metaprogramming (по сравнению с дру
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, AlexRK, Вы писали:
R>>>В дополнение к предыдущему посту: если, все-таки, выберешь время поэкспериментировать, попробуй реализовать на C# вот такой урезанный до минимума пример:
ARK>>А можно рассказать, что этот пример делает?
R>Определяет шаблонный класс вектора произвольной размерности, с произвольным типом элемента и реализует операцию скалярного произведения с автоматическим выведением правильного типа результата. Ну и плюс минимальная проверка.
Здравствуйте, Pzz, Вы писали:
Pzz>По-моему, чрезмерное увлечение метапрограммированием в стиле C++ наносит практически непоправимый урон психике. Это что-то типа посттравматического синдрома. Так что нет, не станет.
А по-моему, Вы пытаетесь рассуждать о том, что Вам не доступно, и, не осилив, говорите: "виноград зелен". Мне было бы интересно подискутировать с Вами на тему метапрограммирования, если бы Вы хоть раз продемонстрировали свои навыки и знания в этой области.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[6]: Что дает template metaprogramming (по сравнению с дру
Здравствуйте, Nuzhny, Вы писали:
N>Оказывается, что обобщённая запись алгоритмов рулит и экономит время.
Но при этом, взять тот же пример с умножением матриц, он так написан, что что угодно перемножит — хоть матрицы строк, коть векторов, хоть слонов и жирафов, лишь бы над отдельными элементами были определены соответствующие операции. А надо-то всего перемножать матрицы чисел, пусть и двух с половиной разных типов.
Такая универсальность тоже имеет свою цену.
Re[6]: Что дает template metaprogramming (по сравнению с дру
Здравствуйте, rg45, Вы писали:
ARK>>Почему это не будут? Делаешь методы Add, Multiply, Divide, и все доступно. Или ранимая душа программиста требует именно значков "+" и "-"?
R>Дело не в значках, а в том, что ты не сможешь так же точно и реализовать перечисленные функции — по причине отсутствия возможности описать подходяшие констрэйнты. Ну ты попробуй сначала, глядишь, мне и убеждать тебя ни в чем не придется.
Здравствуйте, rg45, Вы писали:
R>Определяет шаблонный класс вектора произвольной размерности, с произвольным типом элемента и реализует операцию скалярного произведения с автоматическим выведением правильного типа результата. Ну и плюс минимальная проверка.
Ну вот у меня вектор произвольной размерности с произвольным типом элемента прибавляется к матрице произвольной размерности и тем же типом элемента: https://ideone.com/qBoLGp
Re[9]: Что дает template metaprogramming (по сравнению с дру
Здравствуйте, rg45, Вы писали:
Pzz>>По-моему, чрезмерное увлечение метапрограммированием в стиле C++ наносит практически непоправимый урон психике. Это что-то типа посттравматического синдрома. Так что нет, не станет.
R>А по-моему, Вы пытаетесь рассуждать о том, что Вам не доступно, и, не осилив, говорите: "виноград зелен". Мне было бы интересно подискутировать с Вами на тему метапрограммирования, если бы Вы хоть раз продемонстрировали свои навыки и знания в этой области.
Ну, понимаете, чтобы сознательно не кушать некоторые, хм, вещества, не обязательно их все перепробовать.
Re[8]: Что дает template metaprogramming (по сравнению с дру
Здравствуйте, rg45, Вы писали:
Pzz>>Ну вообще-то, там все буквы по делу...
R>Конечно же, ты имеешь право на собственную точку зрения. Я же считаю, что когда человеку есть что сказать по делу, то так много текта не требуется.
Зачем же тогда требуется так много текста, когда язык, на котором пытаются сказать по делу — это современный C++?
Re[7]: Что дает template metaprogramming (по сравнению с дру
Это не проблема, это просто еще раз указывет на недостатки языка, которые приходится решать внешними средствами.
S> Да придется тип нужный тип выводить, но не проблема.
Это — проблема, когда требуется вывести тип результата по параметрам шаблона.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[7]: Что дает template metaprogramming (по сравнению с дру