Всё считай как ЭВМ» — принцип программирования¶
«Всё считай как ЭВМ» — принцип (или максима) программирования, сформулированный советским математиком и программистом Виктором Михайловичем Глушковым. Суть принципа заключается в требовании мыслить о любой вычислительной задаче так, как её решала бы электронно-вычислительная машина: строго, последовательно, в явных дискретных операциях, без опоры на интуицию и неявные знания. Максима стала одним из базовых методических указаний для начинающих программистов и алгоритмизаторов в СССР и получила широкое распространение в отечественной учебной литературе по программированию.
¶Происхождение и авторство
Автором формулировки считается Виктор Михайлович Глушков (1923—1982) — математик, основоположник кибернетики в СССР, создатель Института кибернетики АН УССР (ныне Институт кибернетики имени В. М. Глушкова НАН Украины). Глушков сформулировал максиму в 1960-е годы, в период становления отечественной школы программирования, когда появилась потребность в чётких методических правилах для тех, кто переходил от математических выкладок к практике написания программ для ЭВМ.
Максима излагалась Глушковым в лекциях и методических пособиях и была адресована прежде всего студентам и инженерам, осваивавшим программирование на ранних советских компьютерах — БЭСМ, «Мир», «Урал», «Минск». В своих работах Глушков подчёркивал, что программист обязан «переводить» любую задачу на язык дискретных операций, доступных машине, и что именно умение думать «как ЭВМ» отличает программиста от человека, который лишь решает задачу «по-человечески».
¶Содержание принципа
Формулировка «всё считай как ЭВМ» содержит несколько методических требований, которые раскрывались в отечественной учебной литературе:
- Дискретность и явность. Каждый шаг решения должен быть записан как отдельная элементарная операция. Никаких «очевидных» переходов, которые человек подразумевает сам, но машина не выполнит.
- Последовательность. Алгоритм задаётся как упорядоченная цепочка действий. Параллельные или интуитивные рассуждения должны быть разложены в линейную последовательность.
- Конечность. Алгоритм обязан завершиться за конечное число шагов; бесконечные по природе математические конструкции (например, пределы, непрерывные функции) должны быть аппроксимированы конечными вычислениями.
- Отсутствие неявных знаний. Всё, что человек знает о задаче, должно быть явно зафиксировано в данных или в инструкциях программы. Машина не учитывает контекст.
- Проверяемость. Каждый шаг должен быть формально корректен и воспроизводим — именно так, как его выполнит конкретная машина с её системой команд.
Принцип тесно связан с идеями теории алгоритмов и теории автоматов, развитие которых в СССР связано с именами А. Н. Колмогорова, А. А. Ляпунова, В. А. Успенского и самого Глушкова.
¶Применение в обучении программированию
В советской и постсоветской педагогике программирования максима использовалась как отправная точка при обучении работе с псевдокодом, таблицами алгоритмов и блок-схемами. Студентам предлагалось сначала описать задачу на естественном языке, затем «перевести» её на последовательность элементарных операций (присваивание, условие, цикл, переход) и только затем кодировать алгоритм на конкретном языке программирования — Фортран, Ассемблер, Паскаль, Бейсик.
Практическая ценность принципа проявлялась при отладке программ: ошибки чаще всего возникали именно там, где программист полагался на «очевидность» шага, а машина выполняла буквально заданную инструкцию. Формулировка Глушкова служила напоминанием о необходимости проверять каждое допущение.
¶Критика и современное значение
С развитием высокоуровневых языков программирования, сред с автоматическим управлением памятью и инструментов машинного обучения строгое следование максиме «всё считай как ЭВМ» стало менее буквальным: современный программист во многих случаях абстрагируется от конкретной архитектуры. Вместе с тем сам принцип не утратил значения — он описывает фундаментальное требование к формализации задачи, без которого невозможно ни корректное программирование, ни работа с формальными системами, ни верификация программ.
Идея Глушкова перекликается с более поздними концепциями — «моделью вычисления» в теории программирования, принципом «думай как машина» в западной традиции (связываемым с Дональдом Кнутом и другими авторами), а также с требованием явной формализации при построении программно-аппаратных систем.
¶Литература
- Глушков В. М. Введение в кибернетику. — Киев: Вища школа, 1964.
- Глушков В. М. Синтез цифровых автоматов. — М.: Физматгиз, 1962.
- Корнюхин Е. С., Панкратова Н. Д. Программирование: учебное пособие. — Киев: Вища школа.
- Вицин В. А. «Всё считай как ЭВМ»: о методике обучения программированию // Информатика и образование.
