Entry tags:
И еще о поддерживаемости кода
Вдогонку к этой
и немного этой записям. И еще немного к боковому хвосту у Витуса.
Один из типичных приемов собеседования с программистами - показ зубодробительной конструкции на языке, на котором собирается программировать соискатель, и вопрос, что она делает. Наиболее часто мне попадался C-шный пример, когда вместо переменной объявлялась функция.
Так вот, господа. Когда вам показывают такой пример (если он выходит за пределы разумного понимания языка и знания ключевых слов или общепринятых идиом), то скорее всего - одно из двух.
1. Собеседующий пытается срезать соискателя. То есть самоутвердиться. Вам нужен такой начальник?
2. Код реально используется в проекте? Вы действительно хотите это поддерживать?
Да, и главное, без чего пп.1-2 не действуют. Понимать, что предъявленный пример собой представляет - все-таки надо. Чтобы было ясно, что объявлена таки переменная, а не функция.
и немного этой записям. И еще немного к боковому хвосту у Витуса.
Один из типичных приемов собеседования с программистами - показ зубодробительной конструкции на языке, на котором собирается программировать соискатель, и вопрос, что она делает. Наиболее часто мне попадался C-шный пример, когда вместо переменной объявлялась функция.
Так вот, господа. Когда вам показывают такой пример (если он выходит за пределы разумного понимания языка и знания ключевых слов или общепринятых идиом), то скорее всего - одно из двух.
1. Собеседующий пытается срезать соискателя. То есть самоутвердиться. Вам нужен такой начальник?
2. Код реально используется в проекте? Вы действительно хотите это поддерживать?
Да, и главное, без чего пп.1-2 не действуют. Понимать, что предъявленный пример собой представляет - все-таки надо. Чтобы было ясно, что объявлена таки переменная, а не функция.
no subject
no subject
(no subject)
no subject
no subject
no subject
c=3;
d=++c++;
printf("%d\n",d);
Но всегда подразумеваю, что если кто-то правильно ответит, то это плюс, а не минус, если не ответит. Отвечают крайне-крайне редко.
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Вы же не считаете, что большинство собеседующих не понимают этих трёх тезисов?
no subject
no subject
1. Если нанимают программиста на C++ (то есть весь код у нас плюсовый и всё такое), то как--то логично проверить, знает ли человек подводные камни этого самого C++. Тем более, что приведенный пример может получиться и сам по себе.
2. Иногда приходится лезть в чужой код. Вообще чужой, а уж что бывает в чужом коде никому объяснять не надо.
3. Я не очень понимаю, чем это принципиально отличается от предложения отсортировать терабайтный файл, если у нас есть только 2 гига памяти.
no subject
2. Согласен. А с другой стороны - стоит ли связываться с этим чужим кодом?
3. Тут несколько сложнее. В идеале стоит думать о том, что ресурсов не хватит объективно. И описывать границы применения предложенного решения. Любого.
(no subject)
(no subject)
no subject
no subject
(no subject)
no subject
Зачем нужно вот такое макроопределение
#define MACRO(a,b) (&((b*)NULL)->a)
Работает как из пушки :)
no subject
void print(std::vector& v)
{
for (unsigned i = 0; i < v.size(); i++)
printf("%d\n", v[i]);
}
Или чем STL-ный vector хуже чем имплементация списков из /usr/include/linux/list.h?
P.S. В плюсовом синтаксисе могу ошибаться :) Это не на подкорке
no subject
Из той самой, из которой нужно пристрелить того, кому эта информация в программе понадобилась?
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
no subject
А с зубодробительными конструкциями на собеседованиях обычно сразу отвечаю, что выпорол бы того, кто это написал, и заставил переписать более просто, ибо пишется - раз, а поддерживается потом - доооолго ...
Но любителей подсунуть что-нить на undefined behavior, и заставляющих объяснить почему неправильно ... или всякие неоднозначные штуковины ... Я вот считаю что проще сказать что не правильно, и как - правильно, чем объяснять ... С другой стороны - собеседование, это ж взаимный экзамен, проще отсеять невменяемое место сразу, чем потом мучаться :)
no subject
Ты, кстати, окопался где-нибудь?
(no subject)
no subject
Попробуй применить твои выводы к этому случаю. а) Он пытался срезать учеников. Нам нужен такой преподаватель? б) Вы действительно хотите заниматься такой наукой, где могут спрашивать столь сложные вещи?
А когда речь доходит до дела, как бы мы отнеслись к медикам, не сдавшим такой коллоквиум?
no subject
если бы людям можно было менять органы, как блоки в программах, я бы тоже ответил - "я бы этот дефектный череп поменял бы на нормальный", а не стал бы рассуждать как креативней пару этих дырок прокрутить ...
(no subject)
no subject
... За окном сверкает пол-луны ...
no subject
main () {}
(no subject)
(no subject)
(no subject)
no subject
no subject
У меня вообще проблемы с такими вопросами - понимать я многие вещи понимаю, непонятных конструкций избегаю как активно, так и пассивно, а синтаксис помню так себе - указатель на функцию для меня каждый раз является основанием заглянуть в Страуструпа. И ничего, код писал вполне успешно.
(no subject)
(no subject)
(no subject)
no subject
Но есть тут некоторое "но".
Токость тут в том, что твой пост, как мне кажется, предполагает, что данный программист заведомо достаточно владеет языком настолько, что его мнение о "зубодробительности" конструкций заведомо верно. Т.е. того, что кто-то данными конструкциями пользуется легко, как говорится "играючи" (т.е. получает преимущества таких конструкций, не страдая от ожидаемых тобой недостатков), и что это остижимо даже без смены прошивки собственного мозга - ты уже не допускаешь? Да, конечно, ответ типа: "Я просто не считаю для себя нужным подниматься на такой уровень виртуозности, потому что за тоже время я луше освою что-то более востребованное на рынке," -- тоже принимается (и даже, сажу честно, ожидается ;) ).
no subject
Я, например, долго не любил конструкцию a?b:c; И сейчас недолюбливаю. Понимать я ее прекрасно понимаю, но эта конструкция, в отличие от честного if-а, неустойчива к малым воздействиям типа добавления отладочной печати.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
Здесь идет речь о псевдоидеомах, которые чаще всего - "выпендрись как я".
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Мне самому нравятся всякие красивости языка, но задавать их на собеседовании? Уж нет.