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] dmarck.livejournal.com 2013-05-12 11:01 pm (UTC)(link)
стоп-стоп, откуда там обработка результата как логического?!

[identity profile] morfizm.livejournal.com 2013-05-12 11:02 pm (UTC)(link)
Она будет в вызывающем коде:
if (ok(a, b)) {
...

Вы когда-нибудь видели целочисленное выражение, в котором один из членов вычислялся бы функцией с названием "ok"? :)

напомнили

[identity profile] dmarck.livejournal.com 2013-05-12 11:09 pm (UTC)(link)
изрядная натяжка, как мне кажется.

[long, long time ago]

в своё время, в конце 80х, мы на пару с коллегою написали обфускатор языка С, который мало того что всё форматировал в 87 симфолов, так ещё и все идентификаторы переводил в набор "малое l, большое I и единица".

Потому как были требования, чтоб приложения к курсовым и дипломам компилировались и работали, а от тупых тыряльщиков хотелось защититься ;)

Re: напомнили

[identity profile] morfizm.livejournal.com 2013-05-13 07:56 am (UTC)(link)
Ужос.
Но если курсовые и дипломные принимались с кодом, прошедшим обфускатор, можно было бы приколоться и сделать, чтобы обфускатор генерировал какой-нибудь ASCII-art. Например, "Слава КПСС!" (по букве на страницу, читаешь, листая) или что-то в таком духе :)

[personal profile] ichthuss 2013-05-12 11:10 pm (UTC)(link)
В яве целочисленный и булев типы различны. Такой код просто не скомпилируется.

[identity profile] morfizm.livejournal.com 2013-05-13 07:54 am (UTC)(link)
Я не сообразил, что это джава. Подумал, что C, потом подумал что C++. Но это не может быть C++, там нет двоеточия после private.

[identity profile] efix.livejournal.com 2013-05-13 01:31 pm (UTC)(link)
Это мог бы быть и C#

[identity profile] breqwas.livejournal.com 2013-05-13 12:02 am (UTC)(link)
Видел. И функцию IsTestingMode(), возвращающую путь к файлу, видел. И даже не считаю, что её надо менять. :-) Много всякого бывает на свете, а языки с динамической типизацей позволяют жить довольно расслабленно.

[identity profile] morfizm.livejournal.com 2013-05-13 07:53 am (UTC)(link)
Ну я имел в виду нормальный код.
Если так, то я совсем недавно видел метод get, у которого есть опциональный параметр replace, равный по умолчанию true, и в случае replace он иногда делает delete.

[identity profile] mopexod.livejournal.com 2013-05-13 10:20 am (UTC)(link)
get, который делает delete - это как раз логично: сделал get, взял себе один, больше не осталось.

[identity profile] breqwas.livejournal.com 2013-05-13 06:36 pm (UTC)(link)
...вот, скажем, перловые файловые проверки: http://perldoc.perl.org/functions/-X.html
Они все булевы в том смысле, что использовать их предлагается в духе do_something() if -f $file (и их так обычно и используют), но есть одна (-s File has nonzero size), которая возвращает не 1, а число (размер файла в байтах).

Есть в этом что-то плохое? Нет, нет ничего плохого. Кто хочет, тот пишет do_something() if -s $file. Кто слишком умный, но при этом позабыл про File::stat, тот пишет $size = sum map { -s $_ } @filelist. Все довольны, TIMTOWTDI.

Я, возможно, неправ, но вроде бы ситуация, когда "булева" функция в качестве true-значения возвращает что-то более интересное, чем единицу, вполне нормальна для языков с динамической типизацией.
Edited 2013-05-13 18:38 (UTC)

[identity profile] huzhepidarasa.livejournal.com 2013-05-14 04:18 am (UTC)(link)
Быстро тогда скажите мне, что делает функция

void free_frobnitz(frobnitz_t** frobnitz);

? Язык C.