avva: (moose)
avva ([personal profile] avva) wrote2013-05-13 01:17 am

альтернатива физзбаззу

Цитирую из подзамочной записи с разрешения автора, который работает в американской компании и интервьюирует программистов:
Интесная закономерность выявляется. Мы начинаем интервью с того, что просим кандидата прочитать вот такой код, и сказать, что он делает. Как бы он назвал эту функцию?

private static int ok(int a, int b) {
   while (a >= b) a -= b;
   return a;
}

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

[identity profile] huzhepidarasa.livejournal.com 2013-05-13 01:10 pm (UTC)(link)
Верно. Но реализовать все же можно.

[identity profile] cmm.livejournal.com 2013-05-13 02:51 pm (UTC)(link)
даже на ZetaC?

[identity profile] huzhepidarasa.livejournal.com 2013-05-13 03:13 pm (UTC)(link)
Погуглил данный термин, ничего подходящего не нашел. Это какая-то суперстандартная или, наоборот, супернестандартная реализация?
Edited 2013-05-13 15:14 (UTC)

[identity profile] cmm.livejournal.com 2013-05-13 05:23 pm (UTC)(link)
и правда не гуглится от слова вообще, что впрочем нисколько не удивительно.
это такая реализация C, написанная в позапрошлом веке для лисп-машин, исключительно ради компиляции X.  X, говорят, даже компилировался и работал.

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

[identity profile] huzhepidarasa.livejournal.com 2013-05-13 06:06 pm (UTC)(link)
Ну если других препятствий нет, то да, вполне ;) Вообще-то решение тупое до невозможности, может быть, поэтому его не сразу видно.

[identity profile] cmm.livejournal.com 2013-05-13 06:59 pm (UTC)(link)
ну если проверка равенства гарантированно работает, тогда понятно.

[identity profile] blacklion.livejournal.com 2013-05-13 05:23 pm (UTC)(link)
А как, кстати? Я вот, кажется, чего-то не вижу. Через сравнение на равенство? Т.е. сначала пробежать по и поискать нет ли где-то равенства, и если есть, то это пересечение?
Я вот не помню, гарантирует ли нам стандарт хотя бы сравнение на равенство двух произвольных указателей...

[identity profile] cmm.livejournal.com 2013-05-13 05:25 pm (UTC)(link)
я бы на месте стандарта не гарантировал, но проверять лень.
представьте себе, например, сегментированную архитектуру с перекрывающимися сегментами.

[identity profile] blacklion.livejournal.com 2013-05-13 05:26 pm (UTC)(link)
Вот-вот, и я именно об этом. Поэтому я не вижу способа написать правильный memmove(), который будет работать на любой архитектуре.

[identity profile] huzhepidarasa.livejournal.com 2013-05-13 06:13 pm (UTC)(link)
Да, гарантирует, даже на сегментированной архитектуре, иначе было бы совсем-совсем тошно.

"If two pointers point to the same object or function, they compare equal".

[identity profile] blacklion.livejournal.com 2013-05-13 06:14 pm (UTC)(link)
Ну, тогда понятно, как это сделать правильно. Хотя, конечно, никто так не делает.