я программист c# и не знаю, чем дженерики отличаются от шаблонов ;)
(гугл говорит, что шаблоны - это русский перевод слова generic, но на практике такое использование термина ни разу не встречал)
мне почему-то кажется, что он имеет в виду то, что шаблоны это что-то типа макросов (как в c++), т.е. на N использований шаблонного класса создастся N разных копий, а дженерики это обобщенное программирование (как в java), и на N использований реально будет 1 универсальный класс
по крайней мере других отличий придумать не могу
ну я лишь объяснил, как понял мысли Compilation, и даже угадал.
просто шаблоны и дженерики действительно похожие понятия, и наверно все таки стоит уточнять, шаблоны из c++ и дженерики из {c#,java,...}. по крайней мере фраз "шаблоны из java" или "дженерики из c++" я не слышал, а наоборот вполне
почему он считает, что программист c# должен знать шаблоны из c++ я точно не знаю, но опять же могу предположить, что зная c# знать c++ тоже надо бы, хотя бы основы.
Ну, может в вашей беседе был понятен контекст. А то если бы вот так сходу меня на собеседовании бы спросили как у вас в первом комменте - я бы сильно задумался, надо ли мне там работать.
Ну и так, для общего развития - вот что именно вам дает наличествующее в голове знание, что дженерики райнтайм байндед?
Может такое отношение результат учёбы. Весь первый семестр нам запрещали использовать функции и классы из библиотек, к примеру одна из лабораторных была на тему реализации одного из классов STL. Аруметировали это фразой "программист это некто больший, нежели простой пользователь библиотек".
Конечно можно опять сказать "зачем эти знания", но как по мне именно в знание тонкостей и особенностей лежит явление професионализма, можно годами как обезьяна делать программы из готовых решений, но это не программирование.
Ну, может быть. Сначала хотел поспорить, но потом решил, что что-то в этом есть. Встречал проблемы у людей, которые не знали как внутри работает async/await, поэтому им было очень сложно отловить косяки типа async void методов. Ну и еще пара примеров наберется.
Шаблоны в C++ связываются с типами на этапе компиляции, обобщеные типы в C# же хотя и очень похожи на них, но связывание происходит на этапе выполнения. Шаблоны компилируются для каждого типа отдельно(новые сущности), обобщеные типы всего раз и работают для любого типа
Студент 4 курса. Знания из книжек.
То есть ваш вопрос был сродни "скажи чем отличаются ложка и сепулька", да? Причем тут шаблоны из c++?
Подозреваю, что и про асинхронность вопрос был какой-нить такого же рода ;)
Ага. Просто из контекста товарища выше про с++ было вообще не догадаться без последующего пояснения)
Вопрос про асинхронность "Для чего вообще её использовать? И как это выглядит в #?". На мой взгляд вопросы уровня "зачем в машине коробка передач?"
Самое занятное, что эти вопросы не имеют смысла, потому что зачем это знать, если при надобности можно посмотреть в гугле?
По описанию выше сложилось впечатление, что разговор о статических и не статических методах. Зачем вы это завернули в понятие "шаблона" - непонятно, потому что под шаблонами чаще всего подразумевают паттерны.
он завернул это в понятие шаблона, потому что это и называется шаблоном в c++
но вообще для тех, кто не в контексте, уточнять стоит, да)
под шаблонами чаще всего подразумевают паттерны
видимо это сильно зависит от того, кто и где подразумевает
Pattern обычно подразумевает Design pattern. И означает паттерны проектирования ПО.
Template же именно шаблон как механизм С++ или именно в смысле шаблона алгоритма.
Generic, снова означает немного другой механизм, других языков и является производным от Generic programming.
И на русском тоже вполне выражены эти различия паттерн, шаблон, дженерик.
И на десерт. Behavioral pattern группа паттернов взаимодействия объектов. Один из них Template method, но отношения к обобщеному программированию он не имеет.
По какой причине сеньор, не знает отличия между терминами и считает шаблоны и паттерны схожими понятиями мне не ясно. Тем более что из контекста "дженериков от шаблонов" вполне ясно что имеется ввиду явно схожие понятия
Аа, понятно. Я на C# пишу, но там это называется обобщенные типы (Generic Type).
А можно в двух словах в чем разница на ++?
Давно пора, а то те вообще уже охренели, сами фишку не рубят - но при этом правила выставляют.