Я в шоке.
От: Denwer Россия  
Дата: 08.03.10 12:02
Оценка: +4 -5 :))) :)))
Последние два месяца прорезюмировал просто толпу соискателей на программистов по с++. Каково было мое удивление что 90% людей не знаю ДЛЯ ЧЕГО НУЖЕН ВИРТУАЛЬНЫЙ ДЕСТРУКТОР. Как такое может быть? Куда делись настоящие программситы, а не оходники за деньгами? Что творится с людьми?
Re: Я в шоке.
От: любой  
Дата: 08.03.10 12:12
Оценка: +1
Здравствуйте, Denwer, Вы писали:

...

Я, например, уже год не работаю. Стал рантье. На достойную работу попасть тяжело. А просто воплощать чьи-то безнадёжные фантазии надоело.
художников никогда не обижал
Re: Я в шоке.
От: ___Avatar___  
Дата: 08.03.10 12:14
Оценка: 25 (6) +2 -17
Здравствуйте, Denwer, Вы писали:

D>Последние два месяца прорезюмировал просто толпу соискателей на программистов по с++. Каково было мое удивление что 90% людей не знаю ДЛЯ ЧЕГО НУЖЕН ВИРТУАЛЬНЫЙ ДЕСТРУКТОР. Как такое может быть? Куда делись настоящие программситы, а не оходники за деньгами? Что творится с людьми?


сейчас объясню в чем фигня
причин несколько
— 90-99% кода в любом проекте не имеют к виртуальным деструкторам никакого отношения, человек сосредотачивается на решении задач работы с данными, бизнес логики и GUI, а не на языковых особенностях
— очень часто готовая иерархия классов с уже прописанными в них виртуальными деструкторами либо получается от архитектора/сеньора, либо автоматически генерится в IDE, либо вообще класс копируется вручную из уже готового класса и всякий ненужный код просто удаляется
— очень часто человек может прийти на проект в середине разработки, когда все классы уже созданы и человеку необходимо решать исключительно задачи бизнес логики и GUI, поэтому на виртуальные деструкторы он внимания не обращает
— я ни разу не видел книги по C++ в которой на первых страницах крупным жирным шрифтом было бы прописано "10/20/30 вещей, которые вы ОБЯЗАНЫ знать про С++, чтобы не делать ляпов" — строго говоря, я не видел такой книги ни по одной области или технологии программировании

а это означает, что новичок просто утопает в море материала и начинает понимать что реально нужно знать лишь к 2-3 году работы в отрасли и посещения 20-30 собеседований, на половине из которых его спросят о виртуальном деструкторе и пр вещах

я например первые 2 года тоже не знал зачем виртуальный деструктор нужен
по всем вышеуказанным причинам
Re[2]: Я в шоке.
От: Denwer Россия  
Дата: 08.03.10 12:17
Оценка:
Здравствуйте, ___Avatar___, Вы писали:

___>я например первые 2 года тоже не знал зачем виртуальный деструктор нужен

___>по всем вышеуказанным причинам

Поправочку сделаю, я имел в виду не начинающих программистов, были даже с 10-15 летним стажем по с++(точнее это они так написали в резюме). Минимум с кем я беседовал, имели опыт более 3 лет по с++.
Re: Я в шоке.
От: PepperPuh  
Дата: 08.03.10 12:19
Оценка: +2
D>Последние два месяца прорезюмировал просто толпу соискателей на программистов по с++. Каково было мое удивление что 90% людей не знаю ДЛЯ ЧЕГО НУЖЕН ВИРТУАЛЬНЫЙ ДЕСТРУКТОР. Как такое может быть? Куда делись настоящие программситы, а не оходники за деньгами? Что творится с людьми?

Так а денег сколько предлагается? Что в вакансии написано? Может это обусловлено условиями, предполагающими, к примеру, студентов подготовительных курсов?

Хотя, если честно, виртуальный деструктор избит уже до состояния такой кровавой каши, что мне казалось даже программисты 1С знают это.
Re[3]: Я в шоке.
От: ___Avatar___  
Дата: 08.03.10 12:25
Оценка: 13 (2) +5 -7 :)
Здравствуйте, Denwer, Вы писали:

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


___>>я например первые 2 года тоже не знал зачем виртуальный деструктор нужен

___>>по всем вышеуказанным причинам

D>Поправочку сделаю, я имел в виду не начинающих программистов, были даже с 10-15 летним стажем по с++(точнее это они так написали в резюме). Минимум с кем я беседовал, имели опыт более 3 лет по с++.


ну и что?
если все эти годы человек занимался GUI или переходом с середины одного проекта на середину другого, то он реально может не знать этого

кроме того, насчет всех этих программерских собеседований мне понравилась одна карикатура на тему того чем отличается любитель науки от настоящего ученого
2 картинки
а) у любителя науки журналист спрашивает "до какого знака вы помните число пи?"
тот отвечает "вчера я выучил число пи до 68-го знака!"
б) у настоящего ученого журналист спрашивает "до какого знака вы помните число пи?"
5 минутная пауза, ученый думает...
затем он сомневаясь и неуверенно переспрашивает журналиста "до первого?..."

так вот... некоторые любители "программерских интервью" напоминают мне этих любителей науки
вполне возможно собеседуемые решали по работе намного более важные (в их конкретной работе на их конкретном месте в фирме) проблемы чем запоминание цели виртуальных деструкторов и числа пи до 68го знака

так что тоже подумайте на тему правильного проведения собеседования
Re[4]: Я в шоке.
От: Denwer Россия  
Дата: 08.03.10 12:34
Оценка: +3 -1
Здравствуйте, ___Avatar___, Вы писали:

___>ну и что?

___>если все эти годы человек занимался GUI или переходом с середины одного проекта на середину другого, то он реально может не знать этого

___>кроме того, насчет всех этих программерских собеседований мне понравилась одна карикатура на тему того чем отличается любитель науки от настоящего ученого

___>2 картинки
___>а) у любителя науки журналист спрашивает "до какого знака вы помните число пи?"
___>тот отвечает "вчера я выучил число пи до 68-го знака!"
___>б) у настоящего ученого журналист спрашивает "до какого знака вы помните число пи?"
___>5 минутная пауза, ученый думает...
___>затем он сомневаясь и неуверенно переспрашивает журналиста "до первого?..."

___>так вот... некоторые любители "программерских интервью" напоминают мне этих любителей науки

___>вполне возможно собеседуемые решали по работе намного более важные (в их конкретной работе на их конкретном месте в фирме) проблемы чем запоминание цели виртуальных деструкторов и числа пи до 68го знака

___>так что тоже подумайте на тему правильного проведения собеседования


Если так рассуждать, то можно нанимать например переводчика, который даже не знает английских букв, но зато он их в процессе изучит. Не знать как работает виртуальный деструктор, даже на саппорте ГУЙ проектов НЕДОПУСТИМО, это считай как азбука для с++. Я не видел не одной бибилотеки для ГУЙ, которая бы не использовала виртуальные деструкторы.Можно не знать многих вещей заковыристых, например что предпочтительнее писать в цикле для STL итератора ++iter или iter++. Но как можно не знать самое важное в программированиии на с++, это непонятно.
Re[2]: Я в шоке.
От: Denwer Россия  
Дата: 08.03.10 12:36
Оценка:
Здравствуйте, PepperPuh, Вы писали:


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


Сначала я этого не спрашивал, думал что это дейтсивтелньо стыдно спросить. Но после некоторого количества интервью я понял, что это многих ставит в тупик, и я просто теперь начинаю с этого вопроса.
Re[2]: Я в шоке.
От: minorlogic Украина  
Дата: 08.03.10 12:51
Оценка: 2 (2) +3
Здравствуйте, ___Avatar___, Вы писали:

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


D>>Последние два месяца прорезюмировал просто толпу соискателей на программистов по с++. Каково было мое удивление что 90% людей не знаю ДЛЯ ЧЕГО НУЖЕН ВИРТУАЛЬНЫЙ ДЕСТРУКТОР. Как такое может быть? Куда делись настоящие программситы, а не оходники за деньгами? Что творится с людьми?


___>сейчас объясню в чем фигня

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

Вы ошибаетесь. Возможно пытаетесь обобщить свой опыт на других. Контрпример, мой текущий проект, и примерно 5 проектов подряд до него.

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

Ошибаетесь, редко.

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

Речь не шла о новичках

___>- я ни разу не видел книги по C++ в которой на первых страницах крупным жирным шрифтом было бы прописано "10/20/30 вещей, которые вы ОБЯЗАНЫ знать про С++, чтобы не делать ляпов" — строго говоря, я не видел такой книги ни по одной области или технологии программировании

Не искали, а как же 50 советов и т.п. ? Там есть четкие правила про виртуальные деструкторы.

___>а это означает, что новичок просто утопает в море материала и начинает понимать что реально нужно знать лишь к 2-3 году работы в отрасли и посещения 20-30 собеседований, на половине из которых его спросят о виртуальном деструкторе и пр вещах

Речь не шла о новичках

___>я например первые 2 года тоже не знал зачем виртуальный деструктор нужен

___>по всем вышеуказанным причинам
Что не характеризует вас как хорошего програмиста на С++.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[5]: Я в шоке.
От: ___Avatar___  
Дата: 08.03.10 12:51
Оценка: 9 (1) +1 -6
Здравствуйте, Denwer, Вы писали:


D>Если так рассуждать, то можно нанимать например переводчика, который даже не знает английских букв, но зато он их в процессе изучит. Не знать как работает виртуальный деструктор, даже на саппорте ГУЙ проектов НЕДОПУСТИМО, это считай как азбука для с++. Я не видел не одной бибилотеки для ГУЙ, которая бы не использовала виртуальные деструкторы.Можно не знать многих вещей заковыристых, например что предпочтительнее писать в цикле для STL итератора ++iter или iter++. Но как можно не знать самое важное в программированиии на с++, это непонятно.


на самом деле, исходя из всех пречисленных мною причин незнания этого факта и моего собственного опыта, аналогия между буквами английского алфавита и виртуальным деструктором в корне неверная
если применять именно языковую аналогию, то это скорее к вопросу где использовать артикль "the", где использовать "a", а где вообще не использовать и рассмотрения этих ситуаций с точки зрения русского языка, в котором артикля вообще нет или же описания разницы между "I would be doing" и "I would have been doing it"

понятно, что для 90%-99% бытовых задач, включая чтение интернет статей и просмотр тв и кино, и (даже!) почти 100% точного перевода всего этого на русский, эти языковые моменты знать не нужно

а вот для перевода литературного текста с английского на русский или же (в случае артиклей) перевода любого текста с русского на английский это знание уже критически необходимо
Re: Я в шоке.
От: minorlogic Украина  
Дата: 08.03.10 12:54
Оценка: +1
Вариантов масса, самое первое что приходит в голову это плохая вакансия.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[6]: Я в шоке.
От: ___Avatar___  
Дата: 08.03.10 12:59
Оценка: 3 (1)
дополнение

в ряде случаев артикль полностью меняет смысл слова people — люди, the people — народ
или же как во французском одно и то же слово pauvre — бедный, если ставить его после слова человек, то оно будет означать материальный статус, а перед словом человек оно означает жалость к человеку (и так прилагательных во французском довольно таки много)

хотя для жизни в соответствующей стране и нормального общения с ее гражданами всего это знать не нужно!
вот туда же относятся и виртуальные деструкторы

не случайно же "язык программирования" называется "язык", а не "теорема программирования" или "строение программирования"
Re[2]: Я в шоке.
От: jazzer Россия Skype: enerjazzer
Дата: 08.03.10 13:00
Оценка: 2 (2) +2 :))
Здравствуйте, ___Avatar___, Вы писали:

___>- я ни разу не видел книги по C++ в которой на первых страницах крупным жирным шрифтом было бы прописано "10/20/30 вещей, которые вы ОБЯЗАНЫ знать про С++, чтобы не делать ляпов" — строго говоря, я не видел такой книги ни по одной области или технологии программировании

А как же Effective C++, Exceptional C++, C++ Coding Standards?

___>а это означает, что новичок просто утопает в море материала и начинает понимать что реально нужно знать лишь к 2-3 году работы в отрасли и посещения 20-30 собеседований, на половине из которых его спросят о виртуальном деструкторе и пр вещах

Новичок должен приходить на работу УЖЕ вооруженный базовыми знаниями о языке, а не изучать его в процессе работы, потому что, как ты правильно заметил выще, на работе надо делать дело, а не заниматься самообразованием.
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: Я в шоке.
От: jazzer Россия Skype: enerjazzer
Дата: 08.03.10 13:03
Оценка: 1 (1) +4
Здравствуйте, Denwer, Вы писали:

D>Последние два месяца прорезюмировал просто толпу соискателей на программистов по с++. Каково было мое удивление что 90% людей не знаю ДЛЯ ЧЕГО НУЖЕН ВИРТУАЛЬНЫЙ ДЕСТРУКТОР. Как такое может быть? Куда делись настоящие программситы, а не оходники за деньгами? Что творится с людьми?


Видимо, "настоящих программистов" ваша вакансия не заинтересовала...
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]: Я в шоке.
От: Vaako Украина  
Дата: 08.03.10 13:04
Оценка:
Здравствуйте, Denwer, Вы писали:

D>Сначала я этого не спрашивал, думал что это дейтсивтелньо стыдно спросить. Но после некоторого количества интервью я понял, что это многих ставит в тупик, и я просто теперь начинаю с этого вопроса.


Это общая тенденция, думаю дело серъезней чем кажется. Сопровождаю проект, так там вместо несколько десятков классов с продуманой иерархией наследования разработчики просто позапихали все в STL. Так что виртуальным деструкторам просто неоткуда появиться. Там даже просто деструкторов не предусмотрено. Похоже вместо класса содержащего набор элементов проще создать вектор и при каждом обращении обращаться к содержимому через итераторы. При этом получается куча векторов хранящих разные структуры, в то время как предметная область явно требует хотя бы примитивной группировка части свойств в базовых классах и систематизации методов доступа к данным. На вопрос а почему так сделано через ж****, отвечают — "там великие люди трудились тебе до них далеко".
Re[3]: Я в шоке.
От: _nikita_ Чехия http://www.regarena.ru
Дата: 08.03.10 13:14
Оценка: +2 :)))
Здравствуйте, jazzer, Вы писали:

J>... на работе надо делать дело, а не заниматься самообразованием.


Это лишь точка зрения работодателя. А точка зрения соискателя с точностью до наоборот
Учение свет, а неучение — чуть свет и на работу.
Re: Я в шоке.
От: Pzz Россия https://github.com/alexpevzner
Дата: 08.03.10 13:18
Оценка: +1
Здравствуйте, Denwer, Вы писали:

D>Последние два месяца прорезюмировал просто толпу соискателей на программистов по с++. Каково было мое удивление что 90% людей не знаю ДЛЯ ЧЕГО НУЖЕН ВИРТУАЛЬНЫЙ ДЕСТРУКТОР. Как такое может быть? Куда делись настоящие программситы, а не оходники за деньгами? Что творится с людьми?


Ну по-хорошему, таких надо научиться отсеивать еще на этапе телефонного собеседования. Хотя все равно, слабых претендентов полно. И что хуже, полно претендентов, которые в достаточной степени владеют всякими там языковыми бантиками, но не способных писать нормальный рабочий код.
Re: Я в шоке.
От: skeptic  
Дата: 08.03.10 13:19
Оценка: 1 (1) +1 -1
Здравствуйте, Denwer, Вы писали:

D>Последние два месяца прорезюмировал просто толпу соискателей на программистов по с++. Каково было мое удивление что 90% людей не знаю ДЛЯ ЧЕГО НУЖЕН ВИРТУАЛЬНЫЙ ДЕСТРУКТОР. Как такое может быть? Куда делись настоящие программситы, а не оходники за деньгами? Что творится с людьми?


Хех, дык потому что совершенствовать надо процесс набора кандидатов на собеседования. Вы их как набираете? Небось поиск по ключевым словам в куче резюме? Очевидно что у этого метода высока вероятность ложного срабатывания, это уже обсуждалось мульён тысяч раз. Вы набираете прежде всего людей, вот с ними и общайтесь, а не с бумажками. И ещё — наличие диплома говорит лишь о наличии диплома, а не о наличии образования. Это так, к слову, ибо сталкивался. В топике говорят мол это и не важно, что человек не знает о виртуальном деструкторе, о том чем отличаются ++i и i++ , типа это неважные детали, от которых надо абстрагироваться в пользу бизнес-логики и прочих шайтан-словечек. Позвольте, так вам шашечки или ехать? Вам кодер нужен или бизнес-логик какой то? Это тоже самое что говорить мол — вот этот дядя Вася не знает как расчитать устойчивость плотины но зато знает какие материалы нынче модно для постройки оной юзать, поэтому он у нас будет главный инженер. Абсурд? Абсурд! Программист должен любить свой язык, а если программист любит свой язык он его изучает, не для галочки а для себя, это кайф такой, хотя не мне вам говорить наверное...) Изучать значит много читать, и прежде всего классиков, для С++ это Страуструп, Майерс, Саттер, Джосаттис(встречал разные способы произношения фамилии — этот более простой )) и т.д...и вот у них как раз написано и о виртуальных деструкторах, и о прединкриментах и о других интересных штуках =) Так что это за программист такой который и не слыхивал о не освещённых в "C++ для полных кретинов" вещах???
Re[5]: Я в шоке.
От: jhfrek Россия  
Дата: 08.03.10 13:22
Оценка: 14 (3) +2 -4
Здравствуйте, Denwer, Вы писали:

D>Если так рассуждать, то можно нанимать например переводчика, который даже не знает английских букв


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

А еще есть великие музыканты не знающие нотной грамоты — вы, с переводчиком, переводите дискуссию на проигрышное для вас поле.
Re: Я в шоке.
От: Handie  
Дата: 08.03.10 13:49
Оценка: +1
Здравствуйте, Denwer, Вы писали:

D>Последние два месяца прорезюмировал просто толпу соискателей на программистов по с++. Каково было мое удивление что 90% людей не знаю ДЛЯ ЧЕГО НУЖЕН ВИРТУАЛЬНЫЙ ДЕСТРУКТОР. Как такое может быть? Куда делись настоящие программситы, а не оходники за деньгами? Что творится с людьми?


Это один из самых заезженных вопросов на собеседованиях. По частоте задается примерно как реверс строки, который я пишу уже по памяти.

Есть программеры которые всегда пишут все деструкторы виртуальными, хотя совершенно не понимают а для чего это надо.

Есть несколько причин почему очень часто не надо писать не только виртуальных деструкторов, а деструкторов вообще. При применении смарт поинтеров дефолтный деструктор уничтожит все аллокации в хипе автоматом. Не надо объявлять деструктор виртуальным, если он уже объявлен виртуальным в базовом классе. При применении "всеобъемлющих" фреймворков типа Qt или boost, надобность проектирования "базовых" классов возникает не очень часто.

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