Есть принципиальная разница между “дружественным” интерфейсом пакета (сколь угодно сложного) и самой простенькой программой. Связь формальных команд и последующих действий, которые происходят при выполнении этих команд, по крайней мере неочевидна. Чтобы почувствовать эту связь, чтобы научиться ее использовать, нужно обладать особым набором навыков. Нужно оторваться от содержания создаваемого документа и взглянуть на него как на некоторый формальный объект, то есть ответить на вопрос: что совпадает при создании всех текстов? Нужно заглянуть за кулисы. Программист — это тот человек, который чувствует себя за кулисами комфортно.
Если его устраивают предлагаемые возможности пакета, он просто воспользуется ими. Но его не остановит ситуация, которая поставит пользователя в тупик, — ситуация, когда этих возможностей недостаточно. Тогда он создаст возможность, а для этого ему понадобится спуститься на уровень ниже, от клика мыши к макросу, от существующего набора объектов к тому или иному инструментальному языку — С++ или Java. Но самым важным шагом является именно переход от графического интерфейса к формальному языку. Это — инициация.
Не все возможности языка можно реализовать с помощью сколь угодно изощренного графического интерфейса. Необходимо помнить, что разница между конструкцией языка (например, вложенными операторами “если”) и вызовами любой последовательности функций пакета из выпадающего меню очень близка к разнице между использованием переменных и наборов констант. Язык гибок и почти неограниченно изменчив. Он описывает через свои конструкции бесконечно много вариантов. А меню — меню и есть. Его, конечно, можно поменять, например расширить, но для этого нужно как раз опуститься на более низкий уровень, то есть понять, что и как мы присоединяем к работающей программе.
Если мы работаем с естественным языком, одни слова — глубоко содержательные объекты — объясняются с помощью других слов — таких же содержательных объектов. Интерпретаций бесконечно много, и полной определенности и однозначности все равно нельзя добиться. Если мы работаем с языком формальным, у этой лестницы спуска к языкам все более низкого уровня есть точная нижняя грань — это ассемблер, чьи команды реализованы в “железе”. Этим формальный язык принципиально отличен от естественного. В этом-то и есть его “плодотворная односторонность” (выражение Лидии Гинзбург).