i21sys/Docu.Полезные сведения/Текст как интерфейс.odc

Текст как интерфейс

Текст как интерфейс, документо-ориентированный подход и т.п.  приблизительные описания подхода к организации взаимодействия человека и компьютера, существенные аспекты которого были реализованы в Системе Оберон Н.Виртом и Ю.Гуткнехтом во второй половине 1980-х гг. Там был полноценно воплощен целый ряд идей, позволяющих заметно повысить эффективность взаимодействия человека с компьютером по сравнению с более архаичными подходами, несущими печать времён пакетной обработки (см. статью Михаэля Франца в сборнике The School of Niklaus Wirth. The Art of Simplicity, ed. L.Boszormenyi, dpunkt.verlag, 2000). Ряд идей из числа реализованных еще тогда в Системе Оберон вошли в мейнстрим (ср. распространённость гипертекстовых документов). Другие еще ждут своего часа.

Большой класс задач требует, чтобы человек, работающий за компьютером, мог проинспектировать данные (либо приготовляемые в качестве входных, либо получаемые как результат работы каких-то процедур) и принять решение о дальнейших действиях, причем после инспекции данные могут тут же подвергаться дальнейшей обработке  то есть служить входными данными для других процедур. 
Хорошо знакомый пример  собственно работа с текстом (многократные замены и т.п.). Но, как это часто и бывает, этот пример слишком привычен, чтобы задуматься, и слишком специфичен, чтобы увидеть за ним универсальную схему.
Однако обработка последовательностей чисел (и не только)  постоянный элемент в исследовательской работе прикладников (ср. всякого рода статистические задачи в физике, химии, эконометрике и т.п.). 
Работа с данными здесь характеризуется высокой интерактивностью. 
Файловый ввод-вывод в таких ситуациях (как и при редактировании текстов, а также, например, в начале курса программирования для юных начинающих)  инструмент слишком громоздкий.

Наиболее удобно в таких ситуациях построить взаимодействие человека и компьютера по схеме текст как интерфейс. 
Действительно, сами текстовые документы, находящиеся, что называется, перед глазами, могут служить источниками и приемниками данных. 
Пусть, например, фрагмент текста содержит массив чисел, подлежащих обработке. 
Тогда его можно  посредством вызова команды меню или нажатия горячих клавиш  назначить на роль потока ввода, который и служит источником входных данных вызываемой вслед за этим процедуре. Заметим, что, например, команды Блэкбокса скомпилировать или открыть исходник модуля, имя которого выделено в тексте, следуют той же общей схеме: входными данными здесь являются выделенные литеры, составляющие имя нужного модуля. 

Точно так же можно было бы назначить точку в другом тексте (обычно открытом в другом окне), в качестве приемника результатов очередной вызываемой процедуры, причём результаты выводятся тоже в виде понятного человеку текста.

Впрочем, на практике появляется некоторое неравноправие между вводом и выводом: вывод данных сразу в точку конечного назначения не всегда удобен, так как с первой попытки желаемые результаты могут не получиться или, скажем, требовать правки вручную. Поэтому часто удобно просто выводить данные в конец Рабочего журнала, где их можно проинспектировать, поправить, а затем переместить в нужный документ. 

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

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

Подробнее об организации ввода из текстовых документов в Блэкбоксе можно узнать здесь.
О выводе в Рабочий журнал см. документацию к модулю StdLog.
Для учебных целей могут иметься упрощенные варианты этих модулей.

________________
info21@inr.ac.ru
2010-09-28