альтернатива физзбаззу
May. 13th, 2013 01:17 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Цитирую из подзамочной записи с разрешения автора, который работает в американской компании и интервьюирует программистов:
Интесная закономерность выявляется. Мы начинаем интервью с того, что просим кандидата прочитать вот такой код, и сказать, что он делает. Как бы он назвал эту функцию?
private static int ok(int a, int b) {
while (a >= b) a -= b;
return a;
}
Пока результаты такие, что после этого вопроса интервью можно заканчивать. Если человек отвечает нормально на этот вопрос, то и дальше отвечает нормально. Если вообще близко не может понять о чем речь, то дальше только хуже.
no subject
Date: 2013-05-13 06:13 am (UTC)no subject
Date: 2013-05-13 07:10 am (UTC)no subject
Date: 2013-05-13 09:29 am (UTC)no subject
Date: 2013-05-13 08:32 am (UTC)no subject
Date: 2013-05-13 09:30 am (UTC)no subject
Date: 2013-05-13 10:01 am (UTC)http://en.wikipedia.org/wiki/C_data_types
no subject
Date: 2013-05-13 10:38 am (UTC)no subject
Date: 2013-05-13 10:59 am (UTC)no subject
Date: 2013-05-13 11:25 am (UTC)Параграф '3.1.2.5 Types' (вообще не упоминает слово byte):
An object declared as type char is large enough to store any member of the basic execution character set.
Параграф '1.6 DEFINITIONS OF TERMS':
Byte --- the unit of data storage in the execution environment large enough to hold any member of the basic character set of the execution environment.
Каждый из них "large enough", но про одинаковость - ни слова.
no subject
Date: 2013-05-13 11:27 am (UTC)Параграф '3.1.2.5 Types' (вообще не упоминает слово byte):
An object declared as type char is large enough to store any member of the basic execution character set.
Параграф '1.6 DEFINITIONS OF TERMS':
Byte --- the unit of data storage in the execution environment large enough to hold any member of the basic character set of the execution environment.
Каждый из них "large enough", но про одинаковость - ни слова.
no subject
Date: 2013-05-13 01:09 pm (UTC)no subject
Date: 2013-05-13 01:40 pm (UTC)no subject
Date: 2013-05-13 01:46 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2013-05-13 11:28 am (UTC)Т.е. вообще-то, указатели, которые получены от двух вызовов malloc()'а в совсем-совсем стандартном C не имеют отношения порядка между собой.
Стандарт разрешает сравнивать только пойнтеры, которые указывают в одну структуру или массив...
Так что получается, что такой memmove() не очень-то реализуем — мы не можем быть уверены, что мы вообще можем сравнить два переданных нам указателя. Точнее — можем, но можем получить undefined result, который в стандартном C никак не обработать.
И реализация memmove() для какой-нибудь теговой архитектуры потребует обращения к платформо-специфичным средствам определения, одному ли объекту принадлежат указатели.
no subject
Date: 2013-05-13 01:10 pm (UTC)no subject
Date: 2013-05-13 02:51 pm (UTC)no subject
Date: 2013-05-13 03:13 pm (UTC)no subject
Date: 2013-05-13 05:23 pm (UTC)это такая реализация C, написанная в позапрошлом веке для лисп-машин, исключительно ради компиляции X. X, говорят, даже компилировался и работал.
так вот со сравнимостью указателей в разные объекты там было то самое, предусмотренное стандартом.
no subject
Date: 2013-05-13 06:06 pm (UTC)no subject
Date: 2013-05-13 06:59 pm (UTC)no subject
Date: 2013-05-13 05:23 pm (UTC)Я вот не помню, гарантирует ли нам стандарт хотя бы сравнение на равенство двух произвольных указателей...
no subject
Date: 2013-05-13 05:25 pm (UTC)представьте себе, например, сегментированную архитектуру с перекрывающимися сегментами.
no subject
Date: 2013-05-13 05:26 pm (UTC)no subject
Date: 2013-05-13 06:13 pm (UTC)"If two pointers point to the same object or function, they compare equal".
no subject
Date: 2013-05-13 06:14 pm (UTC)