Детская задачка для программистов
Mar. 25th, 2012 08:33 pmБуратине дали три яблока. Два он съел.
Сколько яблок осталось у Буратины?
Думаете одно? Фигушки! Это может в первом классе на уроке арифметики оно одно осталось.
А ежели задать эту задачку программистам?
Ответы могут быть совершенно неожиданными:
- Неизвестно сколько. Никто-ж не знает, сколько яблок было у него до этого.
Мораль: обнуляйте начальные переменные.
- Даже если обнулить переменные, никто не гарантирует, что Мальвина не отдала ему свои яблоки,
пока он уничтожал те два. Или не сожрала третье.
Мораль: не используйте глобальные переменные.
- А где гарантия, что Буратино съел именно два яблока, а не два чего-то другого? Там написано что он съел два.
- Количество яблок у Буратины не изменилось.
Они только поменяли область видимости: часть из них переместилась внутрь Буратины.
Сколько яблок осталось у Буратины?
Думаете одно? Фигушки! Это может в первом классе на уроке арифметики оно одно осталось.
А ежели задать эту задачку программистам?
Ответы могут быть совершенно неожиданными:
- Неизвестно сколько. Никто-ж не знает, сколько яблок было у него до этого.
Мораль: обнуляйте начальные переменные.
- Даже если обнулить переменные, никто не гарантирует, что Мальвина не отдала ему свои яблоки,
пока он уничтожал те два. Или не сожрала третье.
Мораль: не используйте глобальные переменные.
- А где гарантия, что Буратино съел именно два яблока, а не два чего-то другого? Там написано что он съел два.
- Количество яблок у Буратины не изменилось.
Они только поменяли область видимости: часть из них переместилась внутрь Буратины.