издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 19:10
Оценка: -13 :))
Hi,

Вчера сам собой придумался пример кода для запугивания
претендентов на собеседовании:

#include <iostream>
int main()
{
switch(0) default: std::cout << "Hello World!" << std::endl;
};

Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,
то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
то почему и что будет делать ? Компилятор юзать нельзя.

Уже жду следующей команды студентов, желающих пособеседоваться.

Mikhail
Posted via RSDN NNTP Server 2.0
Re: издевательства над switch-ем на собеседовани
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 04.12.05 19:25
Оценка: 1 (1) +5 :)))
Здравствуйте, kittown, Вы писали:

K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ?


Претенденты, надо полагать, на разработку C++ компилятора.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: издевательства над switch-ем на собеседовани
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 04.12.05 19:26
Оценка: 1 (1) +4
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
K>то почему и что будет делать ? Компилятор юзать нельзя.

K>Уже жду следующей команды студентов, желающих пособеседоваться.


K>Mikhail


Хм, а какой конструктивный вывод можно сделать о разнице между студентами,
справившимися с этим заданием и не справившимися?
-- Андрей
Re: издевательства над switch-ем на собеседовани
От: Сергей Мухин Россия  
Дата: 04.12.05 19:27
Оценка: 6 (1) +2 -2
Здравствуйте, kittown, Вы писали:

K>Hi,


на RSDN принято писать по-русски. Это также отражено в правилах.

K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
K>то почему и что будет делать ? Компилятор юзать нельзя.

K>Уже жду следующей команды студентов, желающих пособеседоваться.


K>Mikhail


вот этого Вчера Сама я бы поубивал.

Этот претендент работать тоже будет без компилятора?

Уж если рассматривать это убожество, то только в таком аспекте. как быстро (при наличии среды привычной претеденту) он откомпилирует без ошибок (без использования комментариев ).
---
С уважением,
Сергей Мухин
Re: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 04.12.05 19:28
Оценка: +2
Здравствуйте, kittown, Вы писали:

K>Вопрос претендентам — скомпилируется ли ?


"Обожаю" такие вопросы. Скомпилируется ли чем? По хорошему вопрос тогда уж должен звучать примерно так: "валидная ли это программа с точки зрения последнего стандарта С++?"
Re: издевательства над switch-ем на собеседовани
От: alexsoff Россия  
Дата: 04.12.05 19:35
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K> switch(0) default: std::cout << "Hello World!" << std::endl;


if (0); else std::cout << "Hello World!" << std::endl;
Вы это имели ввиду?
Да там еще return 0, не хватает.
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 19:42
Оценка:
eao197 wrote:
>
> K>Вчера сам собой придумался пример кода для запугивания
> K>претендентов на собеседовании:
>
> K>#include <iostream>
> K>int main()
> K>{
> K> switch(0) default: std::cout << "Hello World!" << std::endl;
> K>};
>
> K>Вопрос претендентам — скомпилируется ли ?
>
> Претенденты, надо полагать, на разработку C++ компилятора.

Претенденты на офигительное признание и бесплатное обучение.
Для адекватных кадров, плохо знающих язык — просто приведение
примера с пояснением.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 19:48
Оценка:
alexsoff wrote:
>
> K>Вчера сам собой придумался пример кода для запугивания
> K>претендентов на собеседовании:
>
> K> switch(0) default: std::cout << "Hello World!" << std::endl;
>
> if (0); else std::cout << "Hello World!" << std::endl;
> Вы это имели ввиду?

Тоже красиво.

> Да там еще return 0, не хватает.


В main ? Зачем ? Хотя, для старых компиляторов — можно и поставить.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 19:57
Оценка: -6
Сергей Мухин wrote:
> K>Hi,
>
> на RSDN принято писать по-русски. Это также отражено в правилах.

Нашли к чему придраться.

> вот этого Вчера Сама я бы поубивал.

>
> Этот претендент работать тоже будет без компилятора?

Нет, этот претендент должен показать ход рассуждений.
Либо сдаться.

> Уж если рассматривать это убожество, то только в таком аспекте. как

> быстро (при наличии среды привычной претеденту) он откомпилирует без
> ошибок (без использования комментариев ).

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

Приблизительный уровень знаний, нужный для непробиваемости
подобными вещами — c++ faq lite + cpp faq book ver2 + cuj
за несколько лет (начиная с ~1998, чтобы не расходиться
со стандартом)

Mikhail
Posted via RSDN NNTP Server 2.0
Re[3]: издевательства над switch-ем на собеседовани
От: alexsoff Россия  
Дата: 04.12.05 20:00
Оценка:
Здравствуйте, kittown, Вы писали:

>> Да там еще return 0, не хватает.


K>В main ? Зачем ? Хотя, для старых компиляторов — можно и поставить.

Да чтоб без warning`ов,а то всегда настроение портят...
Re[4]: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 04.12.05 20:03
Оценка:
Здравствуйте, alexsoff, Вы писали:

>>> Да там еще return 0, не хватает.

K>>В main ? Зачем ? Хотя, для старых компиляторов — можно и поставить.
A>Да чтоб без warning`ов,а то всегда настроение портят...

Кстати, я что-то торможу: почему указаный пример g++ компилирует без warning'ов, а gcc — честно его выдает (после замены кода на C, понятно)?
Re: издевательства над switch-ем на собеседовани
От: pavel_turbin  
Дата: 04.12.05 20:06
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
K>то почему и что будет делать ? Компилятор юзать нельзя.

спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.
Re: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:23
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
K>то почему и что будет делать ? Компилятор юзать нельзя.

Ну вопрос то не особо сложный.
Если говорить про switch, то такая конструкция допустима, выведет Hello World! Не вижу в этом сложностей на самом деле и издевательств.
Компилятором не пользовался при ответе
Вот если Duff's device подсунуть на собеседовании, то это издевательство.
Но вот целиком программа не корректна, так как нельзя ставить точку с запятой, после тела функции. Но это скорее всего опечятка.
Re: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:24
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
K>то почему и что будет делать ? Компилятор юзать нельзя.

K>Уже жду следующей команды студентов, желающих пособеседоваться.


void copy(T* po, T const* pi, std::size_t len)
{
    std::size_t len8 = len / 8;

    switch(len % 8)
        do
        {
            *po++ = *pi++;
case 7:     *po++ = *pi++;
case 6:     *po++ = *pi++;
case 5:     *po++ = *pi++;
case 4:     *po++ = *pi++;
case 3:     *po++ = *pi++;
case 2:     *po++ = *pi++;
case 1:     *po++ = *pi++;
case 0:
        } while(len8--);
}


С уважением, Роман.
До последнего не верил в пирамиду Лебедева.
Re[2]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 04.12.05 20:24
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


Стандартное, что приходит в голову (пузырек и qsort)
дополнительной памяти не требует.
Или под "выделением памяти" ты имеешь ввиду что-то особенное?
Re[2]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:29
Оценка: :)
> Вот если Duff's device подсунуть на собеседовании, то это издевательство.

Одновременно написали А вот еще:

int x, y;

. . .

x ^= y ^= x ^= y;


Что делает? 30 сек на размышления!

С уважением, Роман.
До последнего не верил в пирамиду Лебедева.
Re[5]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 20:30
Оценка: 1 (1) +1
Здравствуйте, Kemm, Вы писали:

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


>>>> Да там еще return 0, не хватает.

K>>>В main ? Зачем ? Хотя, для старых компиляторов — можно и поставить.
A>>Да чтоб без warning`ов,а то всегда настроение портят...

K>Кстати, я что-то торможу: почему указаный пример g++ компилирует без warning'ов, а gcc — честно его выдает (после замены кода на C, понятно)?


См. 3.6.1 п. 5 стандарта С++.
Re[3]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:31
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

>> Вот если Duff's device подсунуть на собеседовании, то это издевательство.


RO>Одновременно написали А вот еще:


RO>
RO>int x, y;

RO>. . .

RO>x ^= y ^= x ^= y;
RO>


RO>Что делает?

меняет значения x и y

>30 сек на размышления!

2.5 секунды думал

угадал?
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 20:31
Оценка:
RomanOdaisky wrote:
>
> void copy(T* po, T const* pi, std::size_t len)
> {
> std::size_t len8 = len / 8;
>
> switch(len % 8)
> do
> {

default: std::cout << "whaaat??" << std::endl;

> *po++ = *pi++;

> case 7: *po++ = *pi++;
> case 6: *po++ = *pi++;
> case 5: *po++ = *pi++;
> case 4: *po++ = *pi++;
> case 3: *po++ = *pi++;
> case 2: *po++ = *pi++;
> case 1: *po++ = *pi++;
> case 0:
> } while(len8--);
> }

Mikhail
Posted via RSDN NNTP Server 2.0
Re[3]: издевательства над switch-ем на собеседовани
От: Сергей Мухин Россия  
Дата: 04.12.05 20:32
Оценка: +2 -2
Здравствуйте, kittown, Вы писали:

K>Сергей Мухин wrote:

>> K>Hi,
>>
>> на RSDN принято писать по-русски. Это также отражено в правилах.

K>Нашли к чему придраться.


нарушать правила нехорошо. опять же это ваш стиль

>> вот этого Вчера Сама я бы поубивал.

>>
>> Этот претендент работать тоже будет без компилятора?

K>Нет, этот претендент должен показать ход рассуждений.

K>Либо сдаться.

>> Уж если рассматривать это убожество, то только в таком аспекте. как

>> быстро (при наличии среды привычной претеденту) он откомпилирует без
>> ошибок (без использования комментариев ).

K>Это характерная точка зрения студента. Логичная, конечно, но после

K>внимательного изучения языка все эти вещи вообще не представляют
K>никакой сложности.

ну я уж ни как на студента не похож. но вот такие вещи я никогда при преме не задавал.
чел может знать синтаксис с++ и при этом не способен написать программу! или отладить ее!

K>Приблизительный уровень знаний, нужный для непробиваемости

K>подобными вещами — c++ faq lite + cpp faq book ver2 + cuj
K>за несколько лет (начиная с ~1998, чтобы не расходиться
K>со стандартом)

вам нужен со знанием стандарта? вы пишете компилятор С++? или программист?
---
С уважением,
Сергей Мухин
Re[3]: издевательства над switch-ем на собеседовани
От: pavel_turbin  
Дата: 04.12.05 20:33
Оценка:
Здравствуйте, Аноним, Вы писали:

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


_>>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


А>Стандартное, что приходит в голову (пузырек и qsort)

А>дополнительной памяти не требует.
А>Или под "выделением памяти" ты имеешь ввиду что-то особенное?

но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки. Кроме того видно будет как кандидат ориентируется в массивах, списках и др. Какие методы сортировок знает.
Re[4]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:33
Оценка: 1 (1)
Здравствуйте, korzhik, Вы писали:

K>угадал?


Канэшна. Вопрос №следующий: почему нельзя так писать?

С уважением, Роман.

P. S. Спойлеры по-хорошему предваряют парой десятков пустых строк
До последнего не верил в пирамиду Лебедева.
Re[2]: издевательства над switch-ем на собеседовани
От: Сергей Мухин Россия  
Дата: 04.12.05 20:34
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

K>>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,

K>>то почему и что будет делать ? Компилятор юзать нельзя.

_>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


что значит без выделения памяти? рекурсия подойдет?
---
С уважением,
Сергей Мухин
Re[4]: издевательства над switch-ем на собеседовани
От: Сергей Мухин Россия  
Дата: 04.12.05 20:36
Оценка: 2 (1) +5
Здравствуйте, pavel_turbin, Вы писали:

_>Здравствуйте, Аноним, Вы писали:


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


_>>>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


А>>Стандартное, что приходит в голову (пузырек и qsort)

А>>дополнительной памяти не требует.
А>>Или под "выделением памяти" ты имеешь ввиду что-то особенное?

_>но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки. Кроме того видно будет как кандидат ориентируется в массивах, списках и др. Какие методы сортировок знает.


это боле чем тривиально, а то что кто-то не знает этот конкретный фокус ничего не говорит о его квалификации
---
С уважением,
Сергей Мухин
Re[5]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 20:37
Оценка: +2 :))
Здравствуйте, RomanOdaisky, Вы писали:

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


K>>угадал?


RO>Канэшна. Вопрос №следующий: почему нельзя так писать?


"Патамушта, там снег башка попадет, савсэм мертвый будешь" (c)
Re[6]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:40
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

K>>>угадал?


RO>>Канэшна. Вопрос №следующий: почему нельзя так писать?


АШ>"Патамушта, там снег башка попадет, савсэм мертвый будешь" (c)


А что, вопрос актуален. Вот рядом пишут:

> но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки.


Но почему лучше таки использовать третью ячейку и лишний вызов конструктора копирования, а не то извращение?

С уважением, Роман.
До последнего не верил в пирамиду Лебедева.
Re[2]: издевательства над switch-ем на собеседовани
От: xbit Россия  
Дата: 04.12.05 20:42
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


А еще лучше попросите отсортировать массив из 0 и 1
Нас не догонят!
Re[5]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:43
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

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


K>>угадал?


RO>Канэшна. Вопрос №следующий: почему нельзя так писать?


Дык,UB. Множественная модификация переменной между точками следования.
Угадал?


RO>P. S. Спойлеры по-хорошему предваряют парой десятков пустых строк

вот этой фразы не понял.
Re[4]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 04.12.05 20:43
Оценка: +3
Здравствуйте, korzhik, Вы писали:

K>2.5 секунды думал


Ты не думал, ты просто знал
Кстати, именно по этой причине нет смысла в таких вопросах.
Они проверяют эрудицию. Не больше.
Не верю, что обычный человек (не дурак, но и не гений) с нуля
сможет за 30 сек. в условиях интервью сообразить, что тут меняются 2 значения
или сможет вникнуть в Duff's device...
Re[7]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 20:44
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

RO>Здравствуйте, Анатолий Широков, Вы писали:


K>>>>угадал?


RO>>>Канэшна. Вопрос №следующий: почему нельзя так писать?


АШ>>"Патамушта, там снег башка попадет, савсэм мертвый будешь" (c)


RO>А что, вопрос актуален. Вот рядом пишут:


Надо убрать UB и тогда все будет нормально:

x ^= y; y ^= x; x ^= y;
Re[4]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 04.12.05 20:45
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>Здравствуйте, Аноним, Вы писали:


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


_>>>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


А>>Стандартное, что приходит в голову (пузырек и qsort)

А>>дополнительной памяти не требует.
А>>Или под "выделением памяти" ты имеешь ввиду что-то особенное?

_>но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки.


Итого задача свелась к обмену 2 значений без промежуточной переменной.
Ну и о чем это тебе скажет, если человек не знает трюка типа:
http://www.rsdn.ru/Forum/Message.aspx?mid=1520854&amp;only=1
Автор: RomanOdaisky
Дата: 04.12.05

который все равно лучше не применять?
Re[8]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:46
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Здравствуйте, RomanOdaisky, Вы писали:


RO>>Здравствуйте, Анатолий Широков, Вы писали:


K>>>>>угадал?


RO>>>>Канэшна. Вопрос №следующий: почему нельзя так писать?


АШ>>>"Патамушта, там снег башка попадет, савсэм мертвый будешь" (c)


RO>>А что, вопрос актуален. Вот рядом пишут:


АШ>Надо убрать UB и тогда все будет нормально:


АШ>
АШ>x ^= y; y ^= x; x ^= y;
АШ>


Насколько я понимаю в общем случае работает только для unsigned ?
Re[6]: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 04.12.05 20:49
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

A>>>Да чтоб без warning`ов,а то всегда настроение портят...

K>>Кстати, я что-то торможу: почему указаный пример g++ компилирует без warning'ов, а gcc — честно его выдает (после замены кода на C, понятно)?
АШ>См. 3.6.1 п. 5 стандарта С++.

А можно процитировать, если не сложно? А то я не настоящий сварщик... В смысле, стандарта под рукой нет, да и вообще на plain C пишу в основном. 8))
Re[6]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:50
Оценка: -2
Здравствуйте, korzhik, Вы писали:

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


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


K>>>угадал?


RO>>Канэшна. Вопрос №следующий: почему нельзя так писать?


K>Дык,UB. Множественная модификация переменной между точками следования.

K>Угадал?

На этот раз нет. Assignment operators имеют левую ассоциативность (или, наоборот, правую?). Т. е. они сперва вычисляют то, что справа, затем то, что слева, затем вызывается operator =(). Да и, ЕМНИП, операторы присваивания как раз создают ТС.

Здесь пустые строки, чтобы не было искушения заглянуть в ответ.

пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки
пустые строки

Не то, чтобы ответ был чересчур сложен... Просто будет работать, скорее всего, медленнее. На x86 нет операции 'xor mem, mem'. Несравненно проще сделать три движения в регистрах.

С уважением, Роман.
До последнего не верил в пирамиду Лебедева.
Re[9]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 04.12.05 20:50
Оценка:
Здравствуйте, korzhik, Вы писали:


АШ>>
АШ>>x ^= y; y ^= x; x ^= y;
АШ>>


K>Насколько я понимаю в общем случае работает только для unsigned ?


А для объектов точно проще завести промежуточную переменную,
чем думать над реализацией оператора ^=

Да и вообще, std::swap рулит
Re[7]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 20:51
Оценка: 5 (1)
K>А можно процитировать, если не сложно? А то я не настоящий сварщик... В смысле, стандарта под рукой нет, да и вообще на plain C пишу в основном. 8))


5 A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing return 0;

Re[8]: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 04.12.05 20:54
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

K>>А можно процитировать, если не сложно? А то я не настоящий сварщик... В смысле, стандарта под рукой нет, да и вообще на plain C пишу в основном. 8))

АШ>

АШ>5 A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing return 0;


Спасибо. А зачем это было сделано, интересно? Какое-то нарушение общности...
Re[7]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 04.12.05 20:54
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

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


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


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


K>>>>угадал?


RO>>>Канэшна. Вопрос №следующий: почему нельзя так писать?


K>>Дык,UB. Множественная модификация переменной между точками следования.

K>>Угадал?

RO>На этот раз нет. Assignment operators имеют левую ассоциативность (или, наоборот, правую?). Т. е. они сперва вычисляют то, что справа, затем то, что слева, затем вызывается operator =(). Да и, ЕМНИП, операторы присваивания как раз создают ТС.


Я думаю что я прав. Но так как веки закрываются, доказывать это буду завтра.
Re[8]: издевательства над switch-ем на собеседовани
От: RomanOdaisky Украина  
Дата: 04.12.05 20:55
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>Надо убрать UB и тогда все будет нормально:


АШ>
x ^= y; y ^= x; x ^= y;


RO>
x ^= y ^= x ^= y;


У кого-то из нас глюки. ГДЕ UB? Приведите, пожалуйста, 2 или больше противоречащих варианта вычисления (по шагам).

С уважением, Роман.
До последнего не верил в пирамиду Лебедева.
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 20:58
Оценка: +1
Сергей Мухин wrote:

>> > K>Hi,

>> > на RSDN принято писать по-русски. Это также отражено в правилах.
> K>Нашли к чему придраться.
> нарушать правила нехорошо. опять же это ваш стиль

Язык приветствия как в русскоязычных, так и в англоязычных
конференциях бывает совершенно произвольным, не ограничиваясь
тем же самым английским (для писем на английском). Вы первый
человек, встреченный мной более чем за 10 лет (среди сотен
других), связывающий язык приветствия с языком, на котором
пишется письмо. Исключение — деловая корреспонденция.

Соответственно, если бы вы спросили меня, на каком языке
написано письмо, я бы ответил, что полностью на русском.

> K>Это характерная точка зрения студента. Логичная, конечно, но после

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

Может. Так я и выясню все — и что может, что не может. Вопросов
больше чем один. Свитч в список не внесен, но если будет внесен,
то с комментарием, что ответ — плюс, неответ — не минус. Были
неуверенные в ответе кандидаты, так прямо говорил — пофиг мне
на уверенность-неуверенность, что знаете — говорите, что не
знаете — высказывайте аргументированные предположения или хотя
бы прокомментируйте код. Только не выдавайте догадки за знания.
Не можете собраться — возьмите тайм-аут и соберитесь. Других
за это время поспрашиваю.

> K>Приблизительный уровень знаний, нужный для непробиваемости

> K>подобными вещами — c++ faq lite + cpp faq book ver2 + cuj
> K>за несколько лет (начиная с ~1998, чтобы не расходиться
> K>со стандартом)
>
> вам нужен со знанием стандарта? вы пишете компилятор С++? или программист?

Нам не нужен зазубривший версию c++, расходящуюся со стандартом.

Забыл упомянуть главное — это собеседование не о приеме на работу.
Это сортирующее собеседовании при приеме на обучение — либо на
изучение C (начальное плюс практика), либо на C++ (если нет
проблем с большинством основных понятий C, черт с ними с
библиотеками), либо на стажировку. Собеседование можно проходить
более чем по одному разу, соответственно однократный провал
не страшен. Кто приходит на второе собеседование, все заданные
ранее вопросы уже успевает разобрать дома. Свитч выучить. Вообще,
надо уже для второй раз приходящих новый тест придумывать.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[9]: издевательства над switch-ем на собеседовани
От: Анатолий Широков СССР  
Дата: 04.12.05 21:05
Оценка:
Здравствуйте, Kemm, Вы писали:

K>Здравствуйте, Анатолий Широков, Вы писали:


K>>>А можно процитировать, если не сложно? А то я не настоящий сварщик... В смысле, стандарта под рукой нет, да и вообще на plain C пишу в основном. 8))

АШ>>

АШ>>5 A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing return 0;


K>Спасибо. А зачем это было сделано, интересно?


Программа достигла конца main и значит она завершилась и завершилась "успешно" (код возврата 0), без ислючений и прочего.
Re[3]: издевательства над switch-ем на собеседовани
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 04.12.05 21:17
Оценка: :)
Здравствуйте, kittown, Вы писали:

K>default: std::cout << "whaaat??" << std::endl;


Не "whaaat??", а задачка из "Язык прогроммирования C++" некого Б.Страуструпа (шестая глава, упражнение 15, уровень сложности 1.5).
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 04.12.05 22:27
Оценка: :)
korzhik wrote:

> Но вот целиком программа не корректна, так как нельзя ставить точку с

> запятой, после тела функции. Но это скорее всего опечятка.

Вот это, как и ожидалось, без вопросов компилируется g++. Правда, никак
не могй найти внятного комментария по этому поводу в стандарте или
еще где. То ли попустительство компилятора, то ли общая грамматика
такая. Скорее последнее.

#include <iostream>
int main() { return 1 };;;;
Posted via RSDN NNTP Server 2.0
Re[9]: издевательства над switch-ем на собеседовани
От: anvaka Украина Yasiv
Дата: 05.12.05 02:04
Оценка:
Стоит полагать, UB тут:

RO>>
RO>x ^= y ^= x ^= y;
RO>


Почему?
— Стандарт, точки следования, С++...

Этот вопрос много раз тут появлялся.
Ищите на форуме по словам undefined behavior sequence point.
Re: издевательства над switch-ем на собеседовани
От: anvaka Украина Yasiv
Дата: 05.12.05 02:13
Оценка: +1
Здравствуйте, kittown!

K> /*...*/ пример кода для запугивания

K> претендентов на собеседовании /*...*/

А как называется Ваша фирма, если не секрет?
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 06:17
Оценка:
anvaka wrote:
>
> K> /*...*/ пример кода для запугивания
> K> претендентов на собеседовании /*...*/
>
> А как называется Ваша фирма, если не секрет?

Это обучающий центр с возможностью неоднократного
прохождения собеседований, при этом собеседования
проходят потоком. Человек 10-20 сидят с тестами и
отвечают, потом показывают чего наотвечали и
спрашиваются дополнительно.

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

Обычно, правда, вообще ничего не знают.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[9]: издевательства над switch-ем на собеседовани
От: Вадим Никулин Россия Здесь
Дата: 05.12.05 06:59
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

RO>У кого-то из нас глюки. ГДЕ UB? Приведите, пожалуйста, 2 или больше противоречащих варианта вычисления (по шагам).


UB в том, что между изменениями, например, переменной y нет точек следования.
Re[3]: издевательства над switch-ем на собеседовани
От: korzhik Россия  
Дата: 05.12.05 07:04
Оценка: 3 (1)
Здравствуйте, kittown, Вы писали:

K>korzhik wrote:


>> Но вот целиком программа не корректна, так как нельзя ставить точку с

>> запятой, после тела функции. Но это скорее всего опечятка.

K>Вот это, как и ожидалось, без вопросов компилируется g++. Правда, никак

K>не могй найти внятного комментария по этому поводу в стандарте или
K>еще где. То ли попустительство компилятора, то ли общая грамматика
K>такая. Скорее последнее.

K>
K>#include <iostream>
K>int main() { return 1 };;;;
K>


Андрей Тарасевич здесь
Автор: Андрей Тарасевич
Дата: 12.08.03
:

Если это тело инлайновой функции, определнной внутри определения класса, то точку с запятой можно поставить, а можно и не ставить. Это сказано в фрагменте грамматики в пункте 9.2.

Если же это определение функции, располагающееся за пределами определения класса, то ставить точку с запятой после такого определения явно запрещено стандартом языка. Для этого надо внимательно рассмотреть фрагмент грамматики в пункте 7/1 и обязательно прочитать пункт 7/3.

Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 07:37
Оценка:
korzhik wrote:
>
> Андрей Тарасевич здесь <http://rsdn.ru/Forum/?mid=350893&gt;:
Автор: Андрей Тарасевич
Дата: 12.08.03

> Если это тело инлайновой функции, определнной внутри определения класса,
> то точку с запятой можно поставить, а можно и не ставить. Это сказано в
> фрагменте грамматики в пункте 9.2.
>
> Если же это определение функции, располагающееся за пределами
> определения класса, то ставить точку с запятой после такого определения
> явно запрещено стандартом языка. Для этого надо внимательно рассмотреть
> фрагмент грамматики в пункте 7/1 и обязательно прочитать пункт 7/3.

Ясно. Значит, просто парсер у g++ так устроен.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[5]: издевательства над switch-ем на собеседовани
От: Шура Ренийский Украина  
Дата: 05.12.05 07:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Итого задача свелась к обмену 2 значений без промежуточной переменной.

можно типа такого
    a += b;

    b = a - b;

    a = a - b;
Re[6]: издевательства над switch-ем на собеседовани
От: ekamaloff Великобритания  
Дата: 05.12.05 07:57
Оценка: 1 (1)
Здравствуйте, Шура Ренийский, Вы писали:

ШР>можно типа такого

ШР>
ШР>    a += b;

ШР>    b = a - b;

ШР>    a = a - b;
ШР>


Однако может привести к переполнению.

ЗЫ: задавали этот вопрос на одном из собеседований... За минуту допер (ответа ессно не знал).
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re: издевательства над switch-ем на собеседовани
От: Lorenzo_LAMAS  
Дата: 05.12.05 07:57
Оценка: +1
Если уж вам действительно хотелось интересного примера со свитчем для самоутверждения и опускания неких студентов (предположительно тех, кто толком не знает про свитч), использовали бы Duff's device.
Of course, the code must be complete enough to compile and link.
Re: издевательства над switch-ем на собеседовани
От: igna Россия  
Дата: 05.12.05 09:25
Оценка: 15 (1) :)
Здравствуйте, kittown, Вы писали:

K>Если скомпилируется, то почему?


Каков был бы ваш ответ на этот вопрос?
Re: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 05.12.05 09:27
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
K>то почему и что будет делать ? Компилятор юзать нельзя.

K>Уже жду следующей команды студентов, желающих пособеседоваться.


K>Mikhail


ИМХО — от программиста требуется умение писать максимально прозрачный, ясный и самодокументируемый код — а не умение изголяться над психикой и интеллектом читающих его код.
Re[3]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 05.12.05 09:33
Оценка:
Здравствуйте, kittown, Вы писали:

K>anvaka wrote:

>>
>> K> /*...*/ пример кода для запугивания
>> K> претендентов на собеседовании /*...*/
>>
>> А как называется Ваша фирма, если не секрет?

K>Это обучающий центр с возможностью неоднократного


Ключевое слово — "обучающий" )
Циркачи одним словом...
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 09:37
Оценка:
Lorenzo_LAMAS wrote:
>
> Если уж вам действительно хотелось интересного примера со свитчем для
> самоутверждения и опускания неких студентов (предположительно тех, кто
> толком не знает про свитч), использовали бы Duff's device.

Самоутверждаться незачем, а опускать — некуда. После просмотра теста
и так все "веселые" — они же до начала разговора его час-полтора
решают.

А Duff's девайс добавим. В качестве иллюстрации, что case N и default
есть не более, чем метки. И уже на следующем собеседовании у кандадата
шансов будет куда больше.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 09:38
Оценка:
igna wrote:
>
> Здравствуйте, kittown, Вы писали:
>
> K>Если скомпилируется, то почему?
>
> Каков был бы ваш ответ на этот вопрос?

Некоторое время назад — "не знаю". От
не знающих такой и ожидается, не проблема.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 09:42
Оценка:
Аноним wrote:
>
> ИМХО — от программиста требуется умение писать максимально прозрачный,
> ясный и самодокументируемый код — а не умение изголяться над психикой и
> интеллектом читающих его код.

Писать, в 99% случаев — да. А читать нужно практически любой.

Кроме того, для разбора любых выкрутасов с Duff's device и примеров
подобных моему достаточно понимания, что case X и default — это
такие особенные метки, разрешенные только внутри switch-а. Если
бы этому так сразу учили, вопросов было бы меньше.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: srggal Украина  
Дата: 05.12.05 09:44
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>ИМХО — от программиста требуется умение писать максимально прозрачный, ясный и самодокументируемый код — а не умение изголяться над психикой и интеллектом читающих его код.


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

Типа сатрите какие вы тупые и никчемные, а я великий — вас учить буду

Так сказать, чтобы обучаемые прониклись мощью сэнсэя

ЗЫ
Это на правах шутки, но как грится — сказка ложь, да в ней намеу ...
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 09:49
Оценка:
Аноним wrote:
>
>> > K> /*...*/ пример кода для запугивания
>> > K> претендентов на собеседовании /*...*/
>> >
>> > А как называется Ваша фирма, если не секрет?
>
> K>Это обучающий центр с возможностью неоднократного
>
> Ключевое слово — "обучающий" )
> Циркачи одним словом...

Именно. Общая программа:

0) Введение в C++ с описанием базовых концепций и не только
1) C++ — язык, на котором можно написать чер-те-что.
см. #define private public
2) Некоторые так и делают и вот так можно прочесть их творчество.
2.5) Вот вам пример убитого кода, тем не менее хорошо
показывающий отдельные тонкости языка. Писать так не
надо, но понимание улучшает.
3) А вот надо делать нормальным людям.
4) Вот такие типичные ошибки. Да, именно их все вы только
что и сделали. Сами. А вот так надо их исправлять.
5) А теперь идите и делайте задачу на защиту с презентацией,
а мы вас будем консультировать, если надо.

Основное время на пункты 0,3,4,5.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[3]: издевательства над switch-ем на собеседовани
От: srggal Украина  
Дата: 05.12.05 09:50
Оценка:
Здравствуйте, kittown, Вы писали:

K>Писать, в 99% случаев — да. А читать нужно практически любой.


K>Кроме того, для разбора любых выкрутасов с Duff's device и примеров

K>подобных моему достаточно понимания, что case X и default — это
K>такие особенные метки, разрешенные только внутри switch-а. Если
K>бы этому так сразу учили, вопросов было бы меньше.

И насколько Важно понимание того, что это просто метки ( такие уж они специфические ), на фоне общих знаний о структурах данных ? Может ещё имеет смысл ещё пару-тройку вопросов по терории компиляции включить в тесты ?
Или я что-то не врубаюсь
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 09:57
Оценка:
srggal wrote:
>
> K>Писать, в 99% случаев — да. А читать нужно практически любой.
>
> K>Кроме того, для разбора любых выкрутасов с Duff's device и примеров
> K>подобных моему достаточно понимания, что case X и default — это
> K>такие особенные метки, разрешенные только внутри switch-а. Если
> K>бы этому так сразу учили, вопросов было бы меньше.
>
> И насколько Важно понимание того, что это просто метки ( такие уж они
> специфические ), на фоне общих знаний о структурах данных ? Может ещё
> имеет смысл ещё пару-тройку вопросов по терории компиляции включить в
> тесты ?
> Или я что-то не врубаюсь

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

Однако, не меньшая разница между человеком, досконально знающим тему
и уверенным в своих знаниях, и человеком, которому приходится тратить
время на догадки, в которых он уверен не на 100%.

Все до такой степени разбирать смысла нет, но тонкости базовых
конструкций знать полезно полностью. Свитч как раз есть одна
из базовых конструкций. Также полезно знать наизусть наиболее
применяемые библиотеки, но они везде разные. Поэтому даже
stl зубрить полностью заставлять незачем. У нас на работе,
например, вместо него используется RogueWave.

Mikhail
Posted via RSDN NNTP Server 2.0
Re: издевательства над switch-ем на собеседовани
От: saproj  
Дата: 05.12.05 11:25
Оценка:
K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,
K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
K>то почему и что будет делать ? Компилятор юзать нельзя.

А вы сами-то использовали компилятор когда придумывали пример? Смогли бы с уверенностью ответить на эти вопросы без компилятора?
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 11:32
Оценка: :)
saproj wrote:
>
> K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,
> K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
> K>то почему и что будет делать ? Компилятор юзать нельзя.
>
> А вы сами-то использовали компилятор когда придумывали пример? Смогли бы
> с уверенностью ответить на эти вопросы без компилятора?

До вчерашнего дня — вряд ли. Это необязательный вопрос. За неответ
на него никого не минусуют.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[10]: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 05.12.05 11:36
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

K>>Спасибо. А зачем это было сделано, интересно?

АШ>Программа достигла конца main и значит она завершилась и завершилась "успешно" (код возврата 0), без ислючений и прочего.

А какая разница между 'int main()' и 'int somefunc()'? Чего-то я в этом вашем С++ не понимаю... 8))
Re[3]: издевательства над switch-ем на собеседовани
От: igna Россия  
Дата: 05.12.05 11:39
Оценка:
Здравствуйте, kittown, Вы писали:

>> K>Если скомпилируется, то почему?


>> Каков был бы ваш ответ на этот вопрос?


K>Некоторое время назад — "не знаю".


А сейчас? Меня интересует ваш теперешний ответ на вопрос "Почему скомпилируется?"
Re[11]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 11:41
Оценка:
Kemm wrote:
>
> K>>Спасибо. А зачем это было сделано, интересно?
> АШ>Программа достигла конца main и значит она завершилась и завершилась
> "успешно" (код возврата 0), без ислючений и прочего.
>
> А какая разница между 'int main()' и 'int somefunc()'? Чего-то я в этом
> вашем С++ не понимаю... 8))

int main() — специальная функция. Для нее, и только для нее в c++
разрешается опускать return statement.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 11:44
Оценка:
igna wrote:
>
> Здравствуйте, kittown, Вы писали:
>
>> > K>Если скомпилируется, то почему?
>
>> > Каков был бы ваш ответ на этот вопрос?
>
> K>Некоторое время назад — "не знаю".
>
> А сейчас? Меня интересует ваш теперешний ответ на вопрос "Почему
> скомпилируется?"

Потому что после swith(smth) идет оператор, частным случаем
которого является блок {operators}. А default, case N — это
только метки, которые допускается использовать до того,
как оператор/блок после switch закончился. Более того,
хотя бы одна из них должна быть использована перед
оператором или в начале блока, иначе получится unreachable
code и компилятор начнет сопротивляться.

Mikhail
Posted via RSDN NNTP Server 2.0
Re: издевательства над живыми людьми на собеседовани
От: Dimentiy Россия  
Дата: 05.12.05 11:53
Оценка: -2
Здравствуйте, kittown, Вы писали:

K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

Зачем?
Месье болен на голову?
Re[2]: издевательства над живыми людьми на собеседовани
От: kittown  
Дата: 05.12.05 11:56
Оценка:
Dimentiy wrote:
>
> K>Вчера сам собой придумался пример кода для запугивания
> K>претендентов на собеседовании:
>
> Зачем?

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

Главный момент — за неответ не штрафуем.

> Месье болен на голову?


Нет. (c)

Mikhail
Posted via RSDN NNTP Server 2.0
Re[5]: издевательства над switch-ем на собеседовани
От: igna Россия  
Дата: 05.12.05 12:12
Оценка:
Здравствуйте, kittown, Вы писали:

K>Потому что после swith(smth) идет оператор, частным случаем

K>которого является блок {operators}. А default, case N — это
K>только метки, которые допускается использовать до того,
K>как оператор/блок после switch закончился. Более того,
K>хотя бы одна из них должна быть использована перед
K>оператором или в начале блока, иначе получится unreachable
K>code и компилятор начнет сопротивляться.


Правда? А вот такое:

#include <iostream>
int main()
{
switch(0) ;
};

— компилироваться не должно?
Re[12]: издевательства над switch-ем на собеседовани
От: Kemm  
Дата: 05.12.05 12:14
Оценка:
Здравствуйте, kittown, Вы писали:

>> K>>Спасибо. А зачем это было сделано, интересно? Какое-то нарушение общности...

>> АШ>Программа достигла конца main и значит она завершилась и завершилась
>> "успешно" (код возврата 0), без ислючений и прочего.
>> А какая разница между 'int main()' и 'int somefunc()'? Чего-то я в этом
>> вашем С++ не понимаю... 8))
K>int main() — специальная функция. Для нее, и только для нее в c++
K>разрешается опускать return statement.

Вставил обратно результат фигурного цитирования (жирным). Врочем, ладно, а то совсем уж в holy war скатимся.
Re[3]: издевательства над живыми людьми на собеседовани
От: Dimentiy Россия  
Дата: 05.12.05 12:20
Оценка:
Здравствуйте, kittown, Вы писали:

K>Смотреть реакцию и наблюдать полеты фантазии. Не сильно

K>хуже знаменитого вопроса, сколько бензоколонок в США,
K>на который на основе здравого смысла людям удавалось
K>найти ответ с точностью до порядка.

K>Главный момент — за неответ не штрафуем.


Полёт фантазии здесь будет только у тех людей, которые не знают, что приведённый пример — бредовый.

Главный момент — отсеиваются грамотные.
Re[3]: издевательства над switch-ем на собеседовани
От: Lorenzo_LAMAS  
Дата: 05.12.05 12:20
Оценка:
как то вот это вот

K>До вчерашнего дня — вряд ли.


плохо согласуется с вот этим вот

К>Приблизительный уровень знаний, нужный для непробиваемости

подобными вещами — c++ faq lite + cpp faq book ver2 + cuj
за несколько лет (начиная с ~1998, чтобы не расходиться
со стандартом)
Of course, the code must be complete enough to compile and link.
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 12:30
Оценка:
Lorenzo_LAMAS wrote:
>
> как то вот это вот
>
> K>До вчерашнего дня — вряд ли.
>
> плохо согласуется с вот этим вот
>
> К>Приблизительный уровень знаний, нужный для непробиваемости
> подобными вещами — c++ faq lite + cpp faq book ver2 + cuj
> за несколько лет (начиная с ~1998, чтобы не расходиться
> со стандартом)

Согласуется. Информация по свичу из cpp faq book ver2.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[4]: издевательства над живыми людьми на собеседовани
От: srggal Украина  
Дата: 05.12.05 12:30
Оценка:
Здравствуйте, Dimentiy, Вы писали:

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


K>>Смотреть реакцию и наблюдать полеты фантазии. Не сильно

K>>хуже знаменитого вопроса, сколько бензоколонок в США,
K>>на который на основе здравого смысла людям удавалось
K>>найти ответ с точностью до порядка.

K>>Главный момент — за неответ не штрафуем.


D>Полёт фантазии здесь будет только у тех людей, которые не знают, что приведённый пример — бредовый.

D>Главный момент — отсеиваются грамотные.

-1
Грамотные не отсеятся, а вот полета фантазии я тут не вижу
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: издевательства над switch-ем на собеседовани
От: Pavel Chikulaev Россия  
Дата: 05.12.05 12:35
Оценка: 2 (2)
Здравствуйте, kittown, Вы писали:

K>saproj wrote:

>>
>> K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,
>> K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
>> K>то почему и что будет делать ? Компилятор юзать нельзя.
>>
>> А вы сами-то использовали компилятор когда придумывали пример? Смогли бы
>> с уверенностью ответить на эти вопросы без компилятора?

K>До вчерашнего дня — вряд ли. Это необязательный вопрос. За неответ

K>на него никого не минусуют.
Не надо понтоваться тем, что узнал вчера. Те, кто это не знал возможно узнает это же через день. Самый лучший вариант постить сюда — самообразовываться и помогать другим...
Re[4]: издевательства над живыми людьми на собеседовани
От: kittown  
Дата: 05.12.05 12:35
Оценка:
Dimentiy wrote:
>
> K>Смотреть реакцию и наблюдать полеты фантазии. Не сильно
> K>хуже знаменитого вопроса, сколько бензоколонок в США,
> K>на который на основе здравого смысла людям удавалось
> K>найти ответ с точностью до порядка.
>
> K>Главный момент — за неответ не штрафуем.
>
> Полёт фантазии здесь будет только у тех людей, которые не знают, что
> приведённый пример — бредовый.

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

> Главный момент — отсеиваются грамотные.


Куда они отсеются ? С какой стати ? В тесте по Си 20
вопросов. Если однозначно положительных ответов на
три больше, чем однозначно неверных, то этот человек
признается знающим Си в достаточной степени, чтобы
идти изучать c++. Куда уж демократичнее. Если на шесть,
то можно спрашивать по c++. Вопросы в стиле сортировки
операторов на логические и побитовые, или что означает
ключевое слово static тут, там и здесь.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[4]: издевательства над switch-ем на собеседовани
От: Глеб Алексеев  
Дата: 05.12.05 12:37
Оценка: 1 (1) :)
Здравствуйте, pavel_turbin, Вы писали:

_>но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки.

ИМХО, маразм.

Если временную переменную при перестановке элементов считать дополнительной памятью, то что делать со счетчиками циклов? Хотелось бы на код успешного кандидата взглянуть.
... << RSDN@Home 1.2.0 alpha rev. 619>>
Re[5]: издевательства над живыми людьми на собеседовани
От: Dimentiy Россия  
Дата: 05.12.05 12:39
Оценка:
Здравствуйте, kittown, Вы писали:

K>Если человек понимает, что пример бредовый, но не может

K>ничего предположить, и тем более если не хочет, то этот
K>человек, скорее всего, неадекватен.

Неадекватен тот, кто будет копаться в бреде.
Re[5]: издевательства над живыми людьми на собеседовани
От: kittown  
Дата: 05.12.05 12:39
Оценка:
srggal wrote:
>
> K>>Главный момент — за неответ не штрафуем.
>
> D>Полёт фантазии здесь будет только у тех людей, которые не знают, что
> приведённый пример — бредовый.
> D>Главный момент — отсеиваются грамотные.
>
> -1
> Грамотные не отсеятся, а вот полета фантазии я тут не вижу

Человек в принципе может сам дойти до идеи, что вместо блока
почти везде можно поставить один единственный оператор. Через
наводящие вопросы и сравнения с if-ами. С этим вопросом
можно вытянуть человека на уровень, когда можно пустить
на c++, если формально по вопросам ему надо еще C учить.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[6]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 12:42
Оценка:
igna wrote:
>
> Правда? А вот такое:
>
> #include <iostream>
> int main()
> {
> switch(0) ;
> };
>
> — компилироваться не должно?

Как оказалось, может и не собираться. Но не из-за свича,
а из-за заголовка.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[5]: издевательства над switch-ем на собеседовани
От: Lorenzo_LAMAS  
Дата: 05.12.05 12:43
Оценка: :)
ааа, т.е. вы faq вчера только прочитали?
Of course, the code must be complete enough to compile and link.
Re[6]: издевательства над живыми людьми на собеседовани
От: kittown  
Дата: 05.12.05 12:43
Оценка:
Dimentiy wrote:
>
> K>Если человек понимает, что пример бредовый, но не может
> K>ничего предположить, и тем более если не хочет, то этот
> K>человек, скорее всего, неадекватен.
>
> Неадекватен тот, кто будет копаться в бреде.

Если задача поставлена именно таким образом, и он не
копается, то человек слишком заморочен. Кто знает,
когда еще и какой кусок работы он посчитает бредом,
так что все в итоге застрянет ?

Mikhail
Posted via RSDN NNTP Server 2.0
Re[6]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 05.12.05 12:46
Оценка: +1
Lorenzo_LAMAS wrote:
>
> ааа, т.е. вы faq вчера только прочитали?

Ну да.

Мой пойнт, что знать все это можно и книги
читать надо. А не то что я такой гениальный
мол и все знаю сам. Если бы.

А к ревьюерам, которые знание всего этого
требуют и ожидают в обязательном порядке,
у нас отношение скорее всего одинаковое.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[6]: издевательства над живыми людьми на собеседовани
От: srggal Украина  
Дата: 05.12.05 12:47
Оценка: +1
Здравствуйте, Dimentiy, Вы писали:

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


K>>Если человек понимает, что пример бредовый, но не может

K>>ничего предположить, и тем более если не хочет, то этот
K>>человек, скорее всего, неадекватен.

D>Неадекватен тот, кто будет копаться в бреде.


Блин, Хоуливарз.

Я копаюсь в бреде, мне кроме этого, ещё и деньги за это платят, и называют это красивыми словами РеИнжиниринг, Импрувмент, Саппорт.

ИМХО Не нужно все обобщать, и уж тем более усугублять такими мощными высказываниями.

ЗЫ
Думаю таких неадекватных немало, взять например вот Прокоментируйте код
Автор: Tom
Дата: 30.11.05
.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[2]: издевательства над switch-ем на собеседовани
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 05.12.05 13:04
Оценка:
Здравствуйте, Андрей Коростелев, Вы писали:

АК>Хм, а какой конструктивный вывод можно сделать о разнице между студентами,

АК>справившимися с этим заданием и не справившимися?

Конструктивный выводы можно делать не по тому, справился человек с заданием или нет, а по тому, как человек объясняет свое решение. Фактически, если человек ответит, что скомпилируется этот пример или нет зависит от ньюансов стандарта языка и укажет на эти ньюансы, трактовку которых он может не знать/не помнить, то этого будет лучше, чем человек угадавший ответ, но который не в состоянии его объяснить.
Re[7]: издевательства над живыми людьми на собеседовани
От: Dimentiy Россия  
Дата: 05.12.05 13:09
Оценка:
Здравствуйте, srggal, Вы писали:

S>Я копаюсь в бреде, мне кроме этого, ещё и деньги за это платят, и называют это красивыми словами РеИнжиниринг, Импрувмент, Саппорт.


Re[7]: издевательства над switch-ем на собеседовани
От: Кодт Россия  
Дата: 05.12.05 13:19
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

K>>Дык,UB. Множественная модификация переменной между точками следования.

K>>Угадал?

RO>На этот раз нет. Assignment operators имеют левую ассоциативность (или, наоборот, правую?). Т. е. они сперва вычисляют то, что справа, затем то, что слева, затем вызывается operator =(). Да и, ЕМНИП, операторы присваивания как раз создают ТС.


А вот на этот раз не угадал ты
Ассоциативность (фактически, правила расстановки скобок) не влияет на порядок вычисления независимых аргументов (в том числе — взятие ссылки "куда"), а присваивание не создаёт точки следования.
Перекуём баги на фичи!
Re[4]: издевательства над switch-ем на собеседовани
От: Кодт Россия  
Дата: 05.12.05 13:22
Оценка:
Здравствуйте, korzhik, Вы писали:

RO>>x ^= y ^= x ^= y;


RO>>Что делает?

K>меняет значения x и y

Не "меняет" а "пытается обменять". Ещё неизвестно, что оптимизирующий компилятор про эту конструкцию подумает (а подумать он может всё что угодно — UB развязывает ему руки).
Перекуём баги на фичи!
Re[5]: издевательства над switch-ем на собеседовани
От: Кодт Россия  
Дата: 05.12.05 14:03
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:

_>>но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки.


ГА>ИМХО, маразм.

ГА>Если временную переменную при перестановке элементов считать дополнительной памятью, то что делать со счетчиками циклов? Хотелось бы на код успешного кандидата взглянуть.

Хм... а ведь, между прочим, решение есть. Только оно ВЕСЬМА нетривиальное.
И помоему, уже было в Этюдах.

Причём можно действовать без UB в обмене (ну, это достигается элементарно: распишем арифметику на три отдельных операции).
Перекуём баги на фичи!
Re[10]: издевательства над switch-ем на собеседовани
От: Roman Odaisky Украина  
Дата: 05.12.05 17:33
Оценка:
Здравствуйте, Вадим Никулин, Вы писали:

RO>>У кого-то из нас глюки. ГДЕ UB? Приведите, пожалуйста, 2 или больше противоречащих варианта вычисления (по шагам).


ВН>UB в том, что между изменениями, например, переменной y нет точек следования.


Следует ли понимать, что

a = b = c = 0;
— тоже UB, поскольку может быть, помимо обычного понимания, записано в виде

((a = b) = c) = 0;
, что эквивалентно

a = 0;
для тривиального operator =(...)?

Я посмотрел 5.17p1, там написано group right-to-left. Определение последнего термина я не нашел, но оно "на пальцах" разъясняется в 5.9p1.
До последнего не верил в пирамиду Лебедева.
Re[9]: издевательства над switch-ем на собеседовани
От: gear nuke  
Дата: 05.12.05 18:06
Оценка: 1 (1)
Здравствуйте, korzhik, Вы писали:

АШ>>
АШ>>x ^= y; y ^= x; x ^= y;
АШ>>

K>Насколько я понимаю в общем случае работает только для unsigned ?

Для любых типов, к которым применима операция побитового сложения/вычитания по модулю два.
В свободной записи это можно показать так:
x = x (+) y
y = y (-) x // y = y (+) x (-) y
x = x (-) y // x = x (+) y (-) x
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[7]: издевательства над switch-ем на собеседовани
От: gear nuke  
Дата: 05.12.05 18:06
Оценка:
Здравствуйте, ekamaloff, Вы писали:

ШР>>
ШР>>    a += b;

ШР>>    b = a - b;

ШР>>    a = a - b;

E>Однако может привести к переполнению.

По-моему, это будет работать для беззнаковых везде, где сложение и вычитание работают "по модулю, равному количеству бит в переменной". Если отрицательные числа хранятся в дополнительном коде, то и для знаковых (поскольку они суть беззнаковые).

E>ЗЫ: задавали этот вопрос на одном из собеседований... За минуту допер (ответа ессно не знал).


А какой правильный ответ?
Вот что нашёл в С99:

6.2.6.2 Integer types

1 For unsigned integer types other than unsigned char, the bits of the object
representation shall be divided into two groups: value bits and padding bits (there need
not be any of the latter). If there are N value bits, each bit shall represent a different
power of 2 between 1 and 2N-1, so that objects of that type shall be capable of
representing values from 0 to 2N — 1 using a pure binary representation; this shall be
known as the value representation. The values of any padding bits are unspecified.44)

44) Some combinations of padding bits might generate trap representations, for example, if one padding
bit is a parity bit. Regardless, no arithmetic operation on valid values can generate a trap
representation other than as part of an exceptional condition such as an overflow, and this cannot occur
with unsigned types
. All other combinations of padding bits are alternative object representations of
the value specified by the value bits.

People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[11]: издевательства над switch-ем на собеседовани
От: Кодт Россия  
Дата: 05.12.05 18:33
Оценка: 3 (1) +1
Здравствуйте, Roman Odaisky, Вы писали:

ВН>>UB в том, что между изменениями, например, переменной y нет точек следования.

RO>Следует ли понимать, что
RO>a = b = c = 0;

— тоже UB, поскольку может быть, помимо обычного понимания, записано в виде
RO>((a = b) = c) = 0;

, что эквивалентно
RO>a = 0;

для тривиального operator =(...)?

RO>Я посмотрел 5.17p1, там написано group right-to-left. Определение последнего термина я не нашел, но оно "на пальцах" разъясняется в 5.9p1.


Ну ёлки палки, сколько ещё программистов расшибёт лоб, чтобы понять: operator precedence и associativity управляют лишь расстановкой скобок — и больше вообще ничем?

a=b=c=d всегда трактуется как a=(b=(c=(d))).

Поскольку операторы встроенные, то между вычислением аргументов и входом в функцию operator=(), и между выходом из функции и передачей результата дальше — точек следования нет. Собственно, и функций-то здесь нет.
Это развязывает оптимизирующему компилятору руки — он может превратить это выражение в a=d, b=d, c=d.

Теперь меняем = на +=: a+=(b+=(c+=(d)))
Очевидно, что c1=c0+d, b1=b0+c0+d, a1=a0+b0+c0+d или a1=a0+b1 или a1=a0+b0+c1 где a0,b0,c0 — исходные значения, a1,b1,c1 — конечные значения одних и тех же переменных a,b,c. Где компилятор хранит значения, используемые в выражении — то ли в регистрах, то ли сразу в переменных — никто не знает. Где хочет, там и хранит. И порядок выполнения тоже на усмотрение компилятора.

Теперь делаем невинный фокус: a+=(b+=(c+=(b)))
Подставляем b вместо d. Получаем (в произвольном порядке, заметьте!!!)
c1=c0+bx,
b1=b0+c0+bx
a1=a0+b0+c0+bx или a0+b1 или a0+b0+c1
где bx — содержимое переменной b в произвольный момент времени до конца вычислений.
В результате — имеем всё что угодно.

Думаете, компилятор такой умный, он увидит? Агащас
void ub(int& a, int& b, int& c, int& d) { a+=b+=c+=d; } // ну здесь-то, казалось бы, нет неоднозначностей?..
int main()
{
  int a=1,b=2,c=3;
  ub(a,b,c,b); // будут!
}


Да если компилятор и увидит неоднозначности — он скорее туда заглушек навтыкает, чем попытается родить правильный код. Какая разница: ранняя диагностика UB, всего-то навсего.
Перекуём баги на фичи!
Re[6]: издевательства над switch-ем на собеседовани
От: GlebZ Россия  
Дата: 05.12.05 18:36
Оценка:
Здравствуйте, Кодт, Вы писали:

ГА>>Если временную переменную при перестановке элементов считать дополнительной памятью, то что делать со счетчиками циклов? Хотелось бы на код успешного кандидата взглянуть.

К>Хм... а ведь, между прочим, решение есть. Только оно ВЕСЬМА нетривиальное.
К>И помоему, уже было в Этюдах.
Знание что двойной xor возвращает то же значение нетривиально? Ну не знаю. Когда мне впервые задали такой вопрос, я сразу догадался на чем основана.
a^=b;
b=a^b;
a^=b;

Хотя всякое бывает.
С уважением, Gleb.
Re[7]: издевательства над switch-ем на собеседовани
От: Кодт Россия  
Дата: 05.12.05 19:14
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Знание что двойной xor возвращает то же значение нетривиально? Ну не знаю.

Это-то понятно. Массив отсортируй без дополнительной памяти (под счётчик)
Перекуём баги на фичи!
Re[12]: издевательства над switch-ем на собеседовани
От: Roman Odaisky Украина  
Дата: 05.12.05 21:19
Оценка:
Здравствуйте, Кодт, Вы писали:

К>В результате — имеем всё что угодно.


Пожалуй, вы правы... У меня вообще в последнее время складывается впечатление, что программы нужно писать так, чтобы на один оператор приходилось ровно одно действие. Дело-то нехитрое, а N-ная часть багов исчезнет (точнее, так и не будет творчески создана).
До последнего не верил в пирамиду Лебедева.
Re[6]: издевательства над switch-ем на собеседовани
От: Глеб Алексеев  
Дата: 06.12.05 05:45
Оценка:
Здравствуйте, Кодт, Вы писали:

ГА>>ИМХО, маразм.

ГА>>Если временную переменную при перестановке элементов считать дополнительной памятью, то что делать со счетчиками циклов? Хотелось бы на код успешного кандидата взглянуть.

К>Хм... а ведь, между прочим, решение есть. Только оно ВЕСЬМА нетривиальное.

К>И помоему, уже было в Этюдах.
В этюдах не нашел. И т.к. pavel_turbin с помощью этого теста "отсеивает слабоумных", сомневаюсь, что именно это решение требовалось. Все-таки обычно под отказом от дополнительной памяти при сортировке понимают сортировку массива на месте, а не фокусы без локальных переменных.

К>Причём можно действовать без UB в обмене (ну, это достигается элементарно: распишем арифметику на три отдельных операции).

Это понятно. Самое интересное — это действительно реализовать сортировку без счетчиков циклов. Но для этого этюда надо точнее оговорить условия. Если подойти формально и считать, что "дополнительная память"=="локальные переменные", то можно просто заменить итерацию рекурсией, только в действительности в стеке памяти это съест больше (разве что все рекурсивные вызовы будут концевыми, до такого варианта я еще не додумался, и если компиляторы оптимизируют хвостовую рекурсию). А если считать, что функция принимает (int* array, size_t n), и ничего сверх этого ни в стеке, ни в куче использовать нельзя, то я даже не знаю. Видимо, слабоумный .
... << RSDN@Home 1.2.0 alpha rev. 619>>
Re[4]: издевательства над switch-ем на собеседовани
От: Erop Россия  
Дата: 06.12.05 06:30
Оценка:
Здравствуйте, korzhik, Вы писали:

K>

K>Если же это определение функции, располагающееся за пределами определения класса, то ставить точку с запятой после такого определения явно запрещено стандартом языка. Для этого надо внимательно рассмотреть фрагмент грамматики в пункте 7/1 и обязательно прочитать пункт 7/3.


А разве нельзя ставить точку с запятой просто так?
Например между определениями глобальных переменых ставить по две точки с запятой.

А ещё вопрос такй у меня возник. Если это таки запрещенно, то зачем коммитету такой запрет понадобился? У кого-нибудь есть идеи мотивации такого запрета?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: издевательства над switch-ем на собеседовани
От: landerhigh Пират  
Дата: 06.12.05 06:31
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

Вот тут читал комменты, читал.
И вызрел вопрос — какое отношение этот, с позволения сказать, тест, имеет к программированию вообще и к С++ в частности?
www.blinnov.com
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 06.12.05 07:07
Оценка:
landerhigh wrote:
>
> K>Вчера сам собой придумался пример кода для запугивания
> K>претендентов на собеседовании:
>
> Вот тут читал комменты, читал.
> И вызрел вопрос — какое отношение этот, с позволения сказать, тест,
> имеет к программированию вообще и к С++ в частности?

"Программирование вообще" нас на этом собеседовании мало
интересует. А хитрый свич, с которого началось тема, сразу
много говорит о кандидате. Если знает — интересно, откуда
знает, а если не знает — то как среагирует. Если изучал
синтаксис языка как таковой, то наверняка знает.

Вопрос — на сладкое. Основной костяк теста — несколько десятков
куда более стандартных вопросов. Скажем, а не является ли
размер enum-а равным размеру инта, помноженному на число
значений ? Этот вопрос заваливает каждый второй.

Ответа на абсолютно все вопросы не ожидается вообще
ни от кого, включая сотрудников компании.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[3]: издевательства над switch-ем на собеседовани
От: ekamaloff Великобритания  
Дата: 06.12.05 07:35
Оценка:
Здравствуйте, kittown, Вы писали:

K>Скажем, а не является ли

K>размер enum-а равным размеру инта, помноженному на число
K>значений ? Этот вопрос заваливает каждый второй.

Ну и контингент у вас...
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[3]: издевательства над switch-ем на собеседовани
От: igna Россия  
Дата: 06.12.05 07:51
Оценка:
Здравствуйте, kittown, Вы писали:

K>Если изучал синтаксис языка как таковой, то наверняка знает.


, а также отвечали на вопрос "Смогли бы вы сами с уверенностью ответить на эти вопросы без компилятора?":

K>До вчерашнего дня — вряд ли.


То есть, если вы и изучали синтаксис языка до позавчерашнего дня, то изучали не как таковой, а как-то иначе.

---

K>Основной костяк теста — несколько десятков куда более стандартных вопросов.

K>Скажем, а не является ли размер enum-а равным размеру инта, помноженному на число значений?

Час от часу...
Вроде как приходишь сдавать математику в ВУЗ, и получаешь вопрос, всегда ли 2*2=4 ?
Больше похоже на проверку устойчивости психики.

Кстати, когда придуман вопрос и за сколько дней до того придумавший его узнал правильный ответ?
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 06.12.05 08:19
Оценка:
igna wrote:
>
> K>Если изучал синтаксис языка как таковой, то наверняка знает.
>
> , а также отвечали на вопрос "Смогли бы вы сами с уверенностью ответить
> на эти вопросы без компилятора?":
>
> K>До вчерашнего дня — вряд ли.
>
> То есть, если вы и изучали синтаксис языка до позавчерашнего дня, то
> изучали не как таковой, а как-то иначе.

Детально синтаксис — нет, и не скоро весь изучу, если вообще. Что-то
по случаю, что-то по необходимости. Исключение — самая база, вроде
if/switch. Свитч, кстати, подкосил половину преподсостава.

Демонстрация всего этого на первом собеседовании серьезно повышает
IQ претендента, фактически бесплатная консультация. В следующий раз
уровень ответов несколько выше.

> K>Основной костяк теста — несколько десятков куда более стандартных

> вопросов. Скажем, а не является ли размер enum-а равным размеру инта,
> помноженному на число значений?
>
> Час от часу...
> Вроде как приходишь сдавать математику в ВУЗ, и получаешь вопрос, всегда
> ли 2*2=4 ?
> Больше похоже на проверку устойчивости психики.
>
> Кстати, когда придуман вопрос и за сколько дней до того придумавший его
> узнал правильный ответ?

Ну это-то нормальный вопрос. Есть два-три таких, неверный ответ на
все из них одновременно вполне достаточен для вывода. У кого-то
char занимает 8 байт (ровно, всегда, везде). У кого-то статические
методы располагаются в статической памяти. А другие начинают
косячить только тогда, когда спрашиваешь, где будет переменная
с ключевым словом register. Кто думает — пишет что в регистре,
кто знает — пишет другое.

Есть большая таблица, где в какой памяти что находится. Ответят,
смотрю, не ответят — черт с ней, другое спрошу.

У нас входной поток — почти исключительно студенты. Остальные
все в городе уже трудоустроены и неторопливо циркулируют между
3-4 основными фирмами города по разу в несколько лет.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[8]: издевательства над switch-ем на собеседовани
От: GlebZ Россия  
Дата: 06.12.05 09:43
Оценка:
Здравствуйте, Кодт, Вы писали:

GZ>>Знание что двойной xor возвращает то же значение нетривиально? Ну не знаю.

К>Это-то понятно. Массив отсортируй без дополнительной памяти (под счётчик)
А что значит под счетчик?

С уважением, Gleb.
ЗЫ. я просто принял здесь
Автор: pavel_turbin
Дата: 04.12.05
за догму.
Re[5]: Верно говорят...
От: Dimentiy Россия  
Дата: 06.12.05 15:20
Оценка: +1
Верно говорят: "Кто умеет — делает, кто не умеет — руководит, кто не умеет руководить — учит"...

Re[9]: издевательства над switch-ем на собеседовани
От: Глеб Алексеев  
Дата: 06.12.05 15:29
Оценка:
Здравствуйте, GlebZ, Вы писали:

К>>Это-то понятно. Массив отсортируй без дополнительной памяти (под счётчик)

GZ>А что значит под счетчик?
Бублесорт:
  int i,j; //целых 2 счетчика
  for(i=1; i<N; i++){
    for(j=0; j<N-i; j++){
      if(array[j]>array[j+1]){
        temp=array[j];
        array[j]=array[j+1];
        array[j+1]=temp;
      }
    }
  }
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Верно говорят...
От: Cyberax Марс  
Дата: 06.12.05 15:33
Оценка:
Dimentiy wrote:

> Верно говорят: "Кто умеет — делает, кто не умеет — руководит, кто не

> умеет руководить — учит"...

"Those who can, do; those who can't, teach. Those who can't teach go
into adminitstration". Не надо путать порядок

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[6]: Верно говорят...
От: kittown  
Дата: 06.12.05 15:45
Оценка:
Dimentiy wrote:
>
> Верно говорят: "Кто умеет — делает, кто не умеет — руководит, кто не
> умеет руководить — учит"...

Это вы к чему ? К знанию синтаксиса ?

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

Другая часть считает, что до такой степени синтаксис
знать нормальному человеку на практике и не нужно.

И теперь подтягивается третья, считающая, что уж обучающий
должен знать все и вся ? Я так понял, вы прицепились к
"Детально синтаксис — нет" ?

Поясняю (уже немного злобно). Берем исходную фразу
"Детально синтаксис — нет, и не скоро весь изучу, если вообще."
Детальное знание синтаксиса эквивалентно знанию всего, что
написано в стандарте о синтаксисе. Не знание как минимум одной
детали есть отсутствие детального знания всего синтаксиса. Все.

Далее, детального знания синтаксиса, как и знания всего
стандарта, тоже недостаточно для работы. Надо знать степень
поддерживаемости того-то и того-то (exported templates etc).

И наконец, вопрос — нафига преподавателю все это знать,
если студенту практически все это абсолютно бесполезно ?
Ему (студенту) не знание языка преподавателем нужно, ему
инструкции и наводки, помогающие язык изучить. Можно преподавать
и вообще не зная язык, хотя это уже вынужденный перебор из-за
недостатка кадрогово состава и заканчивается не всегда хорошо.
Можно знать язык от и до, и не найти общего языка ни с одним
студентом.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[7]: Верно говорят...
От: Аноним  
Дата: 06.12.05 16:14
Оценка:
Здравствуйте, kittown, Вы писали:

А какого возраста студенты, которым Вы эти вопрсы задаете?
Re[8]: Верно говорят...
От: kittown  
Дата: 06.12.05 16:31
Оценка:
Аноним wrote:
>
> А какого возраста студенты, которым Вы эти вопрсы задаете?

Которым задаю, те параллельно в вузе на 2..4 курсе учатся.
Бывают исключения — кто еще только абитурьент, а кто сам
работает преподавателем c++ (был случай).

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

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

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

Mikhail
Posted via RSDN NNTP Server 2.0
Re[7]: Верно говорят...
От: Dimentiy Россия  
Дата: 06.12.05 16:36
Оценка: +1
Здравствуйте, kittown, Вы писали:

K>И наконец, вопрос — нафига преподавателю все это знать,

K>если студенту практически все это абсолютно бесполезно ?
K>Ему (студенту) не знание языка преподавателем нужно, ему
K>инструкции и наводки, помогающие язык изучить. Можно преподавать
K>и вообще не зная язык, хотя это уже вынужденный перебор из-за
K>недостатка кадрогово состава и заканчивается не всегда хорошо.
K>Можно знать язык от и до, и не найти общего языка ни с одним
K>студентом.

kittown, это абсолютно бесполезно не только преподавателю, но в первую голову обучаемому.
По-моему только неграмотный преподаватель будет спрашивать такую чепуху. Даже в качестве дополнительного вопроса. Что и пытаются здесь "части" (чего? кого?) донести.

Если же это действительно для "издевательства на собеседовании" — тогда извините, психиатров нема
Re[8]: Верно говорят...
От: kittown  
Дата: 06.12.05 17:47
Оценка:
Dimentiy wrote:
>
> kittown, это /абсолютно бесполезно/ не только преподавателю, но в первую
> голову обучаемому.
> По-моему только неграмотный преподаватель будет спрашивать такую чепуху.

Балин. Это вопрос для вытягивания перспективного студента, если он
сможет предложить более-менее разумную цепочку рассуждений. На этот
или на другие непростые. Даже если окончательный ответ все равно
будет неверен.

Гарантированный ответ на него даст мало кто из преподов, которых
знаю и знал. Но порассуждать сможет любой нормальный студент. В
конце концов, удается же им догадаться, в каком типе памяти
находятся локальные статические переменные (хотя бы с точностью
до факта, что не на стеке).

Это вовсе не для того чтобы потопить.

> Даже в качестве дополнительного вопроса. Что и пытаются здесь "части"

> (чего? кого?) донести.
>
> Если же это действительно для "/издевательства/ на собеседовании" —
> тогда извините, психиатров нема

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

Mikhail
Posted via RSDN NNTP Server 2.0
Re[7]: Верно говорят...
От: Кодт Россия  
Дата: 06.12.05 17:51
Оценка: 22 (3) +1
Здравствуйте, kittown, Вы писали:

K>Не, меня этот тред окончательно удивил.


Удивил, на самом деле, ты.

Вчера сам собой придумался пример кода для запугивания претендентов на собеседовании:

И всё-таки: для собеседования, запугивания или такого изысканного посылания-на?
Оставлю в стороне тему — насколько это корректно по отношению к претендентам (возможно, только так можно сбить завышенное самомнение... всякое бывает).

Но по отношению к участникам...
Наверное, ты ошибся форумом. Поясню:
Представь себе, что ты запулил этот вопрос в:
— "Коллеги, улыбнитесь" — дальше пойдёт ёрничанье на предмет хинди-чайна-бхайбхай (потому что код абсурдный)
— "Образование" — проявится вопрос об уровне подготовки студентов, о приоритетах в изучении программирования и т.д.
— "Философия" или "Компьютерные войны" — флейм о том, в каком языке синтаксис корявее, и чей Стандарт тоньше; и ещё о том, что важнее знать: синтаксис или предметную область
— "С/С++" — если бы ты не пытался задавать направление, то всё бы скатилось к тонкостям Стандартов С и С++, глюкам и варнингам компиляторов
— "Этюды" — конкурс на самый обфусканный код, например
— "О работе" — тактика и стратегия интервью в твоём случае и вообще

То, ради чего ты написал сообщение — куда попадает? Или ты сам не знал, так, вслух помыслил.

Больше того.

Мы же не на работу принимаем, мы группы формируем

Цели у собеседования при приёме на работу и при поступлении на какие-то advanced курсы — разные. По умолчанию "собеседование" предполагает первое. А ты, оказывается, совсем другое имел в виду.

Ну тогда знаешь на кого пенять. Garbage In — Garbage Out.



Чтобы два раза не наливать, прокомментирую здесь же.

K>Одна часть считает пример кошмаром, и радостно об этом заявляет. Хотя именно о таком статусе примера сказано в исходном письме. Наверно, прочитать письмо внимательно решительно невозможно.


Кошмар трёх видов:
— о боже, я не знаю, что это
— о боже, какое издевательство над языком
— о боже, и он предлагает такие вопросы на собеседовании

K>Другая часть считает, что до такой степени синтаксис знать нормальному человеку на практике и не нужно.


K>И теперь подтягивается третья, считающая, что уж обучающий должен знать все и вся ? Я так понял, вы прицепились к "Детально синтаксис — нет" ?


K>Поясняю (уже немного злобно). Берем исходную фразу "Детально синтаксис — нет, и не скоро весь изучу, если вообще."

K>Детальное знание синтаксиса эквивалентно знанию всего, что написано в стандарте о синтаксисе. Не знание как минимум одной детали есть отсутствие детального знания всего синтаксиса. Все.

детальное_знание_синтаксиса — это бесполезная функция.

Например, я не знаю триграфов. Вообще с ними не сталкивался на практике, только на форуме пару раз попадались вопросы "а что это у меня компилятор бред выдаёт". Теперь у меня есть триггер: "компилятор гонит бред — посмотреть, нет ли там чего-то похожего на триграф".

То есть, пробелы в формальном описании предметной области покрываются эвристиками. Начиная от самой простой и эффективной "сомневаешься — избегай".

K>Далее, детального знания синтаксиса, как и знания всего стандарта, тоже недостаточно для работы. Надо знать степень поддерживаемости того-то и того-то (exported templates etc).


Не только недостаточно, но и не необходимо.
Кто-то (кажется, AVC) недавно говорил, что вся мощь С++ ему не нужна, достаточно "С с классами".
Мне нафиг сдались триграфы (ну не верю я, что когда-либо буду на телетайпном терминале С++ные программы набирать).

K>И наконец, вопрос — нафига преподавателю все это знать, если студенту практически все это абсолютно бесполезно ?

K>Ему (студенту) не знание языка преподавателем нужно, ему инструкции и наводки, помогающие язык изучить. Можно преподавать и вообще не зная язык, хотя это уже вынужденный перебор из-за недостатка кадрогово состава и заканчивается не всегда хорошо. Можно знать язык от и до, и не найти общего языка ни с одним студентом.

Вот и прекрасно. Ты попробовал себя (здесь, на форуме) в роли преподавателя.
Можешь тезисно указать, какие инструкции и наводки помогают изучить язык?

Ты уверен, что подковырка с кодом, о котором можно сказать "встречу такое у коллеги — набью морду; встречу во время отладки — набью морду ногами" поможет изучить язык?
Я уверен в обратном. Это стресс-тест в чистом виде. Если претендент не прошёл его — можно сказать "иди отсюда", но "иди учи язык дальше"?
Перекуём баги на фичи!
Re[8]: Верно говорят...
От: kittown  
Дата: 06.12.05 19:03
Оценка: -2
Кодт wrote:
>
> K>Не, меня этот тред окончательно удивил.

Добавлю: удивил стереотипностью и поспешностью ответов.

> Удивил, на самом деле, ты.

> Вчера сам собой придумался пример кода для запугивания претендентов на
> собеседовании:
> И всё-таки: для собеседования, запугивания или такого изысканного
> посылания-на?

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

> Оставлю в стороне тему — насколько это корректно по отношению к

> претендентам (возможно, только так можно сбить завышенное самомнение...
> всякое бывает).

Нет с этим никаких проблем.

> Но по отношению к участникам...

> Наверное, ты ошибся форумом. Поясню:

Отчасти это был эксперимент, проверка реакции аудитории. Ожидал
большего — как минимум меньшей поспешности.

> — "Образование" — проявится вопрос об уровне подготовки студентов, о

> приоритетах в изучении программирования и т.д.

К сожалению, как мне кажется по ситуации здесь, появится сразу ответ,
а уже потом, возможно, вопрос.

> То, ради чего ты написал сообщение — куда попадает? Или ты сам не знал,

> так, вслух помыслил.

См. выше.

> Больше того.

> Мы же не на работу принимаем, мы группы формируем
> Цели у собеседования при приёме на работу и при поступлении на какие-то
> advanced курсы — разные. По умолчанию "собеседование" предполагает
> первое. А ты, оказывается, совсем другое имел в виду.

"выдающиеся" кадры идут на стажировку по стандартным правилам. Наверно,
кто нибудь об этом спросил ?

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

> Кошмар трёх видов:

> — о боже, я не знаю, что это
> — о боже, какое издевательство над языком
> — о боже, и он предлагает такие вопросы на собеседовании

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

> Можешь тезисно указать, какие инструкции и наводки помогают изучить язык?


0) Пререквизит — университетский курс C/C++. Чтобы терминологию
не объяснять. За обучением совсем с нуля не ко мне.
1) Путеводитель, чтобы не заблудиться, в стиле Брюса Эккеля
2) Справочник — факи, гугл, полнотекстовый поиск по книгам
3) Примеры — небольшая программа на полтысячи строк. Любой
простой клиент-сервер.
4) Стажировка

В процессе — дочитывание книг и просматривание форумов
а-ля rsdn по конкретным вопросам.

Чтение нужных книг, см. сайт анатоликса.

> Ты уверен, что подковырка с кодом, о котором можно сказать "встречу

> такое у коллеги — набью морду; встречу во время отладки — набью морду
> ногами" поможет изучить язык?

Это прививка от неумения работать со сложным кодом. Ясно, что это,
ясно, что так не надо писать, ясно, что с этим делать если все же
кто-то написал.

Но пока до этого не доходит... это задачки для уже что-то
умеющих.

> Я уверен в обратном. Это стресс-тест в чистом виде. Если претендент не

> прошёл его — можно сказать "иди отсюда", но "иди учи язык дальше"?

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

Некоторым поясняю, что могут просто пойти пособеседоваться
на работу. Только там повторное собеседование — нонсенс, а
у нас — никаких проблем. Это само по себе достаточный
повод, чтобы требовать большего.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[13]: издевательства над switch-ем на собеседовани
От: jazzer Россия Skype: enerjazzer
Дата: 06.12.05 19:59
Оценка: 1 (1)
Здравствуйте, Kemm, Вы писали:

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


>>> K>>Спасибо. А зачем это было сделано, интересно? Какое-то нарушение общности...


K>Вставил обратно результат фигурного цитирования (жирным). Врочем, ладно, а то совсем уж в holy war скатимся.


А также main нельзя вызывать явно, а также main может иметь одну из по крайней мере двух сигнатур, но при этом она не может быть перегружена, у нее хз какое связывание, а также относительно main стандартом даются разные интересные гарантии, и прочая и прочая, включая то, что она называеся main и никак иначе :)
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[9]: Верно говорят...
От: Кодт Россия  
Дата: 06.12.05 20:28
Оценка: 3 (1) +1
Здравствуйте, kittown, Вы писали:

K>Добавлю: удивил стереотипностью и поспешностью ответов.


Ещё раз повторю: всё зависит от изначального позиционирования.

Когда человек спрашивает (предъявляет проблему) — находится масса желающих помочь. Причём помощь, возможно, более качественная и полная, чем ожидалось.
Автор делится опытом — хватает экспертов, чтобы обсудить подробности и разобраться до косточек.
Автор прикалывается — тоже соберётся компания...

А если начинающий дискуссию — внешне делает одно, а внутри рулит в другую сторону — это Undefined Behavior. В лучшем случае, вытащим тайные помыслы и разберёмся. В худшем случае — пофлеймим. Флеймить на RSDN тоже горазды.

>> Но по отношению к участникам...

>> Наверное, ты ошибся форумом. Поясню:

K>Отчасти это был эксперимент, проверка реакции аудитории. Ожидал большего — как минимум меньшей поспешности.


Хм. Провокация?
Или, как бы пригласил к себе на собеседование — ну так RSDN DDoS team в действии!

>> Больше того.

>>> Мы же не на работу принимаем, мы группы формируем
>> Цели у собеседования при приёме на работу и при поступлении на какие-то
>> advanced курсы — разные. По умолчанию "собеседование" предполагает
>> первое. А ты, оказывается, совсем другое имел в виду.

K>"выдающиеся" кадры идут на стажировку по стандартным правилам. Наверно, кто нибудь об этом спросил ?


Нет, ты сам об этом написал. А пока не написал, речь об этом вообще не шла.
Телепаты в отпуске, извиняйте.

<>

В 99% случаях, если программа не компилируется или компилируется неправильно — виноват не компилятор, а программист.
Согласен?
По аналогии: если общество реагирует на твоё сообщение не так, как ты ожидаешь
Перекуём баги на фичи!
Re[14]: издевательства над switch-ем на собеседовани
От: Кодт Россия  
Дата: 06.12.05 20:45
Оценка: 1 (1)
Здравствуйте, jazzer, Вы писали:

J>А также main нельзя вызывать явно, а также main может иметь одну из по крайней мере двух сигнатур, но при этом она не может быть перегружена, у нее хз какое связывание, а также относительно main стандартом даются разные интересные гарантии, и прочая и прочая, включая то, что она называеся main и никак иначе


Только не для VC! Его рантайм, в зависимости от направления ветра (опций проекта) хочет, чтобы было: main, _wmain, WinMainA, WinMainW
В смысле — хочет линкер, потому что рантайм импортирует соответствующий символ.
Перекуём баги на фичи!
Re: издевательства над switch-ем на собеседовани
От: Олег Гашев
Дата: 06.12.05 21:16
Оценка:
Здравствуйте, kittown, Вы писали:

K>Hi,


K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,

K>то где ошибка (помимо ошибки в ДНК автора) ? Если скомпилируется,
K>то почему и что будет делать ? Компилятор юзать нельзя.

K>Уже жду следующей команды студентов, желающих пособеседоваться.


K>Mikhail


IMHO некорректный вопрос. MINGW: компиллируется.VC++ не компиллируется (warnings as errors). С таким же успехом можно спрашитвать, 2+2=11?
Либо я найду путь, либо проложу его. © Свифт
Re[5]: издевательства над switch-ем на собеседовани
От: remark Россия http://www.1024cores.net/
Дата: 06.12.05 21:36
Оценка: 2 (2)
Здравствуйте, kittown, Вы писали:

K>Нам не нужен зазубривший версию c++, расходящуюся со стандартом.


Вы можете назвать хотя бы одну реализацию С++ не расходящуюся со стандартом?

Например, такой популярный компилятор как msvc++:
1. В некоторых аспектах нарушает стандарт (это надо знать, что бы не делать ошибок)
2. В некоторых аспектах расширяет стандарт (это надо энать, что бы более эффективно его использовать)
3. В некоторых аспектах имеет особенности (это надо энать, что бы более эффективно его использовать)


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


Какого человека Вы бы выбрали себе в водители, который ездит уже год и не видел ПДД, или который зазубрил ПДД?

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


Лично про себя могу сказать (не назову себя новичком), что я просто не навижу задания для компилятора на подобие приведённого и не уверен, что смогу на такое ответить.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[6]: издевательства над switch-ем на собеседовани
От: CreatorCray  
Дата: 06.12.05 22:53
Оценка:
Здравствуйте, remark, Вы писали:

R>Какого человека Вы бы выбрали себе в водители, который ездит уже год и не видел ПДД, или который зазубрил ПДД?

Как сказал один мой друг: "от практиков польза зачастую практическая, а от теоретиков обычно только теоретическая".
выберу практика...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 06.12.05 23:17
Оценка:
Здравствуйте, pavel_turbin, Вы писали:

_>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


И это полемика людей, которые говорят, что читали стандарт? std::sort() — и ни одного выделения памяти

Re[3]: издевательства над switch-ем на собеседовани
От: remark Россия http://www.1024cores.net/
Дата: 07.12.05 08:12
Оценка:
Здравствуйте, Аноним, Вы писали:

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


_>>спросите лучще как отсортировать массив без выделения памяти. Это хороший фильт слабоумных.


А>И это полемика людей, которые говорят, что читали стандарт? std::sort() — и ни одного выделения памяти


Ну вот именно. И даже на стеке ничего не будет. Т.к. я даже не знаю, что такое стек.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[6]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 07.12.05 09:04
Оценка:
remark wrote:
>
> K>Нам не нужен зазубривший версию c++, расходящуюся со стандартом.
>
> Вы можете назвать хотя бы одну реализацию С++ не расходящуюся со стандартом?

Нет, хотя первой стал бы проверять Comeau.

> Например, такой популярный компилятор как msvc++:


Знаем. Кстати, конкретно на моих занятиях мы его не используем. На
других — кто как.

> Человек зазубривший Стандарт... напоминает комическую ситуацию с

> Александреску, который пишет код, который не может скомпилировать ни
> один из существующих компиляторов

Акцент был не на зазубривании — (человек с такой памятью не встречался,
но пригодился бы), а на том, что зазубрена старая версия стандарта.
Чем человек руководствовался, когда выбирал что зубрить ?

Недавно была на собеседовании студентка у другого собеседователя
при мне, основательно просела на Си, но просела по обьему знаний,
а не по обьему чуши. Это разные вещи. Потом пришла в мыло и спросила,
стоит ли ей учить c++ по Страуструпу той редакции, что старее 1997
года. Все, у этой дамы с таким подходом проблем точно не будет,
дело времени. Не удивлюсь, если потом придет и пройдет все
существенные тесты, чтобы сразу идти на стажировку. А то и
просто на работу устроится.

> Какого человека Вы бы выбрали себе в водители, который ездит уже год и

> не видел ПДД, или который зазубрил ПДД?



> Я знаю людей, которые вполне приемлемо разрабатывают корпоративные

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

Сработает при четком coding style. Иначе вылезают необъяснимые
ошибки на смене компиляторов.

> Лично про себя могу сказать (не назову себя новичком), что я просто не

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

Я тоже, когда на них требуют обязательно верного ответа, и/или не
подбрасывают никаких подсказок. Я и сам подсказываю, и неответу
значения не придаю. Последний пункт принципиален.

Mikhail
Posted via RSDN NNTP Server 2.0
Re: издевательства над switch-ем на собеседовани
От: Alexey Chen Чили  
Дата: 07.12.05 09:11
Оценка: 1 (1) :)
Здравствуйте, kittown, Вы писали:

K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

K>Вопрос претендентам — скомпилируется ли ? Если не скомпилируется,


Предлагаю встречный вопрос

int main()
  {
    switch ( 0 )
      switch ( 1 )
        while ( 0 )
          {
            case 0: printf("hedgehog here!\n");
            case 1: printf("hello world!\n");
            default: printf("nope\n");
          }
    return 0;
  }


чего напечатаем?
Re[10]: Верно говорят...
От: kittown  
Дата: 07.12.05 09:15
Оценка:
Кодт wrote:
>
> K>Добавлю: удивил стереотипностью и поспешностью ответов.
>
> Ещё раз повторю: всё зависит от изначального позиционирования.

Согласен. Он было почти не сформулировано. Зато получил
кучу другой полезной информации.

> Когда человек спрашивает (предъявляет проблему) — находится масса

> желающих помочь. Причём помощь, возможно, более качественная и полная,
> чем ожидалось.

Факт.

>> > Но по отношению к участникам...

>> > Наверное, ты ошибся форумом. Поясню:
>
> K>Отчасти это был эксперимент, проверка реакции аудитории. Ожидал
> большего — как минимум меньшей поспешности.
>
> Хм. Провокация?

Ненамеренная.

> Нет, ты сам об этом написал. А пока не написал, речь об этом вообще не шла.

> Телепаты в отпуске, извиняйте.

Напрасно.

> В 99% случаях, если программа не компилируется или компилируется

> неправильно — виноват не компилятор, а программист.
> Согласен?

Да.

> По аналогии: если общество реагирует на твоё сообщение не так, как ты

> ожидаешь

То это говорит и о сообщении, и о сообществе. Необязательно по
шкале "хорошо-плохо".

Mikhail
Posted via RSDN NNTP Server 2.0
Re[7]: издевательства над switch-ем на собеседовани
От: remark Россия http://www.1024cores.net/
Дата: 07.12.05 09:24
Оценка:
Здравствуйте, kittown, Вы писали:

K>remark wrote:

>>
>> K>Нам не нужен зазубривший версию c++, расходящуюся со стандартом.
>>
>> Вы можете назвать хотя бы одну реализацию С++ не расходящуюся со стандартом?

K>Нет, хотя первой стал бы проверять Comeau.



Я не верю, что он полностью соответствует стандарту. Я не верю, что в нём нет расширений, которые Хорошо использовать. Я не верю, что в нём нет особенностей, которуе надо знать, что бы Хорошо кодировать.


>> Я знаю людей, которые вполне приемлемо разрабатывают корпоративные

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

K>Сработает при четком coding style. Иначе вылезают необъяснимые

K>ошибки на смене компиляторов.


Я достаточно сомнительно отношусь к тому, что бы большой корпоративный проект, который использует ряд технологий (сетевые/компонентные/графические и т.д.), в котором [в силу необходимости] проводилась оптимизация кода по быстродействию, в котором в силу понятных причин работали не только профессионалы мирового уровня, переводился на другой компилятор. И уж без необъяснимых ошибок тут никак не обойтись.



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[8]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 07.12.05 09:35
Оценка:
remark wrote:

>> > Вы можете назвать хотя бы одну реализацию С++ не расходящуюся со

> стандартом?
>
> K>Нет, хотя первой стал бы проверять Comeau.
>
> Я не верю, что он полностью соответствует стандарту. Я не верю, что в
> нём нет расширений, которые Хорошо использовать. Я не верю, что в нём
> нет особенностей, которуе надо знать, что бы Хорошо кодировать.

Обычно использование таких особенностей весьма не рекомендуется. Хотя
это зависит от того, насколько важна оптимизация бинарника (у нас все
равно главный боттлнек — общение между хостами).

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

Но за всех не скажу.

> Я достаточно сомнительно отношусь к тому, что бы большой корпоративный

> проект, который использует ряд технологий
> (сетевые/компонентные/графические и т.д.), в котором [в силу
> необходимости] проводилась оптимизация кода по быстродействию, в котором
> в силу понятных причин работали не только профессионалы мирового уровня,
> переводился на другой компилятор. И уж без необъяснимых ошибок тут никак
> не обойтись.

Смены версий компилятора может оказаться достаточно. Вместе с очередным
обновлением ОС и железа под ней. Речь даже не о gcc, а о компиляторах на
solaris/aix.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[2]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 07.12.05 10:07
Оценка:
Alexey Chen wrote:
>
> чего напечатаем?

Жестоко.

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

Но проверка компилятором дает банальный
unreachable code. Сразу и не заметил.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[8]: издевательства над switch-ем на собеседовани
От: Lorenzo_LAMAS  
Дата: 07.12.05 10:20
Оценка: 7 (1)
R>Я не верю, что он полностью соответствует стандарту. Я не верю, что в нём нет расширений, которые Хорошо использовать.


www.edg.com
Цитата

Our C++ front end was started in 1991; it was first released in 1992. It supports the C++ language of the ISO/IEC 14882:2003 standard (the complete language; see our description of language features).


Как я понимаю, в некоторых местах даже у разработчиков компиляторов возникают разночтения стандарта, но это не значит, что компилятор не на 100% соответствует стандарту, это значит, есть проблемы в стандарте. Их исправляют и это очень быстро проявляется в компиляторах, например, с доступом вложенных классов к членам охватывающего — есть defect report, есть текст стандарта (который еще не исправлен, несмотря на дефект репорт) и есть компиляторы (например, comeau), которые этот дефект репорт учитывают.

Расширения в комо есть (например, в документации есть такой пункт Language Dialects), но это не делает его нестандартным.
Of course, the code must be complete enough to compile and link.
Re[8]: издевательства над switch-ем на собеседовани
От: Кодт Россия  
Дата: 07.12.05 10:27
Оценка:
Здравствуйте, remark, Вы писали:

R>Я достаточно сомнительно отношусь к тому, что бы большой корпоративный проект, который использует ряд технологий (сетевые/компонентные/графические и т.д.), в котором [в силу необходимости] проводилась оптимизация кода по быстродействию, в котором в силу понятных причин работали не только профессионалы мирового уровня, переводился на другой компилятор. И уж без необъяснимых ошибок тут никак не обойтись.


VC6 -> gcc2.72 (VxWorks 5.0) -> eVC4 (WinCE4.2) -> gcc2.96 (VxWorks 5.5), слава богу, что всё для x86.
Ничего, большая часть проблем была прибита во время кровавых перекомпиляций.
Перекуём баги на фичи!
Re[5]: издевательства над switch-ем на собеседовани
От: ScorpZ Украина  
Дата: 07.12.05 10:47
Оценка:
Здравствуйте, kittown, Вы писали:

K>igna wrote:

>>
>> Здравствуйте, kittown, Вы писали:
>>
>>> > K>Если скомпилируется, то почему?
>>
>>> > Каков был бы ваш ответ на этот вопрос?
>>
>> K>Некоторое время назад — "не знаю".
>>
>> А сейчас? Меня интересует ваш теперешний ответ на вопрос "Почему
>> скомпилируется?"

K>Потому что после swith(smth) идет оператор, частным случаем

K>которого является блок {operators}. А default, case N — это
K>только метки, которые допускается использовать до того,
K>как оператор/блок после switch закончился. Более того,
K>хотя бы одна из них должна быть использована перед
K>оператором или в начале блока, иначе получится unreachable
K>code и компилятор начнет сопротивляться.

Как оказалось от компилятора зависит — будет сопротивляться или нет
gcc одинаково откомпилировал что —
а)

switch (11)
{
default : cout << "234" ;
}
что
б)

switch (11)
{
cout << "234" ;
}
Re[9]: издевательства над switch-ем на собеседовани
От: remark Россия http://www.1024cores.net/
Дата: 07.12.05 11:01
Оценка: +1
Здравствуйте, kittown, Вы писали:

K>Смены версий компилятора может оказаться достаточно. Вместе с очередным

K>обновлением ОС и железа под ней. Речь даже не о gcc, а о компиляторах на
K>solaris/aix.

Есть UB, а есть конкретная документированная реализация языка программирования. Не путайте эти вещи.
В msvc есть много т.н. microsoft specific, и при его использовании мне не грозит ни смена версии компилятора, ни смена железа.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[9]: издевательства над switch-ем на собеседовани
От: remark Россия http://www.1024cores.net/
Дата: 07.12.05 11:04
Оценка: -1
Здравствуйте, Кодт, Вы писали:

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


R>>Я достаточно сомнительно отношусь к тому, что бы большой корпоративный проект, который использует ряд технологий (сетевые/компонентные/графические и т.д.), в котором [в силу необходимости] проводилась оптимизация кода по быстродействию, в котором в силу понятных причин работали не только профессионалы мирового уровня, переводился на другой компилятор. И уж без необъяснимых ошибок тут никак не обойтись.


К>VC6 -> gcc2.72 (VxWorks 5.0) -> eVC4 (WinCE4.2) -> gcc2.96 (VxWorks 5.5), слава богу, что всё для x86.

К>Ничего, большая часть проблем была прибита во время кровавых перекомпиляций.

Я не говорю, что такое не возможно. Но:
1. Ключевое слово кровавых
2. Сколько программ в жизни переживают такое? Я думаю в процентном соотношении мало.
3. Обычно с начала проекта либо, утверждается, что проект будет переноситься, либо утверждается(подразумевается), что проект не будет переноситься, либо люди его просто делают с подсознательным расчётом на перенос.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[9]: издевательства над switch-ем на собеседовани
От: remark Россия http://www.1024cores.net/
Дата: 07.12.05 11:16
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Расширения в комо есть (например, в документации есть такой пункт Language Dialects), но это не делает его нестандартным.



На ВСЕЛЕНСКОМ СТАНДАРТЕ С++ писать программы нельзя, только если на бумажке.
Я могу писать только (к примеру) на Comeau C++. Comeau C++ не равен тождественно стандарту С++, хотя зачастую меня совершенно не интересует отношение Comeau C++ и стандарта.

Я стандарте есть такие вещи как implementation defined. Т.е. фактически он не является полным.
К примеру, из стандарта я не знаю вычислительные сложности всех функций, которые в нём есть, но я могу знать эти сложности для той реализации языка, на которой я пишу, и это может заставить меня реализовать какую-то функцию вручную.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[5]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 07.12.05 11:36
Оценка:
Здравствуйте, Глеб Алексеев, Вы писали:

ГА>Здравствуйте, pavel_turbin, Вы писали:


_>>но во время пузырька вам нужно будет обменять 2 ячейки памяти? это нетривиально без 3-й ячейки. Вот и требуется найти рещение как обойтись без этой дополнительной ячейки.

ГА>ИМХО, маразм.

ГА>Если временную переменную при перестановке элементов считать дополнительной памятью, то что делать со счетчиками циклов? Хотелось бы на код успешного кандидата взглянуть.


ИМХО — имелось ввиду следущее решение:


static void Main()
        {
            int a = 144;
            int b = 256;

            Console.WriteLine(a);
            Console.WriteLine(b);

            a += b;
            b = a - b;
            a = a - b;

            Console.WriteLine(a);
            Console.WriteLine(b);
        }


Глупый финт ушами один словом.
Re[3]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 07.12.05 11:37
Оценка:
Здравствуйте, RomanOdaisky, Вы писали:

>> Вот если Duff's device подсунуть на собеседовании, то это издевательство.


RO>Одновременно написали А вот еще:


RO>
RO>int x, y;

RO>. . .

RO>x ^= y ^= x ^= y;
RO>


RO>Что делает? 30 сек на размышления!


RO>С уважением, Роман.


Нормальный человек вот так напишет

static void Main()
        {
            int a = 144;
            int b = 256;

            Console.WriteLine(a);
            Console.WriteLine(b);

            a += b;
            b = a - b;
            a = a - b;

            Console.WriteLine(a);
            Console.WriteLine(b);
        }


Извините, что на С# — не люблю я С++
Re[6]: издевательства над switch-ем на собеседовани
От: Глеб Алексеев  
Дата: 07.12.05 11:38
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Глупый финт ушами один словом.

С финтом ушами вместо swap все понятно, а вот с сортировкой...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 07.12.05 11:39
Оценка:
Здравствуйте, Шура Ренийский, Вы писали:

ШР>Здравствуйте, Аноним, Вы писали:


А>>Итого задача свелась к обмену 2 значений без промежуточной переменной.

ШР>можно типа такого
ШР>
ШР>    a += b;

ШР>    b = a - b;

ШР>    a = a - b;
ШР>


Вах. Код до наименований переменных совпал...Телепатия ?
Re[10]: издевательства над switch-ем на собеседовани
От: Lorenzo_LAMAS  
Дата: 07.12.05 11:44
Оценка:
R>На ВСЕЛЕНСКОМ СТАНДАРТЕ С++ писать программы нельзя, только если на бумажке.

Вполне можно.
Of course, the code must be complete enough to compile and link.
Re[9]: издевательства над switch-ем на собеседовани
От: Dimentiy Россия  
Дата: 07.12.05 18:57
Оценка:
Здравствуйте, kittown, Вы писали:


K>(у нас все равно главный боттлнек — общение между хостами).



Ага, в учебном центре, да?
Re[8]: Нужно ли знать стандарт
От: Erop Россия  
Дата: 07.12.05 19:19
Оценка:
Здравствуйте, remark, Вы писали:

R>Я достаточно сомнительно отношусь к тому, что бы большой корпоративный проект, который использует ряд технологий (сетевые/компонентные/графические и т.д.), в котором [в силу необходимости] проводилась оптимизация кода по быстродействию, в котором в силу понятных причин работали не только профессионалы мирового уровня, переводился на другой компилятор. И уж без необъяснимых ошибок тут никак не обойтись.


А зря.
Я вот таким делом как-то занимался. Даже несколько раз .
И скажу что это вполне возможно. И необъяснимых ошибок не бывает, бывает искусство их отладки.
Но вот что я могу сказать про знание стандарта. К сожалению, в C++ есть очень много чудовищных наворотов, и когда программист пользуется ими по наитию, или методом проб и ошибок, то иногда бывает очень трудно понять что же он имел в виду, если код не соответсвует стандарту

Теперь я требую от подчинённых трёх простых вещей
1) Не пользоваться в коде тонкостями стандарта, если это возможно
2) Если уж никак не обойтись без нарушения п. 1, то надо найти в стандарте описание этих тонокстей.
3) Написать в комментарии к коду на что заложился. Хотя бы ссылку на стандарт дать. По пунктам.

Такой вот компромисс
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[10]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 07.12.05 21:31
Оценка:
Dimentiy wrote:
>
> K>(у нас все равно главный боттлнек — общение между хостами).
>
> Ага, в учебном центре, да?

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

Mikhail
Posted via RSDN NNTP Server 2.0
Re[3]: издевательства над switch-ем на собеседовани
От: Alexey Chen Чили  
Дата: 08.12.05 08:44
Оценка:
Здравствуйте, kittown, Вы писали:

K>Жестоко.

Да а так?

int main()
  {
    switch ( 0 )

      default:

        if ( 1 )
          switch ( 1 )
            case 1: printf("hello world!\n");
        else
          while ( 0 )
            case 0: printf("hedgehog here!\n");

    return 0;
  }
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 08.12.05 09:02
Оценка:
Alexey Chen wrote:
>
> K>Жестоко.
> Да а так?


> int main()
>   {
>     switch ( 0 )
> 
>       default:
> 
>         if ( 1 )
>           switch ( 1 )
>             case 1: printf("hello world!\n");
>         else
>           while ( 0 )
>             case 0: printf("hedgehog here!\n");
> 
>     return 0;
>   }


Я ответил, но все равно красиво.

Mikhail
Posted via RSDN NNTP Server 2.0
Re[11]: издевательства над switch-ем на собеседовани
От: remark Россия http://www.1024cores.net/
Дата: 08.12.05 09:28
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

R>>На ВСЕЛЕНСКОМ СТАНДАРТЕ С++ писать программы нельзя, только если на бумажке.


L_L>Вполне можно.


Даже если синтаксически она будет в полном соответствии стандарту языка ISO, то будет иметь место очень большой набор определений тех вещей, которые в упомянутом стандарте implementation specific или просто не указаны, однако влияют на целевые характиристики программы.

Ещё один пример: вычислительная и ёмкостная сложность программы являются её важными хар-ками (которые определяют времена отклика и минимальные требования к аппаратному обеспечению). Однако так любимый многими стандарт языка С++ огранизации ISO ничего не говорит об этих характиристиках программы.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[9]: Нужно ли знать стандарт
От: remark Россия http://www.1024cores.net/
Дата: 08.12.05 09:32
Оценка:
Здравствуйте, Erop, Вы писали:

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


R>>Я достаточно сомнительно отношусь к тому, что бы большой корпоративный проект, который использует ряд технологий (сетевые/компонентные/графические и т.д.), в котором [в силу необходимости] проводилась оптимизация кода по быстродействию, в котором в силу понятных причин работали не только профессионалы мирового уровня, переводился на другой компилятор. И уж без необъяснимых ошибок тут никак не обойтись.


E>А зря.

E>Я вот таким делом как-то занимался. Даже несколько раз .
E>И скажу что это вполне возможно. И необъяснимых ошибок не бывает, бывает искусство их отладки.
E>Но вот что я могу сказать про знание стандарта. К сожалению, в C++ есть очень много чудовищных наворотов, и когда программист пользуется ими по наитию, или методом проб и ошибок, то иногда бывает очень трудно понять что же он имел в виду, если код не соответсвует стандарту

E>Теперь я требую от подчинённых трёх простых вещей

E>1) Не пользоваться в коде тонкостями стандарта, если это возможно
E>2) Если уж никак не обойтись без нарушения п. 1, то надо найти в стандарте описание этих тонокстей.
E>3) Написать в комментарии к коду на что заложился. Хотя бы ссылку на стандарт дать. По пунктам.

E>Такой вот компромисс



Я не очень точно выразил свою мыслю.
Проекты бывают:
— те в которых сразу чётко определено, что проект будет переноситься (или все это понимают)
— те в которых определено, что проект не будет переноситься (или об этом просто не думают)

Судя по тем требованиям, которые Вы выдвигаете к подчинённым, у Вас первый вариант.
Я же имел в виду второй вариант.
В частных случаях перевод проекта не требуется вообще, если пользоваться только очень чётко ограниченным подмножеством языка.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[4]: издевательства над switch-ем на собеседовани
От: Кодт Россия  
Дата: 08.12.05 13:17
Оценка:
Здравствуйте, Alexey Chen, Вы писали:

AC>Да а так?


Я догадался, (кстати, а при чём здесь ёжики?) — но это же ужас!
Вот не думал, что вложенные свитчи таят такое заподло Хорошо, здесь пример надуманный. Но ведь и в реальной жизни можно об косяк убиться.
Перекуём баги на фичи!
Re[5]: издевательства над switch-ем на собеседовани
От: Centaur Россия  
Дата: 08.12.05 16:37
Оценка: :)
Здравствуйте, Кодт, Вы писали:

К>Вот не думал, что вложенные свитчи таят такое заподло Хорошо, здесь пример надуманный. Но ведь и в реальной жизни можно об косяк убиться.


Switch Statement Considered Goto?
Re: издевательства над switch-ем на собеседовани
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 08.12.05 18:23
Оценка: :)
Здравствуйте, kittown, Вы писали:

K>Вчера сам собой придумался пример кода для запугивания

K>претендентов на собеседовании:

K>#include <iostream>

K>int main()
K>{
K> switch(0) default: std::cout << "Hello World!" << std::endl;
K>};

На вопрос "как живешь?" — задумался, грязно выругался, потом напился, долго бился головой об стену и набил морду вопрошавшему. Вообщем, ушел от ответа.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[6]: издевательства над switch-ем на собеседовани
От: Pavel Chikulaev Россия  
Дата: 09.12.05 11:56
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Здравствуйте, Кодт, Вы писали:


К>>Вот не думал, что вложенные свитчи таят такое заподло Хорошо, здесь пример надуманный. Но ведь и в реальной жизни можно об косяк убиться.


C>Switch Statement Considered Goto?

В ООП я думаю да Но так как С++ не только ООП язык, то нет
Re[10]: Нужно ли знать стандарт
От: srggal Украина  
Дата: 09.12.05 12:34
Оценка:
Здравствуйте, remark, Вы писали:

R>Проекты бывают:

R>- те в которых сразу чётко определено, что проект будет переноситься (или все это понимают)
R>- те в которых определено, что проект не будет переноситься (или об этом просто не думают)

ИМХО, вот разработчики проектов второго типа, обычно и страдают от отсутсвия мыслей о переносимости, ибо довольно часто возникает у заказчика в ходе работы желание сделать все перенгосимым, и влетает заказчик в большие бапки, а разработчики в тупор, и недоволен заказчик, и ругаются разработчики.
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[11]: Нужно ли знать стандарт
От: remark Россия http://www.1024cores.net/
Дата: 09.12.05 13:03
Оценка:
Здравствуйте, srggal, Вы писали:

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


R>>Проекты бывают:

R>>- те в которых сразу чётко определено, что проект будет переноситься (или все это понимают)
R>>- те в которых определено, что проект не будет переноситься (или об этом просто не думают)

S>ИМХО, вот разработчики проектов второго типа, обычно и страдают от отсутсвия мыслей о переносимости, ибо довольно часто возникает у заказчика в ходе работы желание сделать все перенгосимым, и влетает заказчик в большие бапки, а разработчики в тупор, и недоволен заказчик, и ругаются разработчики.

S>

Если большие бабки, то почему разработчики ругаются


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[12]: Нужно ли знать стандарт
От: srggal Украина  
Дата: 09.12.05 13:10
Оценка:
Здравствуйте, remark, Вы писали:

R>Если большие бабки, то почему разработчики ругаются


Потому как бапки:
1) идут не разработчикам;
2) если бы думать за раннее, то можно срубить теже бапки, но с меньшими затратами;

Как Вариант, если думать за раннее, то в такорм случае можно заьребовать бапки меньше тезх, которые были бы в случае проекта 2го типа, но большие чем если бы изначально заказчик хотел переносимый проект, и тогда вероятней всего и заказчик будет рад (может быть немного расстроен, но уж точно не в ярости ), и разработчики меньше будут ругаться, и отдельный эстимэйт принесет денегна фирму.

... << RSDN@Home 1.1.4 stable rev. 510>>
Re[13]: Нужно ли знать стандарт
От: remark Россия http://www.1024cores.net/
Дата: 09.12.05 13:15
Оценка:
Здравствуйте, srggal, Вы писали:

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


R>>Если большие бабки, то почему разработчики ругаются


S>Потому как бапки:

S> 1) идут не разработчикам;
S> 2) если бы думать за раннее, то можно срубить теже бапки, но с меньшими затратами;

S>Как Вариант, если думать за раннее, то в такорм случае можно заьребовать бапки меньше тезх, которые были бы в случае проекта 2го типа, но большие чем если бы изначально заказчик хотел переносимый проект, и тогда вероятней всего и заказчик будет рад (может быть немного расстроен, но уж точно не в ярости ), и разработчики меньше будут ругаться, и отдельный эстимэйт принесет денегна фирму.



Слава богу у нас не штучный продукт и такой заказцик будет просто послан



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[14]: Нужно ли знать стандарт
От: srggal Украина  
Дата: 09.12.05 13:20
Оценка:
Здравствуйте, remark, Вы писали:


R>Слава богу у нас не штучный продукт и такой заказцик будет просто послан


ТОже вариант

А если думать за раннее, благо, не очень сложно, то можно было и не посылать.

ЗЫ
Можно и не отвечать ИБО ОФФТОП по сути
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[3]: издевательства над switch-ем на собеседовани
От: Аноним  
Дата: 09.12.05 13:45
Оценка:
K>подобными вещами — c++ faq lite + cpp faq book ver2

а что это за faq'и ?
Re[4]: издевательства над switch-ем на собеседовани
От: kittown  
Дата: 09.12.05 13:49
Оценка:
Аноним wrote:
>
> K>подобными вещами — c++ faq lite + cpp faq book ver2
>
> а что это за faq'и ?

http://www.parashift.com/c++-faq-lite/
http://www.parashift.com/c++-faq-lite/faq-book.html

Mikhail
Posted via RSDN NNTP Server 2.0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.