beldmit: (Программизм)
[personal profile] beldmit
Вдогонку к этой
и немного этой записям. И еще немного к боковому хвосту у Витуса.

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

Так вот, господа. Когда вам показывают такой пример (если он выходит за пределы разумного понимания языка и знания ключевых слов или общепринятых идиом), то скорее всего - одно из двух.

1. Собеседующий пытается срезать соискателя. То есть самоутвердиться. Вам нужен такой начальник?
2. Код реально используется в проекте? Вы действительно хотите это поддерживать?

Да, и главное, без чего пп.1-2 не действуют. Понимать, что предъявленный пример собой представляет - все-таки надо. Чтобы было ясно, что объявлена таки переменная, а не функция.

Date: 2009-03-04 04:06 pm (UTC)
From: [identity profile] oldbukh.livejournal.com
для понимания языка достаточно спросить очень простую вещь, которая только кажется зубодробительной.

Зачем нужно вот такое макроопределение
#define MACRO(a,b) (&((b*)NULL)->a)

Работает как из пушки :)

Date: 2009-03-04 04:10 pm (UTC)
From: [identity profile] oldbukh.livejournal.com
или чем плох вот такой код?

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. В плюсовом синтаксисе могу ошибаться :) Это не на подкорке

Date: 2009-03-04 05:04 pm (UTC)
From: [identity profile] besm6.livejournal.com
Работает как из пушки :)

Из той самой, из которой нужно пристрелить того, кому эта информация в программе понадобилась?

Date: 2009-03-04 08:45 pm (UTC)
ext_659502: (Default)
From: [identity profile] some41.livejournal.com
это, если что, макрос offsetof из стандартной библиотеки

Date: 2009-03-05 11:44 am (UTC)
From: [identity profile] besm6.livejournal.com
Это еще не повод им пользоваться... В смысле - необходимость его использования, скорее всего, свидетельствует о грубой архитектурной ошибке.

Date: 2009-03-04 07:36 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Типа смещение элемента a в структуре/классе b? Убивать.

Date: 2009-03-05 04:39 am (UTC)
From: [identity profile] oldbukh.livejournal.com
не убивать, а пользоваться. Реально полезный инструмент :)

Date: 2009-03-05 04:40 am (UTC)
From: [identity profile] oldbukh.livejournal.com
называется в gcc offsetof, а понимание языка демонстрирует весьма хорошо

Date: 2009-03-05 09:53 am (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan
offsetof — это стандартный макрос C/C++. Ему можно обращаться через нулевой указатель, поскольку он пишется к конкретному компилятору. Аналогичный макрос в пользовательском коде — неопределённое поведение (из-за разыменования нулевого указателя).

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 10th, 2026 04:09 pm
Powered by Dreamwidth Studios