Привет и Сочинитель
Регистрационная метка
Читальный зал Роботландии
Компьютер выполняет шаги алгоритма и ничего, кроме этого.
 

Исполнители с литературным уклоном

Привет и Сочинитель — два исполнителя, с которыми нам предстоит познакомиться сегодня.

Исполнители эти с “творческим” уклоном: первый “сочиняет” сказки, второй создает “шедевры”, подражая известным писателям.

На самом деле, все сказки Привета очень похожи друг на друга, а “шедевры” Сочинителя — явная чепуха, хотя порой и очень забавная!

Основная задача урока разобраться в непростом вопросе: “может ли компьютер думать?”

Привет

Вы любите сказки? Я — очень. Даже пробовал их сочинять, но получалось плохо. Что-то вроде этого:

Жил-был на свете Змей Горыныч. Однажды пошёл он в лес. Смотрит, а там — Мальчик-с-пальчик. Очень удивился Змей Горыныч. А сказке конец!

— Такие сказки и компьютер может сочинять! — решил я, и стал придумывать план работы исполнителя-сказочника.

Вот что я сделал: выделил в своей сказке слова, которые можно заменить другими:

Жил-был на свете Змей Горыныч. Однажды пошёл он в лес. Смотрит, а там — Мальчик-с-пальчик. Очень удивился Змей Горыныч. А сказке конец!

Если теперь заменить главного героя Змея Горыныча на Зеленый Горошек, слово пошёл на помчался, лес на баню, а Мальчика-с-пальчика на Чебурашку, то получится “другая” сказка!

Жил-был на свете Зеленый Горошек. Однажды помчался он в баню. Смотрит, а там — Чебурашка. Очень удивился Зеленый Горошек. А сказке конец!

Заготовим для замещаемых мест сказки наборы слов:

Герой Пошел Куда Что там было
Змей Горыныч пошёл баню Чебурашка
Зелёный Горошек поехал клуб горшок масла
Кощей пополз город три корочки хлеба
Серый Волк полетел поле Крокодил Гена
Буратино помчался огород Баба Яга
Пятачок понёсся школу Курочка Ряба
Незнайка поскакал магазин Серенький Козлик
Айболит побежал аптеку дядя Фёдор
Печкин поплёлся лес Мальчик-с-пальчик

Теперь сказки можно получать, выбирая из столбиков слова и вставляя их на свои места в пустые клетки истории:

Жил-был на свете   1  . Однажды   2   он в   3  . Смотрит, а там —   4  . Очень удивился   5  . А сказке конец!

Можно, например, получить такую сказку:

Жил-был на свете . Однажды он в . Смотрит, а там — . Очень удивился Серый Волк. А сказке конец!

Вы можете составить свою сказку, выбирая подходящие слова в выпадающих списках.

Но работу по выбору слов вполне можно поручить компьютеру!

И я написал план, по которому должна работать программа-сказочник:

Жил-был на свете   1  . Однажды   2   он в   3  . Смотрит, а там —   4  . Очень удивился   5  . А сказке конец!

План работы программы-сказочника

  1. Выбери элемент из столбца Герой и вставь его на места   1   и   5   в текст сказки.
  2. Выбери элемент из столбца Пошёл и вставь его на место   2   в текст сказки.
  3. Выбери элемент из столбца Куда и вставь его на место   3   в текст сказки.
  4. Выбери элемент из столбца Что там было и вставь его на место   4   в текст сказки.
  5. Покажи получившуюся историю на экране.

Примерно так и работает исполнитель Привет. Дополнительно он запрашивает имя пользователя, имена героев и черты их характера.

Программисты редко говорят “мой исполнитель работает по такому-то плану”. Обычно они заявляют: “мой исполнитель работает по такому-то алгоритму”.

Алгоритм — это план работы, расписанный по шагам выполнения этой работы.

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

А вот шаги 1–4 переставлять местами можно. Это наблюдение говорит о том, что в некоторых случаях порядок выполнения шагов не важен.

В случае алгоритма сказочника, работу по выбору и вставке слов в “скелет” истории могли бы выполнять одновременно 4 исполнителя!

Так часто и делают. Ведь четверо выполнят работу быстрее!

Алгоритм сказочника можно переписать для четырех исполнителей таким образом:

  1. Для Исполнителя 1. Выбери элемент из столбца Герой и вставь его на места   1   и   5   в текст сказки.

    Для Исполнителя 2. Выбери элемент из столбца Пошёл и вставь его на место   2   в текст сказки.

    Для Исполнителя 3. Выбери элемент из столбца Куда и вставь его на место   3   в текст сказки.

    Для Исполнителя 4. Выбери элемент из столбца Что там было и вставь его на место   4   в текст сказки.

  2. Для Исполнителя 1. Покажи получившуюся историю на экране.

Такой алгоритм называется параллельным.

Параллельный алгоритм — это алгоритм, который предусматривает одновременную работу нескольких исполнителей.

Сочинитель

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


Сказочник приветствует Жука, как всегда, витиевато:

— Квурто мин асольдо, Жук!

— Здравствуй, дорогой Сказочник, рад заглянуть в твой домик, — вежливо отвечает Жук, а сам думает, что теперь не уйти без какой-нибудь очередной дурацкой истории.

— Лу желало шушкать мун стори? — спрашивает Сказочник и удобнее устраивается в кресле.

— Я просто в нетерпении, и очень желаю шушкать тун стори. Только я очень спешу, и у меня мало времени! — обреченно отвечает Жук.

— Эраш краше стори. Вунеш вун стори. Шушкай!

Сказочник закатил глаза и неспешно начал свой рассказ.

Хитрадь Конера

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

— Интересно, — подумал Жук, — что представляет собой эта хитрая смесь фанеры с пантерой.

А Сказочник продолжал.

Начамал раз Хитрадь Конера мотвелиться в путешесть на Вормать. Смотвелил он вместе с пупычами моноход. И скаже Хитрадь Конера пред комацией локнот.

— Кой поколучил-бы путешесть со мной на Вормать?

Хозвалась на это Бабаковырышка. Покаждыванили они с Бабаковырышкой на моноход и быстрально праюсили. Оплисало предь. Праюсили они на Вормать быстрально. Глазалят: на передин карше Взлетика Маполяна.

— Ухуху, — скаже хитрок, — у мамаси тольшие нати.

— Уху, — скаже Бабаковырышка, — мамася тормально налиса на ображенную пару.

Так они поколучили над мамасей и сели писе чай.

В пяти ситую, записелых чаю, вопросит мамася.

— Чтолку праюсили параю, Хитрадь Конера и Бабаковырышка?

— Дачально спразивать, — прикнужась скаже хитрок, — чтолку е, все тормально.

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

— Это все? — с надеждой спросил Жук Сказочника.

— Отвой, — обиженно буркнул рассказчик и протянул Жуку диск с роботландской программой.


Забавную историю про Хитрадь Конеру рассказал Сказочник, правда?

Эта история была написана не без помощи компьютера. А именно, не без помощи исполнителя Сочинитель.

Сочинитель — очень “самоуверенный” исполнитель! Он пытается писать тексты, подражая известным писателям.

Работает он так. Берет какой-нибудь текст, например, отрывок из “Бременских музыкантов” братьев Гримм:

Много лет тому назад жил на свете мельник. И был у мельника осел — хороший осел, умный и сильный. Долго работал осел на мельнице, таскал на спине кули с мукой и вот, наконец, состарился. Видит хозяин: ослабел осел, не годится больше для работы — и выгнал его из дому.

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

Много лет тому назад жил на свете мельник. И был у мельника осел — хороший осел, умный и сильный. Долго работал осел на мельнице, таскал на спине кули с мукой и вот, наконец, состарился. Видит хозяин: ослабел осел, не годится больше для работы — и выгнал его из дому.

Эти две буквы будут началом истории. Далее Сочинитель работает так:

  1. Случайным образом ищет текущий образец в тексте.
  2. Добавляет к своей истории символ (букву, пробел, знак препинания), который в исходном тексте идет за образцом.
  3. Меняет образец: первый символ отбрасывает, а к оставшемуся — добавляет тот, который вставил в текст своей истории.

Вот что получилось у Сочинителя на тексте братьев Гримм.

Сначала было так:

образец история Сочинителя
ос ос

Случайный поиск образца:

Много лет тому назад жил на свете мельник. И был у мельника осел — хороший осел, умный и сильный. Долго работал осел на мельнице, таскал на спине кули с мукой и вот, наконец, состарился. Видит хозяин: ослабел осел, не годится больше для работы — и выгнал его из дому.

Теперь:

образец история Сочинителя
се осе

Случайный поиск образца:

Много лет тому назад жил на свете мельник. И был у мельника осел — хороший осел, умный и сильный. Долго работал осел на мельнице, таскал на спине кули с мукой и вот, наконец, состарился. Видит хозяин: ослабел осел, не годится больше для работы — и выгнал его из дому.

Теперь:

образец история Сочинителя
ел осел

Случайный поиск образца:

Много лет тому назад жил на свете мельник. И был у мельника осел — хороший осел, умный и сильный. Долго работал осел на мельнице, таскал на спине кули с мукой и вот, наконец, состарился. Видит хозяин: ослабел осел, не годится больше для работы — и выгнал его из дому.

Теперь:

образец история Сочинителя
ль осель

Случайный поиск образца:

Много лет тому назад жил на свете мельник. И был у мельника осел — хороший осел, умный и сильный. Долго работал осел на мельнице, таскал на спине кули с мукой и вот, наконец, состарился. Видит хозяин: ослабел осел, не годится больше для работы — и выгнал его из дому.

Теперь:

образец история Сочинителя
ьн осельн

Случайный поиск образца:

Много лет тому назад жил на свете мельник. И был у мельника осел — хороший осел, умный и сильный. Долго работал осел на мельнице, таскал на спине кули с мукой и вот, наконец, состарился. Видит хозяин: ослабел осел, не годится больше для работы — и выгнал его из дому.

Теперь:

образец история Сочинителя
ни осельни

Случайный поиск образца:

Много лет тому назад жил на свете мельник. И был у мельника осел — хороший осел, умный и сильный. Долго работал осел на мельнице, таскал на спине кули с мукой и вот, наконец, состарился. Видит хозяин: ослабел осел, не годится больше для работы — и выгнал его из дому.

Теперь:

образец история Сочинителя
ик осельник

В таком духе Сочинитель продолжает свою работу и дальше. Видите, у него уже получилось смешное слово “осельник”!

Так и получились словечки для Хитрадь Конеры! Конечно, саму историю писал человек, но словечки в нее вставлялись из опусов Сочинителя.

В приведенном выше примере образец был длиною в два символа. В терминах исполнителя длина образца называется порядком генерации. А само “сочинение” — генерацией. Исполнитель позволяет генерировать тексты с порядком от 1 до 6.

Вот еще один пример истории, сочиненный человеком, который использовал словечки и фразы Сочинителя, работающего на основе афоризмов Козьмы Пруткова.


Кузя Прутин

Увидев мужчину средних лет в телогрейке и валенках за письменным столом, Жук понял, что попал к известному сетевому философу Кузе Прутину.

— Никто не обнимет хвостом! — изрек Кузя свой очередной афоризм вместо приветствия.

—Лучше сапоги, чем обман, — в тон ему ответил Жук, зная причуды философа.

— Где начало? — продолжил разговор Кузя.

— Смотри на пробу, — недолго думая, подладился Жук.

— Усердный повеса воробью подобен, — ни с того ни с сего ляпнул Кузя.

— Если у тебя есть фонтан, заткни его с конца, — удивляясь самому себе, сморозил Жук.

— Никто не обнимет необъятного конца, которым оканчивается начало, — глубокомысленно произнес Кузя и заплакал.

— Трудно обнять необъятное, — посочувствовал Жук и смахнул крылом крупную слезу с небритого Кузиного подбородка.

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

Забота Жука привела Кузю в хорошее настроение, и он радостно сообщил: “Бросая в воду камешки, смотри на солнце!”.

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

— Не покупай каштанов, а то высидишь в них пятна, — посоветовал Кузя.

— Заткни кобылу в нос, — сгрубил Жук, но Кузя не обиделся, а в ответ пулеметной очередью выдал следующее:

— Люби ближнего, но не бей его ногами!

— Усердный человек раздвоен снизу!

— Кобыла на клетке слона машет хвостом!

— Гляди начеку!

— Терпентин хорош, но только на пробу!

Выдав последний перл, Кузя задумался и долго чесал левой рукой свой бугристый затылок.

— Ага, — обрадовался Жук, кажется, Кузю заклинило. И пользуясь случаем, наконец, вставил в разговор то, зачем пришел: “Мне бы, Кузя, твои алгоритмы!”

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

— Усердный полезен! — напоследок сказанул Жук и скрылся, оставив Кузю в одиночестве с широко раскрытым ртом.


Может ли компьютер думать?

Вероятно, после знакомства с “творчеством” Привета и Сочинителя, ответ вам понятен — нет!

Думает человек. Человек составляет алгоритмы и переписывает их в виде программ для компьютера. А компьютер, не раздумывая, следует заданным инструкциям.

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

Азы информатики RU 2000/2010 © А.А.Дуванов

Вверх Выход из читального зала