Показаны сообщения с ярлыком cogniance. Показать все сообщения
Показаны сообщения с ярлыком cogniance. Показать все сообщения

ноября 04, 2008

Должен ли программист знать что такое 2^32?

Собеседовали сегодня человека на должность Python/C++ разработчик. Закончил КПИ.
Среди прочего спросили задачку по плюсам, где суть сводилась к тому чтобы от переменной типа unsigned int и значение которой равно 0 отнять 1 и сравнить с 0. Что-то типа такого (псевдокод)

unsigned int a = 0;
print(a - 1 <= 0);

Примерный диалог:
- Что такое unsigned int?
- ну это беззнаковое целое, которое всегда положительное.
- ОК так чему тогда равно a - 1 если а=0?
- -1
- Так -1 же отрицательное.
- Мда, действительно, ну тогда наверное будут все единички в двоичной записи.
(Тут стало интересно, вроде человек близок к цели)
- Хм а что это за число будет, ну хотябы примерно в десятичной записи, инт у нас 4-байтный
- Не знаю..., единички.
- ну сколько это будет
- ???
- ок 2^32 вам такое число знакомо?
- не совсем
- ок ну это и будет ответ, 2^32 - 1, вы можете прикинуть примерно что это за число
- нет, а что это за число?
Дальше мы ему рассказали как прикинуть что это за число в уме и сказали что это 4 млрд примерно
- Вообще то странно что вы не знаете что это за число, а сколько например 2^64
- ну эта... 16 млрд.

Дальше мы не стали долго продолжать.

Неужели программистам больше не нужно знать таких базисных вещей? Не уметь считать в уме? По моему многие из нас слишком расслабились взвалив всю ответственность на фреймворки и абсолютно не понимая, почему вставка записей через рубишный active record настолько медленная, или почему склеивание тысячи строк в цикле конкатенацией тормозит. Да компьютеры стали быстрее, но и объемы данных растут, и тупость разработчика может свести на нет весь прогресс, и прикрываться он будет тем что руби тормозит и надо было писать эту часть на C++/Java или покупать более мощное железо. Или уже появляется новое поколение, которое мыслит GC, фреймворками, паттернами, аждайлами и юниттестами а не базовыми понятиями computer science?

Зато теперь у нас появился новый вопрос на собеседовании :)