Во времена рождения первых персональных компьютеров было ясно, что они способны на большее, чем расчеты, а потому нуждаются в более сложном интерфейсе, нежели командная строка. То, что придумывали исследователи в те времена, хоть в итоге и привело к изобретению GUI в современном виде, но порой отличается от них, как кроманьонец отличался от неандертальца. И у некоторых кроманьонцев нам есть чему поучиться.
NLS Дугласа Энгельбарта
Прискорбно, но факт: многие узнали о том, кто такой Дуглас Энгельбарт, только когда он скончался 2 июля 2013 года (ему было 88 лет). Впрочем, и после этого заслуги и изобретения Энгельбарта в большинстве публикаций трактуются не вполне верно. Чаще всего его называют создателем компьютерной мыши, и это правда: первую мышь действительно разработали под его руководством. Иногда приводят более длинный список изобретений: гипертекст, телеконференции, скриншейринг, совместное редактирование документов, многооконный интерфейс и, конечно же, мышь. Снова никаких выдумок: система NLS (от oN-Line System), над которой работал Энгельбарт, действительно включала в себя все перечисленное. Мало того, к списку легко можно прибавить изобретение аутлайнов (ветвящихся документов), тегов, системы контроля версий, вики и первой программы для показа презентаций.
Так что же не так с этими описаниями, раз все факты правдивы? Неверна интерпретация. Сегодня мы смотрим на знаменитое «Демо» Энгельбарта и разгадываем в NLS кусочки того, чем пользуемся. Однако — вот парадокс! — многие части энгельбартовской системы образца 1968 года до сих пор не реализованы в полном объеме, а NLS больше похожа на так и не развившуюся ветвь эволюции, чем на предшественника сегодняшних ОС.
Цели Энгельбарта никогда не были напрямую связаны с конкретным технологиями: чего он хотел по-настоящему, так это расширить возможности человека и упростить совместную интеллектуальную работу. Из этого стремления происходят и все те необычные вещи, что есть в NLS. Видеоконференции — потому что люди, работающие вдвоем, должны видеть друг друга; два курсора мыши — потому что как иначе смотреть, что делает собеседник? Даже странности интерфейса NLS отчасти объясняются тем, что Энгельбарт был готов пожертвовать удобством ради потенциальной возможности научиться работать максимально эффективно.
Впрочем, в те времена говорить об удобстве все равно не приходилось: основным устройством ввода еще считались перфокарты, а результат вычислений приходил через несколько дней в виде распечатки телетайпа. «Что, если у каждого работника на столе будет стоять свой компьютер?» — спрашивает Энгельбарт у аудитории. И чувствуется, что эта мысль звучала крайне смело.
В NLS использовались передовые технологии: ЭЛТ-монитор с возможностью вывода растровой графики, мышь и клавиатура. Вернее, две клавиатуры: одна обычная, вторая аккордная, вроде тех, которые применяют стенографы. Мышь служила в качестве указателя на объект, тогда как команда, прилагаемая к объекту, вводилась левой рукой — при помощи аккордной клавиатуры. Это примерный аналог сочетаний клавиш в современных ОС, но с той разницей, что в NLS они были основным способом работы. Запомнить аккорды было непросто, но те, кто справлялся, обретали возможность работать на NLS с впечатляющей скоростью.
Смотря «Демо», невозможно не заметить мучения, которые требовались для создания такой системы. Она работала на мейнфрейме (с диском аж на 96 Мб!), скриншейринг был реализован при помощи кинокамер, закрепленных напротив мониторов, а для демонстрации совместной работы над документом приходилось звонить в другое учреждение по модему — на фоне слышно характерное шуршание. В конце презентации Энгельбарт мечтательно говорит, что скоро его соратники по DARPA завершат работу над созданием сети ARPANET, работающей на поразительной скорости 20 Кбит/с, и тогда-то можно будет устанавливать терминалы NLS где угодно — хоть в Массачусетсе, хоть в Кембридже!
Замысловатая реализация NLS и необходимость учиться командам-аккордам — не единственные причины, по которым новаторские идеи не получили распространения и достойного развития. NLS добили персональные компьютеры: к восьмидесятым годам подключение по быстрой сети все еще было редким удовольствием, а вот машины, исполняющие (пусть и примитивные) программы локально, начали распространяться со страшной скоростью. Аспекты многопользовательской работы в NLS были прочно связаны с концепцией системы с разделением времени (так в те времена называли многозадачность) и клиент-серверной архитектурой, постепенно уходившей в прошлое. Только вот это никак не оправдывает постыдного факта: сегодня мы имеем гигабитные каналы и на порядки более мощные компьютеры, но при этом не имеем систем, которые позволяли бы так легко работать вдвоем, как это можно было делать на NLS.
Alto Алана Кея
«Я пишу это вступление, сидя в самолете на высоте 35 тысяч футов. У меня на коленях лежит компьютер весом пять фунтов (2,2 кг) — это разработанный в 1992 году „промежуточный Dynabook“, который к концу года будет продаваться по 700 долларов. У него четкий плоский графический дисплей с высоким разрешением, система с перекрывающимися окнами и значками, указующее устройство, значительный объем постоянной памяти и объектно-ориентированная рабочая среда. Также у него есть встроенная сетевая подсистема и даже возможность поддерживать беспроводное соединение. Здесь работает Smalltalk, и эту систему я использую в своей работе с детьми. В некоторых (количественных) аспектах это больше чем концепция Dynabook, в некоторых (качественных) кое-что еще осталось довести до ума. Но в целом это как раз то, что я задумывал в поздние шестидесятые», — так начинается эссе Алана Кея под названием «Ранняя история Smalltalk».
Описываемый здесь графический интерфейс с окнами и значками, равно как и объектная среда, — все это изобретения Алана Кея. Как известно, Smalltalk был первым объектно-ориентированным языком программирования, а его интерфейс впервые имел так хорошо знакомый нам сегодня набор из перекрывающихся окон, значков, ниспадающих меню и курсора мыши. Кто бы мог подумать, что один человек способен вот так взять и с чистого листа создать современную концепцию программирования и интерфейсов? Но на самом деле лист был не совсем пустым.
Вдохновлением для Smalltalk стал еще более ранний язык программирования — LISP. Еще студентом Алан Кей восхищался компактностью, выразительностью и уникальным функциональным стилем Лиспа. Он хотел сделать что-то наподобие, но с возможностью делить код на отдельные сущности, которые могли бы обмениваться сообщениями друг с другом. Что до графического интерфейса, то здесь Кею примером служили два проекта. Первый — графическая система проектирования Sketchpad, которую разрабатывал научный руководитель Кея Айвен Сазерленд. Второй — NLS.
Когда Дуглас Энгельбарт показывал Кею NLS, первому было 42, второму — 28. Старина Энгельбарт мечтал о компьютере на каждом рабочем столе, но не мог отказаться от идеи мейнфреймов с терминалами (и на то были причины). Энгельбарт был на шаг впереди прогресса, но Кей — сразу на два: он уже грезил портативными компьютерами, которые можно было бы использовать в школах.
Однако компания Xerox, финансировавшая разработку, о ноутбуках не думала. Там были увлечены продажей дорогих лазерных принтеров и хотели сделать мощную рабочую станцию к ним в комплект. Среда Smalltalk была нужна в качестве операционной системы. Организациям планировалось поставлять комплекты из нескольких компьютеров Alto по 16 тысяч долларов каждый, принт-сервера, файл-сервера и, конечно, лазерного принтера. В итоге вся система стоила от 50 до 100 тысяч долларов (140–280 тысяч в современных деньгах). Неудивительно, что организации предпочитали простенькие Commodore VIC-20 по 300 долларов за штуку. Всего к 1979 году было продано всего около тысячи компьютеров Alto.
Справедливости ради стоит сказать, что нельзя целиком винить Xerox в провале Alto и заодно с ним, по-хорошему, и Smalltalk в качестве мейнстримового языка программирования (в академических кругах Smalltalk до сих пор уважаем). Система Кея действительно требовала необычно мощного по тем временам компьютера. Но кто знает, что бы случилось, если бы в Xerox попридержали идею, чтобы потом попробовать «выстрелить» пусть и не самым дешевым, но персональным компьютером? Не исключено, что мы бы все сейчас работали на ксероксах!
Зато оконный графический интерфейс поддавался воссозданию и без объектно-ориентированного языка. В качестве запасной стратегии в Xerox сделали вложение в Apple, и основатель компании Стив Джобс воспользовался случаем и напросился на экскурсию по исследовательскому центру Xerox PARC. Как бывший слушатель лекций по каллиграфии, Джобс моментально влюбился в растровые шрифты компьютеров Xerox и в их интерфейс.
«Мне показали три вещи. Но я был настолько ослеплен одной из них, что даже не заметил остальных», — рассказывает Джобс о том визите. Первой из них было объектно-ориентированное программирование, второй — компьютерная сеть, третьей — графический пользовательский интерфейс. Джобс вспоминает: «Уже через десять минут знакомства с ним мне стало ясно, что все компьютеры когда-нибудь станут работать именно так».
McIntosh Джефа Раскина
В 1982 году в Apple произошел настоящий кулуарный переворот. Совет директоров за вздорное поведение отстранил Стива Джобса от проекта Lisa, готовившегося прийти на смену популярным моделям Apple II и III. В Lisa уже применялся подсмотренный в Xerox PARC графический интерфейс, но Джобс, потеряв контроль над Lisa, захватил другую разработку — McIntosh. Уже через два года Макинтош станет знаменитым, но из-за влияния Джобса не будет иметь ничего общего с оригинальной разработкой. А ведь она тоже не была лишена гениальности!
До Джобса над домашним компьютером будущего в Apple трудился Джеф Раскин — бывший профессор Калифорнийского университета, который сперва в качестве подработки написал учебник по эппловской версии BASIC, а затем был приглашен на работу руководителем отдела документации. Доведя буклеты до совершенства, Раскин предложил руководству Apple собственный проект компьютера: дешевого, простого в освоении и использующего новаторские идеи.
Созданный Раскиным компьютер и его ОС были очень необычными. Там не применялось разделение на файлы — вместо этого был один длинный документ с маркерами, делящими его в нужных местах. Интерфейса в его нынешнем понимании тоже не было: команды можно было набрать и исполнить в любом месте. На клавиатуре имелась специальная кнопка Leap, позволяющая скакать между маркерами. Система вместе с единственным документом занимала одну дискету, что было крайне удобно в условиях отсутствия жесткого диска и второго дисковода. ОС целиком помещалась в память, и все содержимое в случае надобности всегда можно было выгрузить на ту же или другую дискету, чтобы потом начать работу с того места, где оставил.
За интерфейсом McIntosh стояли серьезные исследования. —Раскин рассмотрел те действия с компьютером, которые чаще всего приводят к ошибкам, и пришел к выводу, что источник проблем — режимы. Вот простой пример режима: мы хотим выполнить какое-то привычное действие, например напечатать букву, но буква не печатается из-за того, что активно какое-то меню, и команда будет относиться к меню. Активность меню — это и есть режим. Чем больше в интерфейсе режимов, тем больше ошибок мы будем совершать. Раскин разработал систему научных методов, которая позволяет оценивать объективные параметры интерфейсов и улучшать их.
Оригинальный McIntosh в полной мере удовлетворял своду правил Раскина. К тому же он был относительно дешев — в том числе из-за не самого нового процессора Motorola 6809 — более мощный просто не требовался. Кто знает, какая судьба ждала бы «оригинальный Макинтош», если бы не второй этап переворота — захват Джобсом власти над рабочей группой Раскина.
Джобс хотел сделать все по-другому: добавить графический интерфейс и мышь, установить более мощный процессор Motorola 68000 и даже сменить название на Bicycle («Компьютер — это велосипед для ума», — гласила тогдашняя реклама Apple). Новое название не прижилось, а вот все остальное было воплощено. Идеи Раскина оказались не нужны, и тот, рассорившись с Джобсом, вскоре покинул компанию.
Кто из них был прав? Сейчас об этом сложно судить. Оригинальный McIntosh стоил того, чтобы дать ему шанс, однако будущее действительно было за графическими интерфейсами, и срок жизни текстовой системы был ограничен. Впоследствии компьютер Раскина таки был выпущен фирмой Canon, но слишком поздно — он успел устареть, и удобство уже не играло роли. Позже Раскин напишет книгу «Интерфейс», которая до сих пор считается классикой и обязательным чтением для всех дизайнеров интерфейсов.
Plan 9 Роба Пайка
Роб Пайк — один из тех людей, кто приложил руку к оригинальному UNIX, однако к кружку отцов-основателей он не принадлежит. Пайк устроился работать в Bell Labs только в 1980 году, когда основа UNIX была давно заложена. Впрочем, занятие он нашел без труда: разработал систему кеширования памяти, в соавторстве с Брайаном Керниганом написал пару технических книг о UNIX и параллельно работал над первыми графическими терминалами — они назывались Blit.
Устройство Blit не отличалось элегантностью: это была первая попытка создать графический оконный интерфейс для UNIX, и пришедший пару лет спустя X Window оказался более прогрессивным. Со временем «Иксы» обрели популярность, но что тогдашние, что сегодняшние графические среды UNIX и Linux — это лишь подражания интерфейсу Mac OS и, позже, Windows, надстроенные сверху над классической системой. У Роба Пайка же в голове было видение более современной и совершенной версии UNIX.
В середине восьмидесятых годов часть разработчиков оригинального UNIX, включавшая Роба Пайка и Кена Томпсона, организовала отдельную группу, которая работала над «Юниксом будущего» — его называли Plan 9 в честь фильма «План 9 из открытого космоса». При общей схожести с UNIX Plan 9 имеет серьезные усовершенствования в области файловой системы, сетевого протокола и взаимодействия процессов. А еще у него совершенно уникальный пользовательский интерфейс.
Оконный менеджер Plan 9 называется Rio, и он имеет серьезные архитектурные отличия от X Window. Каждое окно здесь образует собственное пространство имен и представлено в файловой системе. Раз в UNIX уже есть файлы-процессы, файлы-порты и файлы-устройства, так почему бы не сделать файлами окна? Тогда к ним можно будет обращаться из командной строки, передавать в них информацию и читать из них — то есть делать все то же, что с другими файлами.
Кроме Rio, в Plan 9 имеется рабочая среда Acme, и она тоже весьма необычна. Acme представляет собой гибрид между плиточным менеджером окон (современные аналоги — это Wmii, Ratpoison и тому подобное), программистским текстовым редактором и консолью. И все это с совершенно уникальным интерфейсом, аналогов которому сегодня нигде не найти.
Знакомство с Acme обычно начинается с того, что пытаешься нажать какой-нибудь пункт меню и не понимаешь, почему ничего не происходит. Следом обнаруживается, что меню поддельное: пункты — это простой текст, который можно дописать или стереть. Как и в системе Раскина, команды здесь можно вводить хоть прямо в тексте, а меню — это просто условность. Но, в отличие от «оригинального Макинтоша» (и слегка в стиле NLS), без мыши (причем трехкнопочной!) в Acme обойтись нельзя никак. Левая кнопка выделяет текст, средняя исполняет команды, правая ищет по тексту, а также открывает файлы. Чтобы вырезать фрагмент, нужно выделить левой и, не отпуская, нажать на правую кнопку; чтобы вставить — левую и правую вместе, а чтобы скопировать — подряд совершить выделение и вставку, не отпуская левой кнопки.
Больше всего, пожалуй, Acme впечатляет отсутствием разницы между типами окон. Все они содержат текст, и его никто не запрещает редактировать. Возможность исполнять команды откуда угодно тоже бывает полезной: например, работая над скриптом, можно выделить пару строк и запустить их, результат откроется в новом тайле. А если попадется путь к файлу, то можно выделить его правой кнопкой, и тогда соответствующий файл откроется рядом.
Гибкость Acme и продуманная внутренняя логика должны делать его привлекательным для программистов, но для массового применения он в любом случае не годится. Впрочем, и сам Plan 9 не стал массовым. Примерно как Smalltalk проиграл менее элегантному, но более практичному C++, Plan 9 остается лишь «той системой, авторы которой придумали Unicode», игрушкой исследователей и, конечно, легендой.
Microsoft Bob
Каждый, кто хоть раз искал документ в Windows XP, наверняка удивлялся внезапному появлению в углу экрана желтой собаки. Собака ведет с пользователем диалог через пузыри с текстом, то и дело виляет хвостом, принюхивается, шевелит ушами и вообще ведет себя как настоящая собака. При желании ее можно заменить на бородатого волшебника, но и он не избавит от недоумения: что эти персонажи забыли в Windows?
Поисковая собака, равно как и Скрепыш, ненавистный всем пользователям Word 97 и 2003, — остатки проекта Microsoft Bob. Интерфейс Bob был настолько же непохож на традиционные окна, насколько и энгельбартовский NLS, но отличия направлены ровно в противоположную сторону. Исследовательницы Карен Фрайс и Барри Линнетт решили, что своим успехом Windows обязана метафорам рабочего стола, папок и файлов-страничек, а затем придумали сделать интерфейс, полностью состоящий из изображений реальных предметов и анимированных персонажей. Вот это будет непревзойденная интуитивность!
За ведение проекта взялась Мелинда Френч — будущая жена Билла Гейтса. И к 1995 году «женская сборная» Microsoft уже могла с гордостью демонстрировать готовый продукт.
Microsoft Bob напоминал мегапопулярные в те времена рисованные приключенческие игры. Знакомство с программой начиналось с дверного молотка на большой красной двери, за которой скрывалось несколько комнат: кабинет, гостиная, детская, чердак и гараж. Убранство дома можно было выбрать из современного, ретро, футуристичного и других. В варианте «дом с привидениями» был даже экран с кладбищем.
По комнатам дома разбросаны предметы, за каждым из них стояла возможность выполнять какое-то из повседневных действий с компьютером. На столе помещались часы, календарь и адресная книга. Ручка означала переход к текстовому редактору и так далее. Всю дорогу пользователя сопровождал один из двенадцати помощников, каждый из которых отличался зашкаливающей умильностью. От выбора персонажей иногда зависел и стиль диалогов: так, средневекового вида мужчина в берете говорил высокопарным стилем.
Среди приложений числились почтовик, финансовый планировщик, программа для составления завещаний и даже игра «Угадай страну», которой руководил изможденного вида фиолетовый слон Хэнк.
Кроме поразительно назойливых предупреждений и псевдоинформативных подсказок, помощники иногда выдавали и полезные панели — к примеру, для работы с текстом. В некоторой мере это напоминает современный Ribbon в Microsoft Office. Но вот досада — формат текстового редактора «Боба» не был совместим с Word. Не успели внедрить и браузер, а учитывая, что 1995-й для многих стал годом первого знакомства с интернетом, это было большим упущением.
Ни роскошное убранство, ни разговорчивые собачки и кошечки, ни даже слон Хэнк не убедили пользователей в необходимости покупать «Боба». Всего было продано 58 тысяч копий программы, и на следующий год в Microsoft решили перестать позориться и закрыть проект.
В отличие от других перечисленных в этой статье интерфейсов, «Боб» не выглядит как пример для подражания и источник важных идей. Лучшее, на что он сейчас годится, — это служить примером в споре любителей скевоморфизма (интерфейсов, полных метафор из жизни) и сторонников строго функционального оформления программ. Но в мире технологий все меняется очень быстро. То, что сегодня — тупиковая ветвь и посмешище, завтра может начать считаться гениальной идеей, опередившей время. Если компьютеры обретут истинный интеллект, то, кто знает, может быть, мы станем обращаться за советом к виртуальной собаке Бобу, а не копаться в окошках.