Ябълки и ягоди
Учителят пита седемгодишния Адам:
--Ако ти дам една ябълка, и още една ябълка, и още една ябълка, колко ябълки ще имаш?
Адам отговаря уверено:
--Четири.
Учителят, който е очаквал правилния отговор - три - е учуден. "Може би детето не е внимавало", казва си той.
--Адам, слушай внимателно. Ако ти дам една ябълка, плюс една ябълка, плюс една ябълка, колко ябълки ще имаш?
Адам, който вижда разочарованието, изписано на лицето на учителя, този път бавно преброява на пръстите на ръката си. Опитвайки се да отговори така, че да направи учителя си щастлив, колебливо отговаря:
--Четири.
Разочарованието на лицето на учителя е още по-очевидно. Той си спомня, че Адам обича ягоди. Може би затова не може да се концентрира?
--Внимавай, Адам. Ако ти дам една ягода и още една, и още една - колко ще имаш?
Колебливо Адам отговаря:
--Три?
Учителят е щастлив. Подходът му се е оказал успешен. Но за всеки случай той пита още веднъж:
--Добре. А ако ти дам една + още една + още една ябълка, колко ще имаш?
--Четири - отговаря за пореден път Адам.
--Но защо?! - възкликва вече нетърпеливо учителят.
Със слаб и колеблив глас Адам отговаря:
--Ами защото аз вече имам една ябълка в раницата си...
Поуката от тази история?
Когато някой ти отговори по начин, по-различен от този, който си очаквал, не мисли, че отговорът не е верен.
Вероятно отговорът съдържа гледна точка, която ти изобщо не си взел предвид...
Имаше подобни истории, сещам се следните:
Едно момченце имало 5 ябълки. Изяло 2 ябълки. Колко му останали?
Грешен отговор: 3 ябълки.Верен отговор: всичките са му останали, той не е ял от своите.
***
Едно момченце имало 3 ябълки, дали му още 3. То изяло 2 ябълки. Колко му останали?
Грешен отговор: 4 ябълки.
Верен отговор: 6 ябълки. Онези 2 ги било изяло предния ден.
Иванчо - приказки за програмисти...
На Иванчо са му дали 3 ябълки.
Той е изял 2.
Колко ябълки има Иванчо?
Мислите си че 1?
Ама никъде не е казано, колко ябълки е имал Иванчо преди да му дадат 3-те.
Извод - нулирайте си променливите!
Иванчо има 3 ябълки. Дали му още 3. Той изял 2. Колко ябълки има Иванчо?
4? Неееееееееее! 6! Двете ги е изял един ден по рано.
Извод - синхронизирайте си нишките!
Иванчо имал 5 ябълки. Изял 2. Колко са му останали?
3? Нееее! Той не е ял свои ябълки! Пак има 5!
Извод - защитавайте си адресното пространство!
На Иванчо му дали 3 ябълки. Той ги изял.
На другия ден дошли да му ги искат, защото били дадени само за съхранение.
Извод - четете си спецификацията.