воскресенье, 29 октября 2017 г.

Джеф Раскин. Интерфейс. Новые направления в проектировании компьютерных систем


Предыстория

О Джефе Раскине я узнал из статьи Бородатый мальчик и его самолетики, когда в очередной раз заинтересовался языком программирования Fort и стековыми процессорами. Интересно, что реализации этого языка программирования нельзя назвать ни компиляторами, ни интерпретаторами в полном смысле этих слов. Программы на этом языке представляют собой последовательности слов, каждое из которых манипулирует данными в стеке. У каждого слова, кроме самых базовых, имеются определения. Когда программист вводит последовательность слов, то эти слова интерпретируются. Когда программист создаёт определение нового слова, то это определение компилируется и помещается в словарь. Для вызова подпрограмм имеется отдельный стек вызовов, в который помещаются адреса возврата из вызванных подпрограмм. Поскольку обрабатываются всегда данные, находящиеся в стеке, то в операциях не требуется указывать номера регистров, а компилятору не нужно пытаться оптимизировать размещение данных в регистрах для минимизации обращений к оперативной памяти. Если дополнить Fort-систему соответствующей аппаратной поддержкой - стековым процессором, то получается очень простая и компактная вычислительная система, которая одновременно является и компилятором, и интерпретатором и операционной системой. В Советском Союзе подобная система была создана до появления языка Fort на Западе - это был компьютер "Сетунь-70" с троичной логикой и Диалоговой Системой Структурного Программирования, разработанные Николаем Петровичем Брусенцовым. Так вот - всё программное обеспечение компьютера Canon Cat Джефа Раскина было написано на реализации языка программирования Fort, которая называлась tForth.

В следующий раз я вновь вспомнил имя Джефа Раскина по чистой случайности, когда читал книгу "Планиверсум", о которой я писал в одной из прошлых заметок - Александр Киватин Дьюдни. Планиверсум. Виртуальный контакт с двухмерным миром. В конце книги имеется послесловие автора, в котором он перечисляет использованные им источники, которые вдохновили его на написание книги. В одной из глав Йендред - главный герой книги - совершает путешествие на космическую станцию. В космос он летит на ракетоплане, устройство которого автору книги предложил в личной переписке именно Джеф Раскин.

И конечно же, в немалой степени я захотел ознакомиться с книгой Джефа Раскина после прочтения книги Стив Возняк, Джина Смит. Неизвестный Стив. История Apple и её основателя из первых рук. Дело в том, что Джеф Раскин был сотрудником компании Apple под номером 31. Именно он порекомендовал Стиву Джобсу съездить на экскурсию в лабораторию Xerox, чтобы познакомиться с идеей GUI - графического интерфейса пользователя. Именно Раскин был инициатором проекта Macintosh, назвав его в честь своего любимого сорта яблок McIntosh (название проекта было намеренно искажено, чтобы избежать судебных исков за незаконное использование торговой марки, принадлежавшей компании McIntosh Laboratory, производившей звуковое оборудование). На деле, правда, из-за трений со Стивом Джобсом, Раскин покинул компанию за три года до выпуска компьютера. В результате от его идей в компьютере Macintosh не осталось почти ничего, кроме названия.

История с покупкой книги

Поскольку я не люблю читать электронные книги, то искал бумажную. В прошлом я неоднократно видел эту книгу на полках магазинов. Однако, поскольку дизайн меня не интересует, то обходил её стороной. Сейчас же найти её в магазинах мне не удалось - ни в реальных магазинах, ни в интернет-магазинах. Было лишь одно исключение - книгу можно было заказать на сайте интернет-магазина www.books.ru, принадлежащего издательству Символ, которое и издавало эту книгу. Цена за две с половиной сотни страниц, на мой взгляд, была достаточно высокой - аж 790 рублей. Кроме того, не дёшево в этом издательстве обходится и доставка, из-за чего я предпочитаю покупать книги где-нибудь в другом месте. В этот раз мне очень хотелось заполучить книгу, а других способов для этого не было, и поэтому я заказал книгу именно там. К счастью, высокая цена отчасти скомпенсировалась книгой-подарком, которую я тоже хотел почитать и которая обошлась мне более чем в 10 раз дешевле номинальной цены - это книга Питера Сейбела "Кодеры за работой. Размышления о ремесле программиста".

Заказ пришлось ждать долго. Оформил я его 28 августа и во время оформления заказа меня сразу предупредили, что заказ я получу не раньше 16 сентября. Однако срок отправки несколько раз переносился и в итоге заказ был отправлен 3 октября. 7 октября заказ был доставлен и 9 октября я его забрал.

Кратко о личности самого Джефа Раскина

Первое, что мне бросилось в глаза, - это имя Jef. Я встречал только два варианта этого имени - Jeff или Geoff. Имя Jef с одной буквой f - это довольно необычно. Однако, оставим в стороне мелочи.

Джеф Раскин получил высшее образование и степень бакалавра по математике и философии, стал магистром в области компьютерных наук - его дипломным проектом была музыкальная программа. Раскин профессионально играл на органе, дирижировал оперным оркестром, увлекался живописью, стрельбой из лука, велосипедным спортом и авиамоделированием. У него была фирма, которая выпускала конструкторы для самостоятельной сборки радиоуправляемого планера Western Wind. В области авиамоделирования Раскину даже принадлежит один патент на форму крыла.

В компанию Apple он попал в качестве технического писателя - готовил документацию на Бейсик для компьютера Apple II. Поскольку Apple II мог отображать только символы в верхнем регистре, для подготовки документации использовался другой компьютер - Polymorphic Systems 8813. По инициативе Джефа Раскина был разработан видеоадаптер для компьютера Apple II, который отображал буквы верхнего и нижнего регистра, а самих букв в одной строке вмещалось в два раза больше - 80 вместо 40 на оригинальном адаптере Apple II. Так же по его инициативе на компьютере Apple II появился компилятор языка Pascal, который был лицензирован у UCSD - Университета Калифорнии Сан-Диего. В процессе подготовки документации на Бейсик, Раскин понял, насколько сложным оказалось это дело: в зависимости от объёма оперативной памяти, установленных дополнительных карт, наличия дисковода, Бейсик обладал разными возможностями - во многих случаях кроме самого Бейсика приходилось описывать все эти подробности. Тогда у Раскина появилась идея создать "компьютер для миллионов" - компьютер, которым почти без обучения смог бы пользоваться любой человек "с улицы".

Раскин стал сотрудником компании Apple под номером 31, порекомендовал Стиву Джобсу познакомиться с концепцией GUI - графического интерфейса пользователя, посетив лабораторию Xerox, где разрабатывался компьютер Хеrох Alto. Стоит сказать, что хотя Раскин и воспринимал GUI как шаг в верном направлении, по большому счёту был настроен в отношении этой концепции довольно скептически. Стив Джобс курировал разработку компьютеров Apple ///, а затем и Apple Lisa, продажи которых провалились из-за их низкой надёжности и высокой цены. Раскин предлагает начать новый проект, который он назвал Macintosh. К проекту Macintosh был привлечён техник Баррелл Смит из отдела обслуживания, который занимался ремонтом компьютеров Apple II. Баррелл Смит, вдохновившись схемными решениями Стива Возняка, спроектировал на основе платы Apple II свою плату. Она обладала оперативной памятью объёмом 64 килобайта, умела отображать чёрно-белую графику разрешением 256x256 и была построена на основе микропроцессора Motorola 6809Е. Бад Триббл, один из членов команды Macintosh, ранее работавший над компьютером Lisa, захотел перенести часть наработок из прошлого проекта в новый и поэтому спросил - возможно ли переделать плату на использование процессора Motorola 68000, не увеличивая её стоимости. Барреллу Смиту удалось сделать это. Новая плата работала на повышенной тактовой частоте, содержала микропроцессор Motorola 68000 и поддерживала чёрно-белую графику разрешением 384x256. Финальная модель компьютера Macintosh обладала оперативной памятью объёмом 128 килобайт и поддерживала чёрно-белую графику разрешением 512x256. У Джефа Раскина складывались напряжённые отношения со Стивом Джобсом. К моменту выпуска компьютера Macintosh Джеф Раскин уже три года как покинул компанию, поэтому к моменту готовности компьютера от первоначальных идей Раскина в нём не осталось почти ничего, кроме названия.

Впрочем, кроме названия, до финала проекта часть идей всё-таки дожила. Это была однокнопочная мышь, дисковод для 3,5-дюймовых дискет без механической кнопки извлечения, почти моноблочный дизайн - отдельной была только клавиатура (ну и мышь, что естественно), в компьютере Macintosh отсутствовали слоты расширения.

О компьютере Canon Cat


В последующем Раскин пытался воплотить свои первоначальные идеи уже вне Apple. Первым продуктом его компании стала карта расширения SwiftyCard для компьютера Apple II. Вторым продуктом стал компьютер Canon Cat, разработанный фирмой Раскина и выпущенный компанией Canon. Получилось, правда, что и Canon Cat не был реализован в полном соответствии с замыслами Раскина. У этого компьютера имелось два недочёта: выключатель питания, размещённый на задней панели компьютера и дисковод для дискет с механической кнопкой извлечения. В изначальном проекте не был предусмотрен выключатель - его в конструкцию добавили уже инженеры, которые должны были реализовать технические требования. Мысль о том, что выключатель не предусмотрен намеренно, показалась им невероятной. Инженеры посчитали, что выключатель просто забыли указать и поэтому добавили его самостоятельно. Дисководы для 3,5-дюймовых дискет без механической кнопки извлечения производились только компанией Sony. В Canon отказались заказывать такие дисководы у своих прямых конкурентов. Из-за этого в получившемся компьютере стало возможным извлечь дискету, не сохранив предварительно сделанные на компьютере изменения.

Что представлял собой этот компьютер, можно узнать из рекламного видеоролика, в котором отыграны типовые ситуации использования компьютеров с GUI и компьютера Canon Cat:

Ключевая идея компьютера - максимальное уменьшение модальностей, то есть режимов, в зависимости от нахождения в которых одно и то же действие может приводить к разным результатам. Примером может служить клавиша Caps Lock, которой редко кто пользуется, но которая хоть раз причиняла неприятности каждому пользователю компьютера (особенно много проблем эта клавиша приносит при вводе паролей). Раскин считает, что этой клавише нет места на клавиатуре. Интересно - что он сказал бы о переключаетеле раскладок, если бы вдруг вспомнил, что в мире больше одного языка? Другая идея заключается в том, что компьютер не должен своими действиями или бездействием подвергать риску информацию, созданную пользователем. Наконец, компьютер не должен требовать от пользователя предпринимать действий без выбора - закрывать окошки с предупреждениями, подтверждать какие-либо разрушительные действия. Если некое событие не предлагает пользователю нескольких вариантов реакции, то такое действие должно быть выполнено автоматически. Если действие может оказаться разрушительным, то система не должна выдавать подтверждений, потому что со временем пользователь вырабатывает автоматическую реакцию на подобные подтверждения и всегда подтверждает выполнение действия. Вместо этого система должна просто выполнить это потенциально опасное действие, но предусмотреть возможность его последующей отмены.

Всё программное обеспечение компьютера располагалось в ПЗУ, поэтому пользователю не нужно было ждать загрузки компьютера. На компьютере отсутствовали понятия операционной системы и приложений, т.к. и то и другое повлекло бы за собой увеличение модальностей, ведь в зависимости от того, запущена ли какая-то программа и какая именно программа запущена, пользователю приходится совершать разные действия для достижения одного и того же результата. Например - нужно закрыть уже запущенную программу и запустить нужную ему. Вместо этого, сразу после загрузки компьютера пользователь попадал в рабочую среду, которая напоминала современные текстовые процессоры. Раскин считал, что операционная система - это «то, с чем приходится возиться перед тем, как начать возиться с программой». Если пользователю не придётся возиться с операционной системой и запуском программ, то пользователь сможет приступить к работе с компьютером сразу после его включения.

На компьютере отсутствовало понятие файла. Вместо этого пользователь работал с содержимым вставленной дискеты. Чтобы найти нужный документ, пользователю не нужно было вспоминать его имя - любой документ, имеющийся на дискете, можно было найти по содержащимся в нём словам.

Конечно, работать напрямую с содержимым дискеты было бы очень неудобно, т.к. время чтения и записи дискеты весьма велико. Поэтому содержимое дискеты загружалось в оперативную память при её вставке, а сохранялось в фоновом режиме по мере изменения содержимого.

На первой дорожке дискеты сохранялся образ экрана, каким он был перед выемкой дискеты. Первым делом при вставке дискеты загружался этот образ экрана, а затем уже подгружалось остальное содержимое. Люди не любят ждать, поэтому загруженный образ экрана создаст иллюзию, что компьютер уже готов к работе. Однако человеку требуется некоторое время на то, чтобы восстановить контекст прерванной работы и загруженный образ экрана помогает ему это сделать. В то же время, прежде чем человек приступит к активным действиям, успеет загрузиться оставшаяся часть дискеты. Грузится всегда то же самое место, на котором работа была прервана.

По задумке, если бы в компьютере Canon Cat всё-таки был бы установлен дисковод Sony, пользователь должен был сообщать компьютеру о своём желании извлечь дискету нажатием на специальную кнопку. Получив команду на извлечение дискеты, компьютер должен был сохранить на дискету все ещё не сохранённые изменения и затем разблокировать возможность её выемки. На деле, если пользователь вынимал дискету без предупреждения, а в оперативной памяти ещё имелись не сохранённые данные, то компьютер требовал либо вернуть извлечённую дискету, либо вставить пустую, чтобы сохранить сделанные изменения и предотвратить потерю данных.

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

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

На обращённой к пользователю стороне клавиш клавиатуры имеются надписи, соответствующие различным командам, которые можно выполнять над текстом. Например, чтобы вычислить математическое выражение, нужно выделить его, нажать клавишу "Use Front" и, удерживая её, нажать клавишу, на передней стороне которой имеется надпись "Calculate".

Отдельные клавиши предусмотрены для перемещения по тексту и поиска фрагментов текста - это клавиши Leap. Две такие клавиши расположены под пробелом. Одна из них используется для поиска в прямом направлении, а другая - для поиска в обратном направлении. Нужно нажать соответствующую клавишу и, удерживая её, набрать буквы искомого фрагмента текста. По мере ввода в тексте будут подсвечиваться подходящие фрагменты, а если ближайший фрагмент находится за пределами экрана, то экран будет прокручен к найденному фрагменту. В процессе поиска можно удалять введённые символы - при этом снова будет подсвечен самый первый фрагмент, найденный поблизости от того места документа, где был инициирован поиск. Подобные функции поиска встроены сейчас в браузеры Firefox и Chrome и они сильно отличаются от того, как осуществляется поиск в нынешних текстовых процессорах вроде Microsoft Word и OpenOffice Writer - через отдельное окно поиска, где начало процедуры поиска нужно обозначить явно нажатием на клавишу Enter. В целом, как система поиска, так и остальные функции этого компьютера напомнили мне текстовый редактор Emacs. В тексте книги этот редактор даже упоминается при описании функций пошагового поиска.

Другие идеи из книги

Автор критикует расхожее словосочетание "интуитивный интерфейс". Он говорит, что слово "интуитивный" для прояснения смысла, вкладываемого в это слово, следует заменять словом "привычный". Компьютерная мышь считается интуитивным инструментом взаимодействия с компьютером, однако когда мышь ещё не была распространена, Раскин проводил эксперимент и предлагал людям поиграть в компьютерную игру, воспользовавшись мышью. Большинство людей первоначально брали мышь в руки, а некоторые из них так и продолжали удерживать её в руках, пытаясь нажимать на кнопки и крутить шарик свободной рукой. Характерным примером Раскин считает эпизод в одной из серий телесериала Star Trek, где гость из будущего берёт мышь в руки и пытается продиктовать компьютеру команды так, как будто это микрофон. Однако, если показать человеку в течение 5-10 секунд, как работает с мышью другой человек, то никаких проблем не возникает.

Таким образом, "интуитивность" означает только лишь привычность интерфейса, но ничего не говорит о его эффективности. Если обучить человека пользоваться двумя разными интерфейсами, то оба станут "интуитивными", то есть - знакомыми. А лучшим из них будет тот, который позволяет достигать одинакового результата за меньшее количество действий или последовательностью действий, которые можно выполнить проще и быстрее. Поэтому Раскин концентрируется не на интуитивности, а на эффективности интерфейса. Для этого он использует модели количественного анализа интерфейсов: модель скорости печати GOMS, закон Фитса, закон Хика. Два интерфейса можно сравнить по эффективности, прибегая к методам количественного анализа и к натурным испытаниям, замеряя время, которое необходимо пользователям, чтобы выполнить одно и то же действие в уже знакомом им интерфейсе.

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

Критическая оценка идей

Компьютер Canon Cat, на мой взгляд, был бы идеальным компьютером для писателя или журналиста, если его адаптировать под современные реалии - сделать более компактным, а вместо дискет использовать карты памяти. Однако, например, для дизайнера или бухгалтера такой компьютер был бы уже почти бесполезен - ведь там отсутствует возможность обработать фотографию, создать макет страницы или посмотреть зарплатную ведомость и складские остатки. Становится понятно, что будущее этого компьютера было предопределено - он не обладает необходимой универсальностью, а потому несмотря на высокую эффективность интерфейса, проиграл тому же Apple Macintosh. На Apple Macintosh, например, в комплекте поставки имелось две программы - текстовый процессор MacWrite и графический редактор MacPaint. Возможность рисовать картинки - весьма сильное преимущество.

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

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

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

Другие материалы по теме