Templates
От: smeeld  
Дата: 02.07.18 11:42
Оценка: -1 :)
Заметил, что у большинства практикующих C++ достаточно негативное отношение к шаблонам в CPP. Речь идёт не о использовании std или boost, которые состоят из таковых процентов на 80, а о написании кода с активным применением параметризации функций и типов. Это многими считается чуть ли не признаком недостатка квалификации, типа матёрый плюсовик всегда найдёт способ расписать без создания параметризованных типов, и вообще найдёт способ писать на C++ как можно проще. Это вообще что такое? Если принять это мнение за справедливое, то получается, что std и boost писали джуны несмышлённые и не знающие как просто писать на CPP?
Re: Templates
От: niXman Ниоткуда https://github.com/niXman
Дата: 02.07.18 11:45
Оценка: +2
Здравствуйте, smeeld, Вы писали:

S>Заметил, что у большинства практикующих C++ достаточно негативное отношение к шаблонам в CPP. Речь идёт не о использовании std или boost, которые состоят из таковых процентов на 80, а о написании кода с активным применением параметризации функций и типов. Это многими считается чуть ли не признаком недостатка квалификации, типа матёрый плюсовик всегда найдёт способ расписать без создания параметризованных типов, и вообще найдёт способ писать на C++ как можно проще.

впервые такое слышу =)

S>Это вообще что такое?

выдавание желаемого за действительное
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: Templates
От: lpd Черногория  
Дата: 02.07.18 11:52
Оценка: +3 -1
Здравствуйте, smeeld, Вы писали:

S>Заметил, что у большинства практикующих C++ достаточно негативное отношение к шаблонам в CPP.

Не вижу критических достоинств шаблонов, кроме случая контейнеров. Некоторое ускорение, про которое часто здесь пишут, не считаю стоящим усложнения кода.

S>Это вообще что такое? Если принять это мнение за справедливое, то получается, что std и boost писали джуны несмышлённые и не знающие как просто писать на CPP?

Для меня язык программирования — это только инструмент, который должен быть простым, а возможностей классического C++(с умеренными шаблонами) мне достаточно. Должен сказать, что Александреску и прочих фанатиков почти никогда не читал, т.к. не нравится лес из скобочек.
Кому-то нравится компиляторы писать, кому-то базы данных. Мне все это скучно, и нравится заниматься низкоуровневым кодом на C. Так получилось, что в комитете C++ засилье любителей языков программирования как искусства, а не практиков — и они выпускают новые стандарты C++ с новыми фичами шаблонов.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Отредактировано 02.07.2018 11:57 lpd . Предыдущая версия . Еще …
Отредактировано 02.07.2018 11:54 lpd . Предыдущая версия .
Отредактировано 02.07.2018 11:53 lpd . Предыдущая версия .
Re: Templates
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 02.07.18 11:55
Оценка: +4 -1
Здравствуйте, smeeld, Вы писали:

S>Это многими считается чуть ли не признаком недостатка квалификации, типа матёрый плюсовик всегда найдёт способ расписать без создания параметризованных типов, и вообще найдёт способ писать на C++ как можно проще.

Всё наооборот. Если плюсовик не умеет использовать шаблоны, то он неквалифицирован.
Sic luceat lux!
Re[2]: Templates
От: lpd Черногория  
Дата: 02.07.18 11:58
Оценка: +1 -1
Здравствуйте, Kernan, Вы писали:

K>Всё наооборот. Если плюсовик не умеет использовать шаблоны, то он неквалифицирован.


Можно привести большой список того, что нужно уметь квалифицированному программисту, и в нем будет множество гораздо более важных вещей, чем шаблоны или C++17.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Re: Templates
От: koenig  
Дата: 02.07.18 12:02
Оценка:
S>Заметил, что у большинства практикующих C++ достаточно негативное отношение к шаблонам в CPP. Речь идёт не о использовании std или boost, которые состоят из таковых процентов на 80, а о написании кода с активным применением параметризации функций и типов. Это многими считается чуть ли не признаком недостатка квалификации, типа матёрый плюсовик всегда найдёт способ расписать без создания параметризованных типов, и вообще найдёт способ писать на C++ как можно проще. Это вообще что такое? Если принять это мнение за справедливое, то получается, что std и boost писали джуны несмышлённые и не знающие как просто писать на CPP?

лет так под 25 назад плюсовые компиляторы плохо работали с шаблонами
это нанесло глубокую душевную травму программистам тех времен, и они шаблоны избегали
я уже больше 15 лет на них ничего не писал, и к тому времени когда я их забросил — с шаблонами всё там было хорошо (ну разве что сообщения об ошибках суровые)
это либо динозавры, либо люди покусанные динозаврами
Re[3]: Templates
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 02.07.18 12:05
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>Можно привести большой список того, что нужно уметь квалифицированному программисту, и в нем будет множество гораздо более важных вещей, чем шаблоны или C++17.

Мы говорим о практикующем программисте на С++, а не сферическом программисте в вакууме.
Sic luceat lux!
Re: Templates
От: kov_serg Россия  
Дата: 02.07.18 12:07
Оценка: 6 (1) +3
Здравствуйте, smeeld, Вы писали:

S>Заметил, что у большинства практикующих C++ достаточно негативное отношение к шаблонам в CPP. Речь идёт не о использовании std или boost, которые состоят из таковых процентов на 80, а о написании кода с активным применением параметризации функций и типов.

Не смешивайте мягкое с тёплым. Когда пишут много кода он должен быть простым, понятным и хорошо структурированным, что бы его могли поддерживать разные люди. Иначе сложность будет расти экспоненциально и всё встанет. Шаблоны тут ни причем. А вот использование любого инструмента только ради того чтоб использовать пораждает груть и печаль.

S>Это многими считается чуть ли не признаком недостатка квалификации, типа матёрый плюсовик всегда найдёт способ расписать без создания параметризованных типов, и вообще найдёт способ писать на C++ как можно проще. Это вообще что такое?

Это везде так, человек который знает как оно должно быть и где разложены грабли может написать проще и короче, чем тот кто с такой задаче сталкивается в первые.

S>Если принять это мнение за справедливое, то получается, что std и boost писали джуны несмышлённые и не знающие как просто писать на CPP?

Если в ваше логической цепочке получается противоречие значит исходные предположения скорее всего не верны.
Re[4]: Templates
От: lpd Черногория  
Дата: 02.07.18 12:14
Оценка: 1 (1) +3 -3 :)
Здравствуйте, Kernan, Вы писали:

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


lpd>>Можно привести большой список того, что нужно уметь квалифицированному программисту, и в нем будет множество гораздо более важных вещей, чем шаблоны или C++17.

K>Мы говорим о практикующем программисте на С++, а не сферическом программисте в вакууме.

Как раз логика 'лучший программист лучше знает язык программирования' звучит несколько сферично. А на практике практикующий программист C++ получит больше от изучения баз данных, устройства ОС и электроники, скриптовых языков, или других технологий. А когда он это изучит, для проекта будет важнее архитектура кода, который он пишет, чем использование сложных шаблонов или других фич C++17.
Для программиста C++ главное вовсе не C++.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Re: Templates
От: Qbit86 Кипр
Дата: 02.07.18 12:24
Оценка: 1 (1) +6 :)
Здравствуйте, smeeld, Вы писали:

S>Это вообще что такое?


Речь идёт о трёх стадиях владения шаблонами: не уметь использовать, уметь использовать, уметь не использовать.

S>получается, что std и boost писали джуны несмышлённые и не знающие как просто писать на CPP?


Авторы STL и Boost находятся, конечно, на третьей стадии. Просто они пишут библиотеки повторно используемого кода. Они должны быть обобщёнными и гибкими в ущерб другим характеристикам. Для прикладного кода важнее простота понимания и поддержки кодобазы. Например, когда движок игры написан на float'ах, а не на параметризованных типах, обмазанных трейтами и тайпдефами для параметров шаблона. Или когда для полиморфизма используют простые виртуальные функции с динамичекой диспетчеризацией, а не CRTP-подобные конструкции ради статической диспетчеризации.
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Templates
От: smeeld  
Дата: 02.07.18 13:22
Оценка:
Здравствуйте, Qbit86, Вы писали:

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


S>>Это вообще что такое?


Q>Речь идёт о трёх стадиях владения шаблонами: не уметь использовать, уметь использовать, уметь не использовать.


Не стоит тот прикол, придуманный касательно индексов SQL БД, (не знать, что нужно, знать что нужно и знать когда не нужно) распространять на плюсы. Использование шаблонов жутко удобно, в том числе и для упомянутой Вами возможности повторного использования кода (а это бывает необходимым чуть более чем всегда, не только лишь при разработке сущностей STD), также замечательно когда нет необходимости привязываться к конкретным типам, где-то определяемым и описываемым-ты просто вводишь парвметр, за которым может стоять что угодно и пр. подобное. Это жутко удобно. То самое "умение не использовать шаблоны"-это проще чем их использовать, естественно, так что это не есть скил, больший чем умение использовать шаблоны. Вот только решение не использовать шаблоны чаще всего появляется именно вследствии того самого господствующего негативного отношения к шаблонам и ничем больше.
Re[3]: Templates
От: Qbit86 Кипр
Дата: 02.07.18 13:55
Оценка: 6 (1) +2
Здравствуйте, smeeld, Вы писали:

S>ты просто вводишь парвметр, за которым может стоять что угодно и пр. подобное. Это жутко удобно.


Нельзя просто так взять и ввести параметр, за которым может стоять что угодно. У ограниченного полиморфизма важны э-э-э... ограничения.

S>Вот только решение не использовать шаблоны чаще всего появляется именно вследствии того самого господствующего негативного отношения к шаблонам и ничем больше.


Или наоборот: решение использовать шаблоны появляется вследствие желания выпендриться, а не оптимально решить задачу.
Глаза у меня добрые, но рубашка — смирительная!
Re[4]: Templates
От: smeeld  
Дата: 02.07.18 14:05
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Нельзя просто так взять и ввести параметр, за которым может стоять что угодно. У ограниченного полиморфизма важны э-э-э... ограничения.


Понятно, что у того чего угодно должны быть строго определённые методы, но в остальном это действительно что угодно.

Q>Или наоборот: решение использовать шаблоны появляется вследствие желания выпендриться.


А если это тупо удобно?
Re[5]: Templates
От: XuMuK Россия  
Дата: 03.07.18 09:44
Оценка: +4
Здравствуйте, lpd, Вы писали:

lpd>Как раз логика 'лучший программист лучше знает язык программирования' звучит несколько сферично. А на практике практикующий программист C++ получит больше от изучения баз данных, устройства ОС и электроники, скриптовых языков, или других технологий. А когда он это изучит, для проекта будет важнее архитектура кода, который он пишет, чем использование сложных шаблонов или других фич C++17.

lpd>Для программиста C++ главное вовсе не C++.

Все это надо знать программисту на любом языке, и ортогонально знанию С++. Исходный тезис о том, что программист С++ не знающий шаблоны неквалифицирован, от рассуждений о БД и ОС не меняется.
Re[6]: Templates
От: lpd Черногория  
Дата: 03.07.18 10:47
Оценка: -3
Здравствуйте, XuMuK, Вы писали:

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


lpd>>Для программиста C++ главное вовсе не C++.


XMK>Все это надо знать программисту на любом языке, и ортогонально знанию С++. Исходный тезис о том, что программист С++ не знающий шаблоны неквалифицирован, от рассуждений о БД и ОС не меняется.


"Програмист C++" — это термин из текстов вакансий. Звучит как 'инженер Autocad 15.0' или 'художник Photoshop': можно досконально знать Autocad, но ничего не понимать в технике. При этом польза от тонкостей Autocad может и есть, а вот в современном C++ многие фичи я бы ставил под сомнение.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Re: Templates
От: chaotic-kotik  
Дата: 04.07.18 06:38
Оценка: 1 (1) +3
Здравствуйте, smeeld, Вы писали:

S>Заметил, что у большинства практикующих C++ достаточно негативное отношение к шаблонам в CPP. Речь идёт не о использовании std или boost, которые состоят из таковых процентов на 80, а о написании кода с активным применением параметризации функций и типов. Это многими считается чуть ли не признаком недостатка квалификации, типа матёрый плюсовик всегда найдёт способ расписать без создания параметризованных типов, и вообще найдёт способ писать на C++ как можно проще.


Матерый плюсовик пишет не для удобства написания, а для удобства последующего чтения и поддержки.
Я очень часто встречал ситуации, когда тип параметризован, из-за этого код живет в *.h, любое его изменение приводит к перекомпиляции половины приложения, clang analyzer не кажет баги, в IDE не работает автодополнение. При этом всегда используется один и тот же параметр! На вопрос — а чО так, разработчик отвечает — а вдруг потом нужно будет? Преждевременная генерализация, это как преждевременная эякуляция, только хуже, т.к. за последнее не уволняют с работы.
Re: Templates
От: chaotic-kotik  
Дата: 04.07.18 06:48
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Если принять это мнение за справедливое, то получается, что std и boost писали джуны несмышлённые и не знающие как просто писать на CPP?


Есть еще такая тема, что разработчик начинает пихать кругом шаблоны для оптимизации. Пример, есть метод Foo::bar(int c), при этом с — константа, в коде везде вызывается как-то так — "foo.bar(CONST_VAL)". Чувак оптимизирует, делая Foo — шаблоном типа template<int C> Foo ...; На самом деле это булшит, т.к. благодаря constant propagation и инлайнингу, оба варианта отличаться не будут, ничего в метод передаваться не будет в обоих случаях.
Re[2]: Templates
От: night beast СССР  
Дата: 04.07.18 06:53
Оценка: +1
Здравствуйте, chaotic-kotik, Вы писали:

S>>Если принять это мнение за справедливое, то получается, что std и boost писали джуны несмышлённые и не знающие как просто писать на CPP?


CK>Есть еще такая тема, что разработчик начинает пихать кругом шаблоны для оптимизации. Пример, есть метод Foo::bar(int c), при этом с — константа, в коде везде вызывается как-то так — "foo.bar(CONST_VAL)". Чувак оптимизирует, делая Foo — шаблоном типа template<int C> Foo ...; На самом деле это булшит, т.к. благодаря constant propagation и инлайнингу, оба варианта отличаться не будут, ничего в метод передаваться не будет в обоих случаях.



более глупый пример трудно придумать...
Re[2]: Templates
От: T4r4sB Россия  
Дата: 04.07.18 08:22
Оценка: +1
Здравствуйте, Kernan, Вы писали:

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


S>>Это многими считается чуть ли не признаком недостатка квалификации, типа матёрый плюсовик всегда найдёт способ расписать без создания параметризованных типов, и вообще найдёт способ писать на C++ как можно проще.

K>Всё наооборот. Если плюсовик не умеет использовать шаблоны, то он неквалифицирован.
Только чтоб считаться гуру, то помимо умения использования шаблонов нужно ещё умение неиспользования шаблонов.
Re[3]: Templates
От: smeeld  
Дата: 04.07.18 08:52
Оценка:
Здравствуйте, night beast, Вы писали:

NB>

NB>более глупый пример трудно придумать...

Это типичный довод нелюбителя шаблонов.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.