?

Log in

No account? Create an account

Предыдущая запись | Следущая запись

Далеко не любой рассказ как что-то сделать является годной инструкцией.

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

Разберём.

Однозначная. Единственное слово, которое я не помню дословно:)) Смысл в том, что после того, как выполнили очередное действие из списка - однозначно определено, что конкретно делать дальше. Может быть, тупо подряд по списку. Может быть, есть какое-то условие или разветвление. Но это уже определено автором инструкции, исполнителю в этом месте понадобится максимум проверить, выполняется ли некое заранее известное условие - но _думать_ и _решать_ не нужно. (собственно, хорошая инструкция как раз полностью избавляет от необходимости думать и решать в процессе)

Конечная. Как бы ни повернулось дело - обязательно нужен маркер того, что всё, инструкция выполнена. Даже если что-то пошло не так. Для инструкций, предлагаемых живым разумным, этот пункт требует оговорить штуки уровня "если попробовала три раза и всё равно не получилось - бросай это дело, что-то пошло не так", "если уже два часа возишься, а воз и ныне там - бросай это дело, что-то пошло не так". Опять же, "самому подумать" или "посмотреть и принять решение" не нужно, нужно сверить наблюдаемую ситуацию с заранее (автором инструкции а не исполнителем!) описанными условиями.

Последовательность - ну, тут понятно:) надеюсь:)

Понятных. Исполнитель должен понимать, что конкретно от него хотят, что конкретно нужно сделать в каждом пункте. В этом месте больше всего косяков встречается:
- вместо конкретных штук (которые "можно положить в тележку в супермаркете") пишут про абстрактные (подружись с Машей, подольстись к Васе, наведи порядок);
- вместо конкретных действий описывают желаемый результат ("расскажи анекдот" - ок, "рассмеши Васю" - не ок);
- беда, если исполнитель не знает значения каких-то слов, и вдвойне беда, если исполнитель и автор инструкции знают разное значение одного и того же слова, использованного в инструкции (приготовить картошку - это её почистить, или это её сварить?).
Иногда это прокатывает за счёт свёртки и общего контекста (опытная хозяйка знает, что такое "приготовить такой обед, чтоб мужу понравилось"). Но вообще хорошая инструкция будет работать при минимальной опоре на общий контекст и в руках полного идиота, неспособного не то, что догадаться, но и даже заметить, что в этой точке нужно о чём-то догадываться.

Посильных исполнителю. На смысловом уровне здесь всё понятно - нужно, чтобы исполнитель был в состоянии выполнить то, что написано. Желательно ещё и не убиться об это. А если инструкция для живых разумных, то ещё и потратить на это не слишком много ресурса (потому что вряд ли вся его жизнь ограничивается выполнением данной инструкции).
Здесь частый ляп типа сепульки. Пишем инструкцию "как получить то-то" - но в неё включаем пункты, подразумевающие, что "то-то" у исполнителя уже есть. Неважно, что это - навык, вещь, деньги. Но ведь скорей всего задачей выполнить эту инструкцию задастся как раз тот, у кого этой штуки нет. Так что инструкция "как заработать многаденег" не должна включать пункты, требующие купить дорогую штуку, а инструкция "как понравиться мужчине" не должна предполагать наличие положительного опыта общения с мужчинами. Сюда же все высокие материи про "соответствовать". Годная инструкция как раз и помогает получить то, чему ты _не_ соответствуешь, что ты _не_ заслужил.

Что такое действие, надеюсь, тоже понятно:)

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

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

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

Метки:

Comments

( 2 мурлыков — Мурлыкнуть )
yamato_j
Mar. 21st, 2019 07:57 pm (UTC)
"Понятных. Исполнитель должен понимать, что конкретно от него хотят, что конкретно нужно сделать в каждом пункте. В этом месте больше всего косяков встречается:" - это вообще мое самое любимое всегда))

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

lomelind
Mar. 22nd, 2019 03:52 pm (UTC)
Шикарный анекдот:))))
( 2 мурлыков — Мурлыкнуть )