Слон и мышка сказка

хутор веслый самое красивое место на земле. всего лишь две длинные улицы вдоль мелкого, пересыхающего летом ручья, небольшой

   Хутор Весёлый — самое красивое место на земле. Всего лишь две длинные улицы вдоль мелкого, пересыхающего летом ручья, небольшой пруд, обсаженный ивами, за выгоном лес. Когда-то людный и шумный — в каждом дворе была корова, а то и две, гуси, утки и прочая живность — теперь хутор притихший, умирающий, явно не соответствующий своему названию. Многие хаты заброшены, покосившиеся стоят в буйной поросли сирени, у некоторых просела крыша и черепица осыпалась, обнажив погнутые, почерневшие от времени балки. Молодёжи совсем не осталось, только старики доживают свой век, не желая менять привычный жизненный уклад.

   Деду Фоме, наверное, уже сто лет; живёт один и сам управляется с хозяйством. Изредка приезжает дочь Аннушка — Нюрка, как зовут хуторские, сама уже седая старушка с выцветшими голубыми глазами — время всех уравнивает. Иногда внуки и правнуки наведываются, тогда дом вроде как оживает, наполняется звонкими голосами, смехом, но ненадолго: вскоре все разъезжаются, так и не уговорив старика сменить старую хату на городскую квартиру.

   А на соседней улице бабка Файка — вредная старушонка; так она, говорят, ещё постарше Фомы будет, а может и врут, уж слишком бойкая, хоть и пригнуло её к земле, ходит с палочкой, которую «бадиком» называет, хромыляет, одна нога короче другой, но если кто засмеётся или пошутит неудачно — получит этим «бадиком» по спине, да ещё и кучу проклятий в придачу. Раньше её побаивались, считали ведьмой, а теперь просто выжившей из ума старухой, но всё равно предпочитают не связываться.

   Мы с дедом Фомой соседи уже лет пятьдесят; здороваемся через плетень, иногда что-то обсуждаем, но без совместных застолий и душевных разговоров — уж слишком велика разница в годах; сколько себя помню, Фома всегда был стариком: седые волосы, белая борода, под кустистыми бровями прищуренный голубой глаз, второй, как у пирата, прикрыт чёрной повязкой — когда-то в лесу на ветку напоролся, пока до больницы добрался, было уже поздно. Вот ведь незадача, столько испытаний выпало: война, ранения, лагеря; а глаз потерял при мирной жизни.

   Хотя есть у меня альтернативная версия, но она настолько невероятна, что и сама иной раз сомневаюсь, может, приснилось или нафантазировала по малолетству.

.

   Давно это было…

.

 Повадилась к деду Фоме чужая чёрная кошка шастать ночами: то рассаду поломает, то цыплёнка придушит, то еще какую пакость удумает; но такая хитрая, пока сосед спохватится, её уж и след простыл. Фома, конечно, огорчался, но гораздо больше его заботило пошатнувшееся здоровье дочери. Ещё недавно бодрая и веселая тринадцатилетняя девочка как-то вдруг сразу обессилела, потом слегла, и хотя врачи никакой болезни не находили, с каждым днём таяла, истончалась и, казалось, что скоро совсем исчезнет, растворится, как утренний туман. Фома метался по докторам, целителям, знахарям, да всё без толку. Аннушка уже и есть перестала, только воду пила, лежала на белых простынях, бледная, почти прозрачная, как облачко.

— Нюточка, детка, не оставляй меня одного, ты единственная, ради кого стоит жить, если ты уйдёшь, то и мне на этом свете делать нечего, — Фома гладил тонкие девичьи пальчики и не замечал, как горькие слезы бежали по лицу.

— Тятя, — Аннушка серьёзно посмотрела на отца, — прогони чёрную кошку со двора! Она жизнь мою пьёт.

— Прогоню, прогоню, — торопливо закивал Фома. Как не выполнить просьбу умирающей?

   И прогнал. А дочка после этого сразу пошла на поправку.

.

   Мне в то время было лет пять, наверное. Проснулась как-то среди ночи от жутких голосов в нашем дворе: то ли ребёнок грудной плачет, то ли женщина заполошная кричит. Выглянула в окно: луна огромная, светло как днём, а на морковной грядке две кошки, или два кота, кто их разберёт: один белый-белый, словно светится изнутри, второй чёрный как смоль, с землёй сливается, только глаза изумрудами сверкают. Стоят друг против друга, спины выгнули, шерсть дыбом, хвостами по земле бьют и орут утробными голосами. Жуть!

«Может тапком в них запустить?» — не успела подумать, как белый прыгнул на чёрного, и покатились они чёрно-белым клубком по грядкам, кусаясь, царапаясь, разбрасывая по сторонам клочья шерсти. Пропадай, морковка! Расцепились и снова схлестнулись с дикими воплями. Белый изловчился, и острые зубы впились в чёрную лапу, мне даже послышался хруст кости. Чёрный взвыл от боли, выгнувшись, когтями процарапал морду противника и, почувствовав, что хватка ослабла, рванул на трёх лапах прочь. Белый, постанывая, уполз в заросли малины и там затих. «Живой, нет? Может пойти посмотреть?» Но вдруг такая тяжесть навалилась, глаза закрылись раньше, чем добралась до кровати. Не помню, как провалилась в сон, а проснувшись утром, сразу побежала к малине.

.

— От жешь бисово отродье, чтоб вам повылазило! Все грядки перековыряли, сукины коты! — бабушка пыталась навести порядок на поле ночного боя. — Придётся моркву заново сеять! Да и буряк тоже.

   Белого кота нигде не было. Ушёл. Значит — живой. Вскоре эта история забылась и не вспомнилась, даже когда я увидела Фому с пиратской повязкой на глазу (веткой в лесу поцарапался), даже когда Фаина прошкандылябала в лавку на костылях (в подпол упала, сломала ногу), и только через несколько лет, случайно подслушав разговор взрослых, я сопоставила все события — и пазл сложился.

.

   В юности Фома был влюблён в Фаину, а получив от ворот поворот, ушёл из дома и вернулся через три десятка лет седым, измождённым душой и телом, да не один, а с доченькой, славной голубоглазой девочкой. Стали они отчий дом обихаживать, старики-то уже давно за кладбищенской оградой упокоились. Как ни тяжело было десятилетней Аннушке, а пришлось всему научиться, чтобы хозяйкой в доме стать. Хуторяне, кто постарше, узнавали Фому, останавливались, расспрашивали: что, да как.

— Живой. И слава богу! — неохотно отвечал Фома и шел своей дорогой.

   Как-то и с Фаиной встретился, на двух улицах сложно разминуться. Сразу узнал, глазам не поверил — такая же как и раньше, статная, красивая, словно и не было этих долгих лет; в тугом пучке волос ни сединки, глаза немного потускнели, да мелкие морщинки на лице появились.

— Здравствуй, Фома! Вот и сошлись наши дорожки, — лукавая улыбка тронула губы женщины.

Не пощадило время бывшего воздыхателя, щедро посыпало серебром голову и бороду.

— Здравствуй, Фаина! А ты красивая, как и прежде. Но дорожки наши разошлись много лет назад и более уже не сойдутся. У тебя своя жизнь, у меня своя, — сказал как отрезал и пошел прочь, спокойный и уверенный в себе.

Очень обидели Фаину эти слова, столько лет прожила, да так и не привыкла, чтобы ей перечили. И задалась она целью снова Фому приручить. Уж какие только уловки не придумывала: то пирогов напечёт, то банку сметаны притащит, то картохи ведро.

— Вона деточка-то какая худенькая, тяжело ей с хозяйством управляться, дому женские руки ой как нужны, да и хозяин — мужчина хоть куда — может ещё найти своё счастье.

   Но Фома на эти хитрости не вёлся.

— А зачем искать какое-то неведомое счастье, нам с Нютой и так неплохо живётся!

   Снова и снова — вода камень точит — пробовала Фаина пробиться к сердцу упрямца добром и лаской, а когда поняла, что за несколько лет ничего не добилась, решила Аннушку извести, чтобы уж никаких преград не было.

   Вот тут-то и всплыла в моей памяти ночная битва двух котов. Ошарашенная этим открытием, я побежала к бабушке и сбивчиво, глотая слова, вывалила свою стройную и логичную, как мне казалось, теорию. Бабушка, не отходя от плиты, на которой что-то шкворчало и булькало, внимательно меня выслушала, а потом погладила двумя руками по голове и поцеловала в макушку.

— Ох и выдумщица же ты у меня! Небось сказочницей станешь, когда вырастешь. А пока никому об этом не рассказывай, не то назовут тебя Врушкой и будут до старости так дразнить. А уж если бабка Файка об этом узнает, то превратит тебя в мышь! И съест!

Слон и мышка сказка


Wesha

Сiдайте у гурток, малятки. Сейчас дiд Панас расскаже вам казочку.

Фирма, в которой дiд Панас работал в году далёком, двухтысячном, разрабатывала девайсы, которые сейчас, во время наше просветлённое, наверное, отнесли бы к IoT.

Дело в том, что в стране далёкой и богатой многие фирмы берут мультифункциональные устройства сканер-копир-принтер — да не мелочь пузатую, каковую хозяева радушные на стол гордо ставят, а такие, каковые сами со стол размером, и ценятся у торговца хитромудого столько, сколько холопу убогому за жизнь сознательную не заработать — в аренду. И позволяет это фирме малой, незначительной, во-первых, не вываливать суммы такие сразу, а, во-вторых, не заморачиваться покупкой расходников, техобслуживанием и проч.: от арендодателя такого девайса раз в какое-то время приходит холоп, специально обученный, аппарат сий открывает, тонер израсходованный досыпает, смазывает что дОлжно, ну и так далее. И окромя прочего, холоп сей, специально обученный, считывает с аппарата показания счётчиков — сколько страниц отпечатано было, сколько тонера израсходовано и т. п. — и записывает эти показания в книжечку свою. В центральном офисе своём холоп сей показания эти докладывает, и арендодатель выставляет арендатору счёт: «в месяце прошлом 450 страниц напечатать вы изволили, так оплатите же дань в 45 монет звонких, не деревянных».

Фирма, в каковую дiда Панаса работать позвали, родила мышь мысль: «А зачем холопа, специально обученного каждый месяц гонять? Пусть ходит он токмо туда, где что-то воистину сломалось. А узнавать, куда холопа посылать, будем мы при помощи коробка малого, специально обученного запрограммированного, каковой одним кабелем подключится к этому самому устройству зело многофункциональному, а другим — к сети вольной, международной, Интернетом кличущейся. Коробок сей диагностику всю прочитает, на наш сервер передаст, и доложит сервер арендодателю, к какому конкретно клиенту потребно слать холопа, специально обученного, с бутылью смазки али коробкой тонера, а к какому — всего-навсего счёт в конвертике малом, бумажном.»

И сел дiд Панас писать серверную часть, с которой коробочонка должна была соединяться и докладывать что дОлжно. А саму коробочонку — и железо, и софт — аутсорснула фирма в страну далёкую и загадочную, кою Кетаем кличут.

Долго ли, коротко ли, прошли годы месяцы, и пришла из земли далёкой коробка малая. И подключили её к серверам, и зажужжали тестовые ксероксопринтеры, и заморгала заморская коробочонка глазками зеленоватыми, и потекли по проводам байтики, и прожевали их написанные дiдом Панасом со товарищи сервера, и выплюнули счета, и возрадовались и CTO, и CIO, и CEO, и shareholder-ы, и выпустили коробочонки в продакшн. А дiда Панаса отправили… нет, не на пенсию — на все четыре стороны отправили (слава богу, что с выходным пособием), ибо всем известно: дiд сделал своё дело — дiд может уходить.

Вот только неувязочка вышла: как пошла коробочка по рукам клиентов — оказалось, что ж-ж-ж сие — неспроста: не всегда отзывались коробочки на призывы серверов своих, а коли отзывались, то не признавали командиров своих, а коли признавали, то несли в ответ ерунду несусветную. А коли привозили коробки малые в офис фирмы с намерением устроить им допрос с пристрастием — так прекращали коробчонки выкобениваться сий же час, и работать начинали без нареканий, аки доктор дiд Панас в спецификации прописал.

И пошли и CTO, и CIO, CEO, и и shareholder-ы нет, shareholder-ы никуда не пошли — не барское это дело — к дiду Панасу на поклон. И встал дiд Панас со своей завалинки, взял в руки посох свой крепкий, деревянный, и молвил: «Помогу я вам, сынки; посмотрю я, чем горю вашему помочь. Но таксу возьму я с вас не простую, а золотую.»

И взошёл дiд Панас в свой старый офис, и смахнул дланью своей пыль с клавиатуры, и призвал он демонов, именуемых словами страшными, колдовскими — trafshow(1) и tcpdump(8), и медитировал он над тем, что сказали ему демоны о продакшене. И дошло до дiда Панаса, почему работали коробки в офисе фирмы, да не всегда работали в продакшне, и вспомнил он заклинания заветные: «maximum transmission unit« и «фрагментация пакетов«, и про гарантии священные протокола великого IP.

В офисе, коий пользовал сеть быструю, Ethernet-овую, в коей jumbo-кадры вольно бродили, непуганые, — первый же пакет пересылаемый гарантированно всё необходимое в себя вмещал. Когда ж привозили коробок малый к клиенту неблизкому, путь данных от сервера до него (и обратно) тернист был и извилист, и коли встречали пакеты жирные на пути своём интерфейсы с MTU невеликими, то плакали интерфейсы сии слезами горючими, и фрагментировали пакеты, и пропихивали фрагменты свозь себя в уверенности, что сторона принимающая соберёт пакет исходный из кусочков, в соответствии полном с заветами Винтона Серфа и Боба Кана великих, что в книгу не особо тайную записаны, из листов многих, RFC зовущихся. Но не читали заветов Серфа и Кана кетайцы ушлые, а если и читали — то не поняли, а если и поняли — то не так, и обрабатывала коробчонка ихняя из приходящих пакетов-кусочков тот только лишь, каковой быстрее остальных по проводам прибежать успел да не потерялся по дороге — и чихала звучно на все прочие с высоты своей невеликой. А понеже не обещает великий протокол IP порядка, а доставку токмо (ибо ежели кому порядок и целостность нужны, тот сынка его призывает, TCP), то и видели коробчонки вместо стройных сообщений серверовых шелупонь всякую.

И указал дiд Панас перстом своим, от клавиатуры заскорузлым, на чушь сию несусветную заказчикам. И бил CTO челом о длань свою да со всей силы; и закручинился CIO; и вырвал попросил CEO вежливо у дiда Панаса посох его крепкий, деревянный, и умчался быстрее ясна сокола в страну далёкую Кетай на крыльях люминиевых, боинговых, обещав то ли инсталлировать посох сей кому-то в отверстие неподобающее, то ли раздать чегой-то кетайцам ушлым — да ветер налетел вольный, и услыхали присутствующие из слов его что-то лишь про «…юлей»; и shareholder-ы нет, shareholder-ы никуда не пошли — не барское это дело.

Скоро сказка сказывается, но и …юли тоже не долго раздаются — не прошло и недель нескольких, как прибыли из далёкой страны Кетай коробки малые с прошивкой исправленной — знать, в отверстие подобающее посох инсталлирован был — и за…тряслось всё, запыхтело, и сервера зажужжали, и полились данные в глубокие закрома баз соответственных, и потекли денежки вечнозелёные стремительным домкратом в карманы shareholder-ов (и теперь-то они уж точно никуда не пошли: вот это — барское дело).

И я там был, только пива не пил — горькое оно. И вообще, сказка — ложь, да в ней намёк, добру молодцу про уровни модели OSI урок, не любо — не слушай, а семинар проводить не мешай.

Есть интересная тема, на первый взгляд мало относящаяся к алгоритмам. Она «сказочная» с одной стороны, а со стороны другой в ней есть созвучие с насущными проблемами начинающего свой профессиональный путь программиста.

Репка - медаль

Давайте попробуем разобраться и немного развлечься, рассматривая эти стороны древней алгоритмической медали…

Задача

Вспоминая свой опыт знакомства со сказками, могу точно отметить, что это происходило почти заново три раза. Каждая хорошая книга растет вместе с читателем и обретает новые краски с увеличением его практического опыта. Но в отличие от многих книг сказка имеет особую историю взаимодействия с человеком. Первого знакомства со сказками думаю никто не избежал в своём детстве. Это было знакомство без чтения — на слух — очень часто с помощью наших родителей и в сопровождении с просмотром красочных иллюстраций детских книжек. Мало какие факты в содержании сказки оцениваются ребёнком при таком детском и игровом знакомстве. Но в памяти почти наверняка остаются часто повторяемые образцы: «я от дедушки ушёл, я от бабушки ушёл…».

колобок Издание 1910 года. Рис. Елизаветы Бём

Уже позже в сознательном возрасте происходит второе знакомство со сказкой. Часто это происходит в процессе чтения сказки своим детям. У меня же это знакомство случилось в старшей школе. Когда на уроках литературы нас старались научить после прочтения книги не только пересказать сюжет, но и задуматься, что и какими средствами хотел нам сказать автор в своём произведении. Те сказки, которые были выбраны для разбора в текущей статье, в большинстве не имеют известного автора. Их называют «народными». Так что́ «хотел сказать» народ своим растущим детям посредством сказки? Есть ли в сказке польза? Или сказка лишь развлечение, нужное для весёлого и красочного взаимодействия родителей со своим ребёнком?

Эти вопросы становятся еще острее, если попробовать задуматься: какой странный образец поведения демонстрируется многими сказками.

Мы учим ребёнка убегать от бабушки и дедушки? Или лежать на печи и ждать волшебной щуки, исполняющей желания? Конечно, нет. Ну, или очень странно, если — да.

Очень странно, когда в анализе цели и устройства сюжета рассказываемых детям сказок, появляется такое противоречие. А если так, то может стоит запретить такое навязывание вредных образцов поведения и привычек. Ведь цензура «замылила» процесс курения в «Ну, погоди…». Тут тоже есть место, где развернуться общественному фильтру содержания?

Нет! Конечно, пока рано бить тревогу. Польза сюжета сказок есть. И для оценки одной из несомненных составляющих этой пользы стоит начать наше третье и совместное знакомство со Сказкой, предлагаемое в качестве задачи текущей статьи.

Рассаживаемся поудобнее. Жили-были дед и баба…

Введение

Перед тем как вплотную приступить к разбору сказки все же позволим себе небольшое пояснение. Конечно, эта статья не является первым или даже редким обзором, посвященным оценке структуры сюжета сказок. Есть достаточно большое число работ на эту тему, самыми крупными из которых являются системы классификации сказочных сюжетов:

  • классификация Аарне — Томпсона — Утера (англ. ATU Index) «Указатель сюжетов фольклорной сказки»,
  • работа В.Я.Проппа «Морфология волшебной сказки»,
  • статья Акименко Н.А. «Стилевые и текстообразующие характеристики английской народной сказки (диахронический аспект)»,
  • статья Кретова А.А. «Фольклор и постфольклор: структура, типология, семиотика»,
  • и множество других работ.

Из всего разнообразия анализа сказок выделяются общие части, обнаруживаемые разными исследователями в сказках разных народов мира. Одной из таких общих частей является цепочная сказка (альтернативное название — кумулятивная сказка), представляющая собой особый тип структуры сказочного сюжета. Этот тип сюжета является основой разбора, предлагаемого текущей статьёй. Докучные сказки, так же рассматриваемые в статье, являются подвидами цепочных сказок.

Где же тут будет о программировании? — спросите Вы.

Итерация

А переход от сказки к написанию кода очень прост: все цепочные сказки самым простым из известных мне способов описывают структуру итерационных и рекурсивных алгоритмов. При этом описание выполнено предоставлением образца алгоритма, и в этом образце очень умело опускаются все не важные для описываемого типа алгоритма детали.

Но в сторону обзоры и общие слова. Начнем рассматривать примеры. Первым у нас на очереди — сказочное описание структуры итерационного процесса накопления с остановкой по изменению условия:

acc = []
while not condition:
    v=next_item()
    do_some(v)
    acc.append(v)

Итерационный процесс

Какая же сказка поможет нам в разборе обусловленного цикла?

Ответим первыми строками этого ценного учебника по программированию циклов:

Жил-был старик со старухою. 
Просит старик:
— Испеки, старуха, колобок!

Да, это сказка «Колобок». Давайте рассмотрим основные элементы сюжета этой сказки.

В завязке содержания идет инициализация самого важного элемента — выпекание колобка. Чем так важен это элемент? Ответ программисту: Колобок является главной накапливающей переменной, в которой благодаря хорошей «колобковой» памяти запоминается песенка. Ведь эта песенка является главным результатом сказки? Эту песенку мы в детстве запоминали лучше всего? Разберем посредством какого процесса формируется этот результат в выявленном сказочном аккумуляторе.

Этот процесс характеризуется несколькими повторениями сходных действий. Такое повторение является одним из важных признаков цепочной сказки. В «Колобке» повторяется последовательность следующих действий:

  • убегание из предыдущей локации,
  • встреча с каким-то персонажем,
  • и исполнение этому персонажу песенки.

При каждом выполнении этой последовательности персонаж разный, и имя персонажа после исполнения песенки добавляется в эту песенку новой строчкой.

Результат всей сказки сводится к получению песенки, описывающей историю встреч колобка:

— Не ешь меня, лиса! 
Я тебе песенку спою, — сказал 
колобок и запел:
— Я Колобок, Колобок!
Я по коробу скребен,
По сусеку метен,
На сметане мешон,
Да в масле пряжон,
На окошке стужон;
Я от дедушки ушел,
Я от бабушки ушел,
Я от зайца ушел,
Я от волка ушел,
И от медведя ушел,
А от тебя, лиса, и подавно уйду!

Цикл такого поведения Колобка никогда бы не закончился, если бы не оказалось условия его остановки. В русских сказках очень часто условием выхода из зацикленных ситуаций является Хитрость. Условием выхода из цикла «колобковых» приключений стала хитрость Лисицы, которая догадалась, что можно не только песенку послушать, но и голод утолить. Тем самым она получила полный набор, как хорошо сказано когда-то, из «хлеба и зрелищ».

Если приводить примеры подобных «Колобку» сюжетов, то сразу можно вспомнить тождественные истории в сказках других стран. Это, например, сказка «Пряничный человечек», у главного персонажа которой не было такой приметной шарообразной формы, но приключения были почти те же. В указателе Томпсона сюжет «Колобка» отнесен в группу Z33.1 «Сбежавший блин: Женщина печёт блин, который убегает. Его тщетно пытаются поймать разные животные. В конце концов его съедает лиса».

Есть сказки подобные сказке «Колобок», которые не полностью совпадают с ней по сюжету. Например, сказка «Зайкина избушка»: про ледяную избу Лисы и лубяную избу выселенного Зайца. В этой сказке Заяц накапливал рассказ о своих встречах с неудачливыми помощниками, а условием выхода из цикла была хитрость Петуха, напустившего на Лису страху своими боевыми песенкам-страшилками. Подробности сюжета иные, а его структура полностью аналогична. Это цикл накопления с условием выхода!

Следствие ведут Колобки

Вызов подфункций

Но продолжим изучение сказочного программирования. И следующим у нас на очереди — использование вызова подфункций и стека.

Нужна хорошая «функциональная» сказка. И такие тоже есть — это, например, сказка «Петушок и бобовое зернышко».

Жили-были петушок и курочка...
Клевал как-то петушок бобовые 
зернышки, да второпях и подавился. 

Петушок и бобовое зернышко

Задача ясна — нужно спасать Петушка. А вот решение этой задачи отличается от решения «Задачи колобка». В нём больше сходства с сюжетом «Зайкиной избушки».

Курочке так же как и Зайцу необходимо встретить несколько разных персонажей и попросить помощи, но в задаче «Спасти Петушка» (в отличие от действия «Прогнать Лису из лубяного домика») действие каждого помогающего персонажа, встреченного Курочкой, не может быть выполнено самостоятельно. Помощь и действия персонажа зависят от некоторых действий другого персонажа:

— Кузнец, кузнец, дай скорее 
хозяину хорошую косу. 
Хозяин даст коровушке травы, 
коровушка даст молока, 
хозяюшка даст мне маслица, 
я смажу петушку горлышко: 
подавился петушок 
бобовым зернышком.

Это верно почти для всех персонажей, кроме терминального (или «элементарного»), для которого не требуется использования сторонних действий. В этом случае действие может выполниться сразу. В сказке таким действием стало получение косы от Кузнеца: «Кузнец дал хозяину новую косу».

Так что́ есть зависимые действия? Какие есть элементарные действия? Каков способ организации этих действий с точки зрения программиста?

Вы уже догадались? Конечно, перед нами что-то очень похожее на функции. Есть образцы использования зависимыми функциями для своего исполнения вызовов других функций. Элементарные функции отличаются автономным выполнением. В итоге вся сказка становится руководством по решению задачи путем контроля процесса, состоящего из вызова нескольких таких зависимых функций и одной элементарной функции. В качестве способа контроля такого процесса в сказке предлагается использовать специально организованный набор фраз, часто повторяемый и формируемый Курочкой.

Значит, и в этой сказке есть переменная накопления. На этот раз она хранится в «курочкиной памяти». И способ пополнения данных отличается от «колобкового» способа. Посещенные персонажи перечисляются в тексте Курочки в обратном порядке. Последний посещенный персонаж упоминается первым. Это изменение неслучайно. Таким образом формируется список возвратов к предыдущим персонажам для решения всей задачи Курочки. Это же детское описание стекового способа (способ организации и манипулирования данными LIFO, методы обработки товарно-материальных ценностей FIFO и LIFO)!

Мы еще раз столкнулись со странным фактом, что в детской сказке описывается на наглядном примере не самая простая программная технология. Этот сказочный образец использования функций был случайно обнаружен мной в процессе чтения сказки детям. Думаю, что это произошло не без влияния профессиональной деформации, которой никак не избежать, если долгое время работаешь программистом.

Да, вызовы функций не являются самой сложной частью в программировании. Вот если бы найти сказочное описание, например, рекурсии. Это было бы действительно примечательно.

Рекурсивный процесс

И уже без большого удивления после небольшого перебора запомненных в детстве сказок был обнаружен и этот образец. Сказочное описание рекурсии существует!

Нужная нам сказка сразу начинается с задачи:

Посадил дед репку. 
Выросла репка большая-пребольшая...

Решение задачи в сказке «Репка» опять опирается на использование персонажей-помощников. Как и в предыдущей рассмотренной сказке каждый новый помощник использует действия другого персонажа, но в отличие от «Бобового зернышка» он использует помощь не следующего персонажа, а — предыдущего. Отличается также характер действий, выполняемых разными персонажами. В «Бобовом зернышке» все действия были разные, а в «Репке» каждый персонаж делает действия сходно с остальными участниками. Если действие так же как и в предыдущей сказке соотносится с вызовом и исполнением функции, то получается, что функция у каждого персонажа одна и та же?

Каждый персонаж выполняет следующее действие:

  • Пробует решить задачу.
  • Если не может решить, то зовёт другого персонажа.
  • Помогает этому персонажу решить похожую задачу, которая с его помощью становится проще.

Это же точно рекурсия?! Почему каждый новый персонаж меньше предыдущего? В детстве отвечал на этот вопрос: потому что так удобнее тянуть. Но в свете рекурсивного объяснения — ответ другой. В сказке так описано, чтобы показать, что задача на каждом шаге упрощается, и в итоге решение становится доступно даже маленькой мышке.

Репка

Это же гораздо нагляднее, чем примеры в университете с числами Фибоначчи, где рекурсия применяется для вычисления рекурсивно заданных чисел? После «Репки» сразу понятно для чего рекурсия может быть полезна, и в чём её главная ценность — способность уменьшать размер задачи разделением на несколько зависимых и одинаковых действий.

Можно здесь вспомнить многие примеры рекурсивного программного решения задач на основе принципа «Разделяй и властвуй» («Уменьшай и властвуй») — та же быстрая сортировка или бинарный поиск в отсортированном списке. Но, уверен, не стоит пробовать рассказать это ребёнку в качестве полезного образца, чтобы научить поиску решения задач, которые встретятся ему в жизни.

С последней мыслью становится немного яснее, почему сказки так близки к программированию. Сказка — это способ подготовки ребенка к решению появляющихся перед ним задач. А решение задачи с использованием последовательности доступных действий — есть Алгоритм.

Да, очень похоже, что сказкой дети учатся создавать простейшие алгоритмы. Может такой способ обучения будет полезен или хотя бы интересен и программисту? Почти всегда это так. Но есть исключения. Способы создавать вредные алгоритмы тоже есть в детских сказках!

Вред бесконечных циклов

Во всех предыдущих сказках задача успешно решалась, или выполнение прерывалось по некоторому условию. Находилась хитрая Лиса или хитрый Петушок. Находился «автономный» Кузнец. Мышка вытягивала цепочку помощников с репкой на верхушке. А что если такого хитрого, автономного и терминального персонажа в сказке нет? Вдруг Кузнецу понадобится масло для изготовления косы? Ведь задача не будет решена и действия будут продолжаться бесконечно? «Это будет плохо спроектированная сказка» — скажете Вы. И будете правы. Но как это показать ребенку? Как указать ему на необходимость задать условие остановки попыток решения вставшей перед ним задачи?

Конечно, это надо сделать в сказке!

И такие поучительные сказки тоже есть. Их научная классификация — докучные сказки. Для программиста эти сказки — пояснение вреда бесконечного итерационного или рекурсивного решения задачи в детских условиях, когда еще негде искать диспетчер задач для снятия «зависшего» процесса:

while true:
    pass

def f():
    f()

def f():
    g()

def g():
    f()

У всех докучных сказок разное содержание, но выбранный для текущей статьи образец начинается просто:

Купи слона...

Вы говорите, что он Вам не нужен?

Все говорят, 
   что им слон не нужен. 
А ты возьми и купи слона...

Соглашаетесь купить?

Все соглашаются купить. 
А ты возьми и купи слона...

Окончания этой сказки не будет.

Все думают, что 
   окончания этой сказки не будет. 
А ты возьми и купи слона...

Кадр из мультфильма 'Следствие ведут Колобки'

Ну в целом понятно. Если попробовать вставить такую сказку целиком, то это будет очень вредно даже для текущей статьи. Поэтому killall fairytale_elephant.

Продолжая размышлять над задачами встающими перед ребенком и над способами обучить его их решать, подходим к самой страшной для программиста теме. А если алгоритма решения нет?

Неразрешимые задачи

Ведь существуют задачи, которые никак не решить? Например, некоторые задачи не решить из-за отсутствия в текущий момент соответствующих инструментов. Мы же не будем пробовать забить гвоздь в бетонную стену ладошкой?

Как показать ребенку, что́ ему делать при встрече с такой задачей?

Правильно. И это тоже проще всего сделать сказкой!

И в этом нам поможет самая «бесполезная» и «бессмысленная», как представлялось мне долгие годы, сказка. Начнём с первых строк:

Жили-были дед да баба
Была у них курочка ряба.
Снесла курочка яичко, 
не простое - золотое...

Курочка ряба

У сказки «Курочка ряба» есть несколько вариантов. Некоторые варианты имеют структуру цепочной сказки с соответствующими несколькими повторами и множеством персонажей, которые подходят и сочувствуют деду и бабушке, расстроившимся из-за нечаянно разбитого яичка. Но самый известный вариант почти лишен итераций, зато в него добавлены самостоятельные попытки разбить яичко и хорошая концовка, в которой Курочка обещает снести другое «простое» яичко.

Варианты окончания сказки не так важны, как важна́ основа её содержания:

Дед бил, бил - не разбил.
Баба била, била - не разбила.

Здесь у программиста тоже есть прямые аналогии. В программировании пока не говорят о совсем неразрешимых задачах. Но уделяют много внимания задачам, решение которых не получить за приемлемое время. То есть программист пытается оценить насколько сильно задача неразрешима (классы сложности). Это очень важно для взрослых задач. Но ребенку объяснять это пока рановато. А вот объяснить, что некоторые задачи в нашем мире не получается решить, необходимо.

Так же важно показать ребенку, что неразрешимая задача все же может быть легко выполнена, но с соответствующим инструментом, который может быть очень неожиданным. Например, в разбираемой сказке это хвостик мышки:

Мышка бежала, хвостиком задела, 
яичко упало и разбилось.

Этот малый инструмент для решения задачи очень важен. И его нахождение — самое важное в текущей сказке. А в работе программиста поиск и реализация такого способа — это основной профессиональный навык, за который платят.

Выполняя анализ сказки «Курочка ряба», можно вспомнить об еще одной проблеме в задачах программирования. Корни этой проблемы кроются в соотношении класса NP-полных задач и задач класса P. Для использования многих современных средств защиты данных важен ответ на вопрос: равны ли классы P и NP. На этом ответе основываются системы шифрования, в которых сложность расшифровать данные без ключа («мышкиного хвостика») должна намного превосходить сложность расшифровки с наличием этого ключевого инструмента.

Выводы

Сказка — ложь, да в ней намек…

Обзор сказок вышел не совсем полным, но дающим основание к следующим шагам в разборе этой темы. В текущей статье мы ограничились только самыми простыми сказками. Более сложные по структуре сказки чаще основываются на демонстрации устойчивых алгоритмов и признаков социального поведения в среде, с которой ребёнок столкнётся в своей жизни. Это отдельный и не менее интересный разговор, но он для другой статьи.

Основной вывод, формулируемый в результате выполненного нами рассмотрения детских сказок, прост. Сказки определенно полезны. Это не просто развлечение. Как минимум их можно использовать в качестве иллюстрационного материала при обучении программированию. Но это только на поверхности. А в глубине вопрос. Если сказки так близки к процессам обучения созданию алгоритмов, то имеют ли они эти процессы своей целью? Совсем иначе стоял бы этот вопрос, если бы автором проанализированных нами сказок был развлекающийся программист или математик, как это было, например, со сказками «Алиса в Стране чудес» и «Алиса в Зазеркалье».

Но автор рассмотренных сказок — народ. Так может быть, обучение детей создавать алгоритмы для решения задач — это обычная, но скрытая от внимания часть человеческой жизни?

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

Главной задачей, поставленной в научной работе, является поиск и развитие алгоритмов для синтеза алгоритмов. Эта задача из разряда «разбить золотое яичко от курочки рябы», но на текущий момент уже крепнет уверенность, что она не относится к совершенно неразрешимым. Необходимо лишь знать ключ-подход к ней. Если говорить в сказочных терминах: необходима мышка с соответствующим хвостиком…

Спасибо Вам за внимание.

Отзывы

Буду очень благодарен за отзывы, пожелания и предложения, так как они помогают мне скорректировать направление развития работы в этой области.

Отдельное волнение у меня есть по стилю повествования и форматированию, используемым в статье (кавычки, абзацы, цитаты). Напишите, пожалуйста, если у Вас есть замечания к ним. Можно личным сообщением.

Ссылки

  • Главная страница работы (GitLab GPL): Проект «Общая теория алгоритмов»
  • Вводная статья работы «Разрабатываем теорию алгоритмов как проект с открытым исходным кодом». Пожалуйста, не судите строго эту наивную публикацию «сверх-идеи» устаревшей версии 2019 года.
  • Статьи серии «Что такое алгоритм?!»
    • №1 «Действие»,
    • №2 «Обусловленная и связная последовательность»,
    • №3 «Синтез алгоритма запоминанием»
    • №4 «Эволюция памяти»
    • №5 «Копирование иерархии памяти»
  • Для заглавной иллюстрации к статье взят рисунок с обложки книги «Репка. Лиса и журавль». Издание Кнебель, 1916
  • Иллюстрация к сказке «Колобок» и «Репка» выполнены Елизаветой Меркурьевной Бём
  • Иллюстрация к сказке «Петушок и бобовое зернышко» является титульной страницей одноименной книги издательства «Малыш» 1981 г.
  • Иллюстрация к сказке «Курочка Ряба» является титульной страницей одноименной книги издательства Г.Ф. Мириманова 1926 г.
  • Несколько иллюстраций сделаны на основе кадров мультфильма «Следствие ведут Колобки» (1987)

Сказка «Ёжик в тумане»- произведение Сергея Козлова. Эта история о Ёжике, который пошёл в гости к медвежонку, и по дороге заблудился в тумане. Что ёжик увидит и с кем встретится вы узнаете, прочитав или послушав эту сказку.

Аудиосказка Ёжик в тумане

https://totushkaskazka.ru/wp-content/uploads/2021/09/Audioskazka-YOzhik-v-tumane.mp3

Читать сказку Ёжик в тумане с картинками

По вечерам Ёжик ходил к Медвежонку в гости считать звёзды.
Они усаживались на брёвнышке и, прихлёбывая чай, смотрели на звездное небо.
Оно висело над крышей, прямо за печной трубой.
Справа от трубы были звёзды Медвежонка, а слева — Ёжика.
Сначала Ёжик шёл полем, где его окружила стайка ночных Бабочек-Подёнок, потом вошёл в сосновый лесок.
А когда вышел, за ним уже крался Филин, растопырив крылья.

ёжик в тумане смотреть

Но Ёжик его не заметил.
Он нёс Медвежонку малиновое варенье и смотрел в небо.
«Звезда!» — вдруг остановился Ёжик.
Филин чуть не налетел на него и тоже уставился в небо.
«И в луже Звезда…» — сам себе сказал Ёжик, увидев её отражение.
Филин тоже наклонился над лужей, но ничего, кроме себя, не увидел и, рассердившись, взрыхлил своей мохнатой лапой воду.
А Ёжик уже глядел в тёмный старый колодец.
«Угу!» — крикнул Ёжик.
«Угу-у-у!» — загудел в ответ старый колодец.
Ёжик спрыгнул на землю и на ходу гукнул, словно бросил камушек: «У-гу!».
И Филин, проходя мимо колодца, тоже крикнул: «Угу!..» и остановился, удивленный.

Сказка ЁЖИК В ТУМАНЕ - Сергей Козлов. Читать, слушать и смотреть онлайн

Колодец и ему ответил: «Угу-у-у-у-у!».
Филин взгромоздился на сруб колодца и снова крикнул: «Угу!».
И колодец в ответ, гулко: «Угу-у-у-у-у-у-у…».
Филин хихикнул и они заухали, прислушиваясь друг к другу — Филин и старый колодец.
А Ёжик со своим узелком уже семенил дальше, сам про себя беседуя с Медвежонком:
«А я ему скажу: „А я тебе малиновое варенье принёс”.
А он мне скажет: „Вот и самовар простыл, надо бы веточек подбросить… этих… ну как их… можжевеловых!”
А я ему скажу… а я ему скажу… а я е-му ска-жу…».
И вдруг застыл.
Прямо перед ним из тумана выплыла белая Лошадь.

ёжик в тумане бесплатно

«А интересно, — подумал Ёжик, — если Лошадь ляжет спать, она захлебнётся в тумане?»
И он стал медленно спускаться с горки, чтобы попасть в туман и посмотреть, как там внутри.
«Вот, ничего не видно. И даже лапы не видно».
«Лошадь!» — позвал Ёжик.
Но Лошадь ничего не сказала.
И тут на Ёжика обрушился сухой Лист.
Ёжик от испуга закрыл лапами глаза… а когда выглянул… из под Листа, таинственно покачивая своим домиком, уплыла в туман Улитка…
Ёжик опасливо приподнял сухой Лист…

мультик ёжик в тумане

И совсем рядом услышал дыхание:
«А-ха, а-ха!» — вздымая боками и раздуваясь до неба, задышал Слон. Или это был не Слон?
Ёжик аккуратно положил Лист на место и, пятясь, на цыпочках, ушёл в туман.
А из тумана выглянула большая, добрая голова Лошади. Голова вкусно пофыркивала и хрумтела травой.
«Фр-р-р!» — вздохнула лошадиная голова и сухой Лист, как живой, взметнулся и отполз в сторону.
Где-то вдали зазвенело и вдруг — «В-з-з-з!» — над головой Ёжика прянула и мгновенно пропала Летучая Мышь.
Ёжик даже не успел перепугаться, а вокруг него затрепетала, засеребрилась легкая стайка ночных Бабочек-Подёнок.
«Хе-хе-хе-хе-хе!» — передразнил Ёжик и даже пробежал следом за ними, подпрыгнул, замахал лапами, представив себя ночной Бабочкой, но вдруг замер, прижав узелок…

ёжик в тумане картинки

Из тумана, как из форточки, выглянул Филин, ухнул: «Угу! У-гу-гу-гу-гу-гу!..» и растворился в тумане.
«Псих», — подумал Ёжик, поднял сухую палку и, ощупывая ею туман, двинулся вперед.
Палка, как слепая, блуждала в темноте, пока не упёрлась во что-то твёрдое.
«Тук-тук!» — постучал Ёжик.
Положил узелок и, перебирая по палке лапами, увидел перед собой дерево с огромным дуплом.
«А-га!» — осторожно выдохнул в дупло Ёжик.
«А-а-а-а!» — загудело дерево. Ёжик попятился и вдруг вспомнил про узелок.

ёжик в тумане смотреть онлайн

Он метнулся назад, обежал дерево, крутнулся на месте… Узелка не было. Дерево медленно заволокло туманом. Ёжик остался один.
«Ё-ёж-и-и-и-и-к!» — будто с края земли донёсся чей-то крик.
Туман сгущался вокруг Ёжика.
Ёжик сорвал травинку, на которой сидел Светлячок, и, высоко подняв её над головой, как со свечой, наклоняясь и вглядываясь себе под ноги, побрёл в тумане.
Деревья, как мачты, тонули во мгле. Светлячок — маленький зеленый маяк — еле-еле теплясь, покачивался в тумане, освещая дорогу.
Но и он упал в траву и погас. Стало совсем темно.
Туман закружился вокруг Ёжика. И Ёжик побежал. Ему казалось, что из тумана за ним несётся огромная Улитка, Летучая Мышь, Филин… задышал Слон, обрушился Лист с дерева.
Ёжик упал в траву и закрыл лапами голову.
Но тут из тумана появилась Собака. Она положила перед Ёжиком узелок, зевнула во всю собачью пасть и пропала в тумане.

ёжик в тумане смотреть бесплатно

Издалека донёсся голос Медвежонка:
«Ё-ёжи-и-и-и-ик!».
«О-го-го-го-го!» — рванулся на крик Ёжик, но — бул-тых! — упал в воду.

ёжик в тумане онлайн бесплатно

«Я — в реке, — похолодел от страха Ёжик и, немного погодя, решил, — пускай река сама несёт меня».
Он глубоко вздохнул и река понесла его вниз по течению.
Высоко в небе горели звёзды, над ним проплыла голова Лошади, где-то далеко тоненько играла балалайка…
«Я совсем промок. Я скоро утону», — подумал Ёжик.
Вдруг кто-то дотронулся до его задней лапы.
«Извините… — беззвучно спросил Кто-то, — кто Вы и как сюда попали?»
«Я — Ёжик, — тоже беззвучно ответил Ёжик, — я упал в реку».
«Тогда садитесь ко мне на спину, — беззвучно проговорил Кто-то, — я отвезу Вас на берег».
Ёжик сел на чью-то широкую скользкую спину и через минуту оказался на берегу.

ёжик в тумане читать

«Спасибо!» — вслух сказал Ёжик.
«Не за что!» — беззвучно сказал Кто-то, кого Ёжик даже не видел, и пропал в волнах.
Ёжик с узелком сидел на брёвнышке и смотрел прямо перед собой остановившимися глазами.
Послышались чьи-то торопливые шаги.
«Ёжик! Где же ты был? — плюхнулся рядом запыхавшийся Медвежонок, — я звал, звал, а ты не откликался!..»
Ёжик ничего не сказал. Он только чуть скосил глаза в сторону Медвежонка…
«Я уже и самовар на крыльце раздул, креслице плетёное придвинул, чтобы удобнее звёзды считать было… вот, думаю, сейчас придёшь, сядем, чайку попьём, с малиновым вареньем, ты ведь малиновое варенье несёшь, да? А я и самовар раздул и веточек этих… как их?..»
«Мож-же-ве-ло-вых», — медленно подсказал Ёжик.

сказка ёжик в тумане

«Можжевеловых! — Обрадовался Медвежонок, — чтобы дымок пах… И… и… и… и в… и в… ведь кто же, кроме тебя, звёзды-то считать будет?!»
Медвежонок говорил, говорил, а Ёжик думал:
«Всё-таки хорошо, что мы снова вместе».

ёжик в тумане скачать

А ещё Ёжик думал о Лошади:
«Как она там, в тумане?..»
Было тихо.
В ночном небе ярко горели звезды.
Филин переговаривался с колодцем.
«Угу-у!» — говорил Филин.
«Угу-гу-гу-гу-гу-гу!» — отвечал ему Колодец.
«Угу-у!» — кричал Филин.
«Угу-гу-гу-гу-гу-гу!» — гудел Колодец.
«Угу-у!»
«Угу-гу-гу-гу-гу-гу!»
«Угу-у!»
«Угу-гу-гу-гу-гу-гу-у-у!»

Смотреть сказку Ёжик в тумане

Скачать текст сказки Ёжик в тумане

Скачать docx

Скачать pdf

Другие сказки Сергея Козлова

Другие сказки на ночь

  • Сломленным прутиком как пишется и почему
  • Сложный план сочинения это
  • Сложный план сказки о мертвой царевне и семи богатырях
  • Сломя голову как пишется
  • Сложный план сочинение описание музея