Отмена действий
Отмена действия — это прекращение выполнения или аннулирование результата уже совершённого действия, процесса или операции. В зависимости от контекста, отмена может быть физической (отмена нажатия кнопки), юридической (отмена судебного решения), технической (отмена транзакции) или социальной (отмена культурного события). В информатике и пользовательских интерфейсах отмена действия (англ. undo) — это функция, позволяющая вернуть систему к состоянию, предшествовавшему последнему изменению, путём обратного выполнения команды.
История
Концепция отмены действия существовала задолго до появления компьютеров. В юридической практике отмена (аннулирование) договоров, приказов и законов известна с античных времён. В Древнем Риме существовала процедура abrogatio — отмена закона народным собранием. В средневековой Европе короли и папы римские могли отменять свои указы через специальные грамоты.
С развитием техники и промышленности отмена стала применяться в механизмах: например, в ткацких станках с программным управлением Жаккарда (начало XIX века) существовала возможность остановить процесс и вернуть челнок в исходное положение. Однако настоящий прорыв произошёл в середине XX века с появлением компьютеров.
Развитие в вычислительной технике
Первые реализации функции отмены в компьютерных системах относятся к 1960-м годам. В текстовом редакторе RUNOFF (1964 год) для операционной системы CTSS была реализована команда «отменить последнее изменение» путём сохранения копии предыдущего состояния. В 1970-х годах в редакторе Bravo (Xerox PARC) появилась поддержка многоуровневой отмены (undo/redo) с использованием стека команд. В 1980-х годах компания Apple внедрила команду «Отменить» (Cmd+Z) в системное меню Mac OS, что стало стандартом де-факто. В 1990-х годах Microsoft Windows включила аналогичную функцию в свои приложения.
Виды и классификация
Отмена действия может быть классифицирована по нескольким основаниям.
По способу реализации
- Линейная отмена — отмена последнего действия с возможностью последовательного возврата к предыдущим состояниям (например, в текстовом редакторе Notepad).
- Многоуровневая отмена — возможность отменить несколько действий подряд, обычно с сохранением истории изменений (например, в Microsoft Word или Adobe Photoshop).
- Неограниченная отмена — система хранит полную историю всех действий, позволяя отменить любое из них в любой момент (например, в системе контроля версий Git).
- Отмена с повтором (redo) — после отмены можно вернуть отменённое действие обратно (например, Ctrl+Z и Ctrl+Y в Windows).
По области применения
- Техническая отмена — отмена работы механизма, остановка процесса (например, аварийная остановка станка, отмена запуска ракеты).
- Юридическая отмена — аннулирование правового акта, договора, решения суда (например, отмена приговора вышестоящей инстанцией).
- Финансовая отмена — отмена банковской транзакции, платежа, заказа (например, отмена перевода в системе SWIFT).
- Социальная отмена — отмена культурного, спортивного или политического мероприятия (например, отмена концерта из-за карантина).
- Пользовательская отмена — отмена действия в программном обеспечении (например, отмена удаления файла в корзине).
Устройство и принцип работы
В компьютерных системах функция отмены обычно реализуется через стек команд (или историю изменений). Каждое действие пользователя записывается в виде объекта, содержащего информацию о типе изменения, затронутых данных и обратном преобразовании. При вызове отмены система извлекает последний объект из стека и выполняет обратное действие: восстанавливает предыдущее состояние данных.
Пример реализации в текстовом редакторе:
- Пользователь вводит символ «А» — в стек добавляется запись: «добавлен символ 'А' в позицию 5».
- При отмене система удаляет символ «А» из позиции 5.
- Если пользователь повторяет отмену, система переходит к предыдущей записи в стеке.
В более сложных системах (например, в базах данных) отмена транзакций реализуется через журналирование — запись всех изменений в лог, что позволяет откатить базу данных к состоянию на определённый момент времени.
Применение
В программном обеспечении
Функция отмены является стандартной для большинства приложений:
- Текстовые редакторы (Microsoft Word, LibreOffice Writer, Google Docs) — отмена ввода, форматирования, вставки.
- Графические редакторы (Adobe Photoshop, GIMP) — отмена рисования, фильтров, слоёв.
- Электронные таблицы (Microsoft Excel, Google Sheets) — отмена ввода данных, формул, диаграмм.
- Системы управления версиями (Git, Mercurial) — отмена коммитов, слияний, изменений.
- Операционные системы (Windows, macOS, Linux) — отмена удаления файлов, перемещения, переименования.
В промышленности и технике
- Аварийная остановка оборудования (например, отмена запуска конвейера при обнаружении неисправности).
- Отмена выполнения программы в станках с ЧПУ (числовым программным управлением).
- Отмена подачи топлива в двигателях внутреннего сгорания (например, при срабатывании датчика детонации).
В юриспруденции
- Отмена судебного решения (апелляция, кассация).
- Отмена административного акта (например, отмена постановления о штрафе).
- Отмена договора (расторжение по соглашению сторон или в судебном порядке).
В финансах
- Отмена банковского перевода (до момента его исполнения).
- Отмена заказа в интернет-магазине (до начала отгрузки).
- Отмена подписки на сервис (до истечения пробного периода).
Примеры
- В текстовом редакторе Microsoft Word команда «Отменить» (Ctrl+Z) отменяет последнее действие, а команда «Повторить» (Ctrl+Y) возвращает отменённое.
- В системе контроля версий Git команда
git revertсоздаёт новый коммит, который отменяет изменения предыдущего коммита, не удаляя его из истории. - В операционной системе Windows удаление файла в корзину является отменяемым действием: файл можно восстановить. Окончательное удаление (Shift+Delete) не отменяется стандартными средствами.
- В юридической практике Верховный суд РФ может отменить решение нижестоящего суда и направить дело на новое рассмотрение.
Критика и ограничения
Несмотря на широкое распространение, функция отмены имеет ряд ограничений:
- Необратимость некоторых действий — физические процессы (например, сварка, резка, сжигание) невозможно отменить.
- Потеря контекста — отмена может нарушить логику работы системы (например, отмена удаления файла, который уже был перезаписан).
- Проблемы с памятью — хранение полной истории изменений может потребовать значительных ресурсов (особенно в графических редакторах с большими файлами).
- Юридические риски — отмена судебного решения может быть оспорена, если она нарушает права третьих лиц.
- Социальные последствия — отмена культурного мероприятия может вызвать общественное недовольство и финансовые потери.
В некоторых системах (например, в банковских) отмена транзакции возможна только до момента её подтверждения; после этого требуется ручное вмешательство оператора.
Интересные факты
- В ранних версиях текстового редактора vi (1976 год) отмена была доступна только для последнего действия; многоуровневая отмена появилась только в vim (1991 год).
- В операционной системе MS-DOS (1981 год) не было встроенной функции отмены удаления файлов; для восстановления требовались сторонние утилиты.
- В системе управления версиями Git отмена коммита через
git revertне удаляет сам коммит, а создаёт новый, отменяющий изменения, что позволяет сохранить историю. - В некоторых графических редакторах (например, Adobe Photoshop) можно отменить до 1000 последних действий (настраиваемый параметр).
Источники
- Таненбаум Э., Остин Т. «Архитектура компьютера». — СПб.: Питер, 2013.
- Керниган Б., Пайк Р. «Практика программирования». — М.: Вильямс, 2005.
- ГОСТ 34.003-90 «Информационная технология. Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Термины и определения».
- Федеральный закон от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации».
- История развития текстовых редакторов: материалы музея вычислительной техники (ВЦ РАН).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →