Зачем шаблоны в С++?
От: alpha21264 СССР  
Дата: 28.04.14 08:35
Оценка: +1 -1 :))) :)
Народ!

Вот дожил до 45 лет и не знаю, зачем в С++ шаблоны.
Вот... совсем. Не использую их, да и всё тут.
Не, конечно vector<int> написать могу.
И прочее использование STL-я.
Но больше ничего с шаблонами не делаю.


Люди! А для чего вы используете шаблоны?
Может я чего упускаю?


Сложные программы пишу, например, в известном САПРе OrCad есть мой код.

Течёт вода Кубань-реки куда велят большевики.
Re: Зачем шаблоны в С++?
От: Varavva  
Дата: 28.04.14 08:38
Оценка:
Здравствуйте, alpha21264, Вы писали:

Ну например графика. OpenGL для десктопов поддерживает double, a OpenGL ES толкьо float
Видимо имеет смысл делать матрицы и вектора (в смысле не контейнеры, а из геометрии) типо-независимыми? Шаблоны тут удобны
Re[2]: Зачем шаблоны в С++?
От: alpha21264 СССР  
Дата: 28.04.14 08:44
Оценка: 1 (1)
Здравствуйте, Varavva, Вы писали:

V>Здравствуйте, alpha21264, Вы писали:


V>Ну например графика. OpenGL для десктопов поддерживает double, a OpenGL ES толкьо float

V>Видимо имеет смысл делать матрицы и вектора (в смысле не контейнеры, а из геометрии) типо-независимыми? Шаблоны тут удобны

Эээ... это одновременно, или это две разные сборки? Одна для OpenGL, другая для OpenGL ES?
Просто если это второе, то я бы обошелся typedef в каком-нибудь хедере.

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

Течёт вода Кубань-реки куда велят большевики.
Re[3]: Зачем шаблоны в С++?
От: Varavva  
Дата: 28.04.14 08:46
Оценка: :))) :)
Здравствуйте, alpha21264, Вы писали:

A>А ещё какие случаи бывают?


Неплохой повод потрахать на собеседовании
Re: Зачем шаблоны в С++?
От: Kingofastellarwar Украина  
Дата: 28.04.14 08:53
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Народ!


A>Вот дожил до 45 лет и не знаю, зачем в С++ шаблоны.

A>Вот... совсем. Не использую их, да и всё тут.
A>Не, конечно vector<int> написать могу.
A>И прочее использование STL-я.
A>Но больше ничего с шаблонами не делаю.
A>

A>Люди! А для чего вы используете шаблоны?

A>Может я чего упускаю?
A>

A>Сложные программы пишу, например, в известном САПРе OrCad есть мой код.

A>

100%, сам юзаю их тока для контейнеров и всяких функторов/эвентов, всё
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re: Зачем шаблоны в С++?
От: jazzer Россия Skype: enerjazzer
Дата: 28.04.14 08:54
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Люди! А для чего вы используете шаблоны?


Для зарабатывания денег.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Зачем шаблоны в С++?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 28.04.14 08:57
Оценка:
Здравствуйте, alpha21264, Вы писали:

У меня в коде:

1. Передача callback-ов в функции

template <typename Callback>
    void test(Callback callback)
    {
        callback(1, "test");
    }


2. При работе с STL передаются итераторы/контейнеры в методы

3. Разворачивание кода, когда я хочу, чтобы компилятор развернул код для каждого отдельного случая. Частный случай — разный код для разных констант.

4. Когда надоедает копипастить одни и те же методы.
Re: Зачем шаблоны в С++?
От: Stanislav V. Zudin Россия  
Дата: 28.04.14 09:04
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Вот дожил до 45 лет и не знаю, зачем в С++ шаблоны.

A>Вот... совсем. Не использую их, да и всё тут.
A>Не, конечно vector<int> написать могу.
A>И прочее использование STL-я.
A>Но больше ничего с шаблонами не делаю.

A>Люди! А для чего вы используете шаблоны?

A>Может я чего упускаю?

В общем-то ничего не упускаешь. Есть код и есть код.
Один решает конкретную задачу (твой случай), другой предполагается пихать во все дыры (та же стандартная библиотека).

Ооочень редко приходится использовать шаблоны для каких-нибудь адаптеров для получения данных там, где нет места "традиционному" полиморфизму.
Типа получить координаты пинов и вий. Но это просто чтобы дважды код не писать.

A>Сложные программы пишу, например, в известном САПРе OrCad есть мой код.

Агаааа, конкурент! А мой — в Hyperlynx, Expedition, TopoR, Simbeor

_____________________
С уважением,
Stanislav V. Zudin
Re: Зачем шаблоны в С++?
От: a_g_99 США http://www.hooli.xyz/
Дата: 28.04.14 09:18
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Люди! А для чего вы используете шаблоны?

A>Может я чего упускаю?
A>

Templates делают ваш код коротким, максимально структурированным и reusable. Не бесплатно — сложность понимания кода и его отладка увеличатся, время компиляции также.
Re[2]: Зачем шаблоны в С++?
От: Kingofastellarwar Украина  
Дата: 28.04.14 09:20
Оценка: +4 -2
Здравствуйте, a_g_99, Вы писали:

__>Templates делают ваш код коротким, максимально структурированным и reusable.


это маркетинг и теория, в реальности всё совсем по другому
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re[3]: Зачем шаблоны в С++?
От: a_g_99 США http://www.hooli.xyz/
Дата: 28.04.14 09:24
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>это маркетинг и теория, в реальности всё совсем по другому


Что же в вашей "реальности" по другому?
Re[4]: Зачем шаблоны в С++?
От: Stanislav V. Zudin Россия  
Дата: 28.04.14 09:29
Оценка: +3 -3
Здравствуйте, a_g_99, Вы писали:

K>>это маркетинг и теория, в реальности всё совсем по другому


__>Что же в вашей "реальности" по другому?


А в реальности 90% кода пишется под конкретную задачу и шаблоны там ничем не помогут. Вот сделать код нечитабельным — это запросто (таких примеров предостаточно).
_____________________
С уважением,
Stanislav V. Zudin
Re[4]: Зачем шаблоны в С++?
От: Kingofastellarwar Украина  
Дата: 28.04.14 09:31
Оценка: +2
Здравствуйте, a_g_99, Вы писали:

__>Здравствуйте, Kingofastellarwar, Вы писали:


K>>это маркетинг и теория, в реальности всё совсем по другому


__>Что же в вашей "реальности" по другому?


ну например в моей реальности любой шаблон рано или поздно сталкивается с тем, что как тока в каком-ньть месте логика хоть чуть-чуть зависит от типа то шаблон становится бесполезным

а вообще в 99% случаев просто нет ниткакой необходимости что-то типизировать
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re[2]: Зачем шаблоны в С++?
От: alpha21264 СССР  
Дата: 28.04.14 09:31
Оценка:
Здравствуйте, a_g_99, Вы писали:

__>Здравствуйте, alpha21264, Вы писали:


A>>Люди! А для чего вы используете шаблоны?

A>>Может я чего упускаю?
A>>

__>Templates делают ваш код коротким, максимально структурированным и reusable. Не бесплатно — сложность понимания кода и его отладка увеличатся, время компиляции также.


Ну вот я так и знал, что обязательно будут священные войны.
А зачем нужно такое средство, при котором увеличивается сложность понимания и отладки?
Ведь сложность понимания для программиста — один из важных параметров, если не самый важный.


Вопрос-то был не про это. Не про то, нужны ли ли не нужны шаблоны. Допустим, нужны.
А про то, как вы их используете.

Течёт вода Кубань-реки куда велят большевики.
Re[5]: Зачем шаблоны в С++?
От: a_g_99 США http://www.hooli.xyz/
Дата: 28.04.14 09:54
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>А в реальности 90% кода пишется под конкретную задачу и шаблоны там ничем не помогут. Вот сделать код нечитабельным — это запросто (таких примеров предостаточно).


Ну что за детский сад. "в реальности 90% кода пишется под конкретную задачу и шаблоны там ничем не помогут".
В реальности у вас проект со sloc за 1m и 100500 классов которые "чуть чуть" различаются. И вам нужно создать единую концепцию чтобы не завязнуть в крутом копи-пасте.

В зависимости от сложности уровень абстракции повышается — это цена которую вы платите за сложность. Нет смысла этого пугаться.
Re[5]: Зачем шаблоны в С++?
От: a_g_99 США http://www.hooli.xyz/
Дата: 28.04.14 09:57
Оценка: +3
Здравствуйте, Kingofastellarwar, Вы писали:

K>ну например в моей реальности любой шаблон рано или поздно сталкивается с тем, что как тока в каком-ньть месте логика хоть чуть-чуть зависит от типа то шаблон становится бесполезным

Специализуйте вашим типом. Это просто инструмент а не святой грааль.
Re[5]: Зачем шаблоны в С++?
От: jazzer Россия Skype: enerjazzer
Дата: 28.04.14 09:59
Оценка: 1 (1)
Здравствуйте, Kingofastellarwar, Вы писали:

K>ну например в моей реальности любой шаблон рано или поздно сталкивается с тем, что как тока в каком-ньть месте логика хоть чуть-чуть зависит от типа то шаблон становится бесполезным


Для этого случая, внезапно, придуманы специализации.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Зачем шаблоны в С++?
От: jazzer Россия Skype: enerjazzer
Дата: 28.04.14 10:01
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Ну вот я так и знал, что обязательно будут священные войны.


А чего ты ожидал, создавая тему в КСВ?

A>Вопрос-то был не про это. Не про то, нужны ли ли не нужны шаблоны. Допустим, нужны.

A>А про то, как вы их используете.

Так надо было задавать вопрос в С/С++, а не в КСВ.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Зачем шаблоны в С++?
От: CreatorCray  
Дата: 28.04.14 10:03
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Люди! А для чего вы используете шаблоны?

В общем случае для случаев, когда в С пишут макросы.
Банально: контейнеры, врапперы, прочая кодогенерация.
С шаблонами надо аккуратно, у неопытных падаванов есть риск написать на шаблонах всё и это на стороную тёмную их приведёт.
Самый конечно смак — variadic templates. Офигенная штука для написания всяких быстрых typesafe printf-style логгеров.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Зачем шаблоны в С++?
От: Stanislav V. Zudin Россия  
Дата: 28.04.14 10:09
Оценка:
Здравствуйте, a_g_99, Вы писали:

__>Здравствуйте, Stanislav V. Zudin, Вы писали:


SVZ>>А в реальности 90% кода пишется под конкретную задачу и шаблоны там ничем не помогут. Вот сделать код нечитабельным — это запросто (таких примеров предостаточно).


__>Ну что за детский сад. "в реальности 90% кода пишется под конкретную задачу и шаблоны там ничем не помогут".

__>В реальности у вас проект со sloc за 1m и 100500 классов которые "чуть чуть" различаются. И вам нужно создать единую концепцию чтобы не завязнуть в крутом копи-пасте.

От проекта зависит. Если это какая-нибудь ORM, то да, похожести будет много.
Что касается проекта топикстартера, то там будет куча очень разного кода, где повторяющихся частей от силы процентов 10.
В основном из повторяющегося это контейнеры, какие-нибудь адаптеры и небольшие низкоуровневые алгоритмы.
Т.е. "кирпичики".
Все, что из них собирается, обычно создается в одном экземпляре и шаблонить там нет смысла — не пригодится. А вот неудобств, типа весь код в .h файле, добавит.

__>В зависимости от сложности уровень абстракции повышается — это цена которую вы платите за сложность. Нет смысла этого пугаться.


Многие помнят Климовскую библиотеку Dockable windows для WTL. Все круто, шаблоны везде, куда ни плюнь. Но отлаживать и расширять это поделие было практически невозможно. Разумный предел должен быть.
_____________________
С уважением,
Stanislav V. Zudin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.