Персона. Алан Кэй — пророк, автор концепции GUI и языка Smalltalk
Алан Кэй любит ссылаться на себя, и часто начинает свою речь с фразы: «Закон Кэя номер один гласит…». Наверное, он имеет на это право. Много лет его недооценивали, загоняли в рамки и даже гнобили.
Алан Кэй — человек, который не может держать свое мнение при себе, если тема дискуссии действительно волнует его. За это ему и пришлось поплатиться пару раз. Однако ему везло, и в результате он оставался в выигрыше. В его случае справедливо изречение: «Все, что ни делается — все к лучшему».
Благодаря странному стечению обстоятельств Кэй стал заниматься разработкой ПО, а позже оказался первопроходцем в областях объектно-ориентированного программирования и графического интерфейса. На этом пути он придумал и реализовал то, что казалось невозможным ранее, о чем большинство его коллег просто не задумывалось. «Простое должно оставаться простым. Сложное должно быть возможным», — это его жизненное кредо.
Против системы
Алан Кэй родился в Спрингфилде (штат Массачусетс). Вскоре после его рождения семья переехала в Австралию, где он прожил первые годы своей жизни. Во время Второй мировой войны, опасаясь угрозы японского вторжения, его родители решили вернуться в Соединенные Штаты.
Одаренный ребенок уже в три года научился читать и, становясь старше, непрерывно расширял свой кругозор новыми знаниями. В десять лет Алан Кэй стал победителем Национальной игры-викторины (National Quiz).
«Когда я пошел в школу, я уже прочитал пару сотен книг. Я знал в первом классе, что они лгали мне, потому что у меня уже была своя точка зрения. Им (учителям) не нравилась идея различных точек зрения, так что это была битва», — рассказывал Кэй.Действительно, зная больше, чем все его одноклассники и большинство учителей, он не мог не демонстрировать этого. Но неординарные способности и не по годам развитый ум стали поводом для насмешек со стороны сверстников и травли со стороны педагогов. Таким образом достоинства ребенка система превратила в недостатки.
Кроме всего прочего, Кэй с детства учился музыке. Его мать была музыкантом, и художником. Еще в начальной школе он был солистом в хоре и уже в раннем возрасте хорошо играл на гитаре. На самом деле он рассчитывал стать профессиональным музыкантом. Позднее он пробовал свои силы в качестве композитора и театрального постановщика, а потом вообще увлекся классической органной музыкой.
В 1961 году за участие в протесте против введения процентной квоты для студентов-евреев он был исключен из колледжа. Тогда Кей отправился в Денвер, где стал джазовым музыкантом и давал уроки игры на гитаре, чтобы заработать на жизнь.
Поворот в карьере
Но другой талант, принесший ему гораздо большую известность, неожиданно обнаружился у Кэя … в армии, куда он пошел добровольцем. Нет, речь не о виртуозном умении подметать асфальт граблями: тестирование показало, что у него блестящие способности к программированию. В связи с этим Кэй был направлен в ВВС США для работы на компьютере IBM 1401. Это стало судьбоносным моментом в его карьере.
Алан служил на военной базе Рандольф, где работал с компьютером Burroughs 220.
Burroughs 220 — ламповый компьютер фирмы Burroughs Corporation, который тогда располагался в Детройте. Он был разработан в 1957 году компанией Electrodata Corporation и назывался Electrodata Datatron 220 до того, как Electrodata была поглощена Burroughs. В разное время устройство стоило от $601 000 до $325 000 и выполняло умножение за 2, а деление почти за 4 микросекунды.
Университеты
По завершении службы в ВВС Алан Кэй был направлен Национальным Центром Атмосферных Исследований в университет Колорадо на факультет математики и молекулярной биологии.
Получив степень бакалавра, в 1966 году он поступил в университет Юты на факультет инженерии. К тому времени Кэй понял, что посвятит свою жизнь ИТ-технологиям.
Именно там произошло знакомство с работами Айвэна Сазерленда, одного из создателей виртуальной реальности. Там Кэй начал программировать на языке Simula. Сочетая идеи, в сфере программирования и биологии, он сформулировал принцип биологической аналогии. Он утверждал, что идеальный компьютер должен быть подобен живому организму, где каждая клетка индивидуальна, но вместе они могут образовывать единую систему, способную к перегруппировке и изменению структуры.
С 1967 по 1969 год Алан Кэй в рамках работы над своей диссертацией разрабатывал программное обеспечение для компьютера Flex. Хотя Flex не был запущен в массовое производство, он по существу явился прототипом персонального компьютера.
При работе над FLEX была предпринята попытка оптимизировать производительность компьютера так, чтобы пользователь мог быстрее получать от него обратную связь.
Хотя FLEX был новшеством в техническом плане, он был очень сложен. По словам Кэя, «пользователей отталкивала сложность в изучении». Проблема заключалась не в оборудовании, а в специальном языке, которым пользователь должен был овладеть для получения желаемых результатов. Так Алан Кэй впервые убедился, что разработка программного обеспечения должна идти в направлении, облегчающем работу человека с персональным компьютером.
Осенью 1968 года у Кэя произошла еще одна знаменательная встреча, которая во многом повлияла на его будущее. Он познакомился с Сеймуром Пайпертом и некоторое время проработал вместе с ним в лабораториях искусственного интеллекта в Массачусетском технологическом и Стэнфордском университетах. Пайперта называют отцом языка программирования Logo.
Пайперт и ставший его соратником Дуглас Энглебарт пытались превратить тяжеловесную машину (в то время, кроме мэйнфреймов, ничего и не было) из «поезда», движущегося по лимитированным компанией путям, в «автомобиль», обладающий свободой передвижения.
«В 1968-м я впервые увидел, как Сэймур Пейперт работает с детьми и LOGO, и узнал по-настоящему эффективную систему распознавания рукописного текста. Это — невероятная система… Когда я объединил это с идеей того, что дети должны использовать это, понятие компьютера обрело смысл суперсреды», — вспоминает Алан Кэй.В это время у него созрел замысел о создании первой в истории модели персонального компьютера — «Динамическую книгу» (Dynamic Book).
В 1969 году Кэй защитил докторскую диссертацию, в которой разработал принципы создания персонального компьютера — мощного, но простого в управлении. После этого Алан Кэй стал профессором Стэнфордского университета и проработал два года в Стэнфордской лаборатории искусственного интеллекта.
Там он начал думать о компьютере размером с книгу, который можно было бы использовать вместо бумаги.
Продолжая работать над проблемой обучения детей с помощью компьютера, Алан Кэй выделил три метода возможного обучения:
Первый — это запоминание поучительных историй; иногда они формулируются в виде афоризмов, пословиц и поговорок. Это также народные предания, фольклор… Второй метод — это метод логических рассуждений, метод изучения цепочек причинно-следственных связей, путь математики и формальной логики. Остается третий метод — это метод «системной динамики». Метод формирования в мозгу интуитивных картин поведения тех или иных объектов и систем, принадлежащих внешнему миру.Книга — основной Хранитель достижений Цивилизации — годится для передачи знаний при использовании первого и второго из рассмотренных методов. В книге можно собрать замечательные истории, мудрые афоризмы и поучительные поговорки. В книге можно изложить математическую дисциплину. Но книга практически не годится для передачи знаний методом «системной динамики».
Xerox
С таким багажом Кей в 1972 году занял должность руководителя группы перспективных исследований (Learning Research Group) в Xerox Palo Alto Research Center (PARC). На тот момент компания практически добилась монополии на рынке копировальной техники и стремилась расширить сферу своей деятельности.
Руководство Xerox решило сделать ставку на ученых мужей: позволить им проводить исследования в стенах фирмы, дать карт-бланш, но в нужный момент использовать результаты их деятельности на благо компании.
В начале 70-х многим казалось, что «вот-вот» бумажные носители информации и средства из обслуживания канут в небытие. На смену должно было прийти что-то другое. Было ясно, что в основе должен быть компьютер. Алан Кэй и команда должны были придумать, как именно это можно реализовать.
Как ни странно, атмосфера богемы способствовала удивительной работоспособности в творческой обстановке. Возможно, именно в таких условиях смогли зародиться предпосылки явления, получившего название «персональный компьютер». Сегодня, когда сменилось несколько поколений ПК, рассуждения, занимавшие в ту пору лучшие умы, могут показаться наивными. Но именно из них выросли идеи графического пользовательского интерфейса и объектно-ориентированного программирования.
Но кроме того, необходимо было решить ряд проблем отнюдь не технического свойства, в том числе проблему соотношения между сообщением и носителем информации. Первое, что удалось, — это интерпретировать компьютер как «супербумагу». Ныне мысль о том, что компьютер, изначально предназначенный для вычислений, мог стать цифровым медиа, носителем информации, принимается как данность. Тогда эта мысль стала прорывом.
Работая над соотношением между семантикой сообщения и носителем, Кэй писал:
«Любое сообщение в том или ином смысле моделирует некоторую идею. Оно может быть конкретным или абстрактным. Свойства носителя в значительной мере определяют то, как сообщение может быть распознано, отредактировано и сохранено. Хотя компьютеры были изобретены для арифметических вычислений, их способность воспроизводить детали любой описательной модели позволяет сам компьютер рассматривать как носитель информации, он может совместить в себе свойства других носителей».
Dynabook — прототип ноутбука
Анализируя реакцию детей при общении с компьютером, Кэй заметил, что дети лучше воспринимают изображения и звуки, нежели простой текст. Вместе с другими исследователями из PARC Кэй разработал простую компьютерную систему, которая интенсивно использовала графику и анимацию.
Многие дети очень хорошо адаптировались к использованию этой системы, они научились решать в ней довольно сложные задачи. Эта система получила название «DynaBook».
В марте 1977 года Алан Кэй и Адель Голдберг отправили статью под названием «Personal Dynamic Media» в журнал Computer.
«Представьте себе, что Вы можете иметь Ваш собственный навигатор знаний в портативном пакете размером и формой с обычную записную книжку… Предположите, что он имеет достаточно возможностей, чтобы сохранить тысячи страниц исходных материалов, стихотворений, писем, рецептов, записей, чертежных данных, анимаций, … динамических моделей, и что-нибудь еще, что бы вы хотели сохранять и редактировать. DynaBook можно использовать для чтения или записи как обычную книгу с иллюстрациями, но она (DynaBook) предоставляет гораздо больше возможностей: динамический поиск может быть осуществлен для индивидуального контекста», — писали Кэй и Голдберг.Кэй описал DynaBook как портативное интерактивное устройство с плоскопанельным сенсорным экраном, беспроводной системой коммуникации и мультимедийными возможностями. Здесь предполагался принцип WYSIWYG (what you see is what you get), текстовые редакторы и система рисования.
Для этой машины будущего был спроектирован и смоделирован графический интерфейс Star GUI, включивший все знакомые нам сегодня элементы — окна, пиктограммы, меню и многое другое. Графический интерфейс Star стал прототипом интерфейса Macintosh.
Проект Dynabook так никогда и не был завершен, однако его роль в ИТ-индустрии очевидна.
SmallTalk
Самым значительным практическим результатом работы Алана Кэя в Xerox PARC стало создание языка Smalltalk. Существовавшие в то время языки программирования в основном были ориентированы на решение вычислительных задач. Они обладали необходимыми средствами для работы с символами, но были слишком сложны и не соответствовали проекту Dynabook. Поэтому разработке нового языка был отдан высокий приоритет. Некоторые его идеи были заимствованы из Simula и у Пайперта, который создавал язык Logo на основе работ французского психолога Жана Пиаже.
В течение двух лет, начиная с 1970 года, Алан Кэй работал над языком Smalltalk, который разрабатывался для того, чтобы смоделировать ранее описанную биологическую модель, состоящую из ячеек (или «клеток») и передачи сообщений между ними. После выхода Smalltalk на рынок (1983 год) язык приобрел широкую популярность. Он был одним из первых языков объектно-ориентированного программирования, олицетворяющим методологию, на основе которой можно создавать параллельные системы, базы данных и базы знаний.
Структура классов в SmallTalk на примере 'Rectangle'
Изначально предполагалось, что инструмент программирования Dynabook будет совсем простым, доступным для детей. Его первая версия, написанная на BASIC, вышла в октябре 1972 года. Через четыре месяца появилась версия на языке ассемблера (Smalltalk-72), и позже, в 1974 году, когда ее установили на Alto, можно было начинать экспериментальную работу с детьми.
В Smalltalk-80 были добавлены метаклассы, что соответствовало концепции «всё есть объекты». Smalltalk-80 был первой версией, доступной за пределами PARC — сначала как Smalltalk-80 Version 1, розданный небольшому количеству компаний и университетов для «экспертной оценки». Позже, в 1983 году, были выпущены общедоступная реализация, известная как Smalltalk-80 Version 2. Эти модификации языка были уже «недетскими».
Чтобы язык можно было использовать на различных платформах, его реализовали в виде виртуальной машины (Virtual Machine, VM) и виртуального образа (Virtual Image, VI). VI представлял собой библиотеку классов, в которой реализована функциональность Smalltalk, включая определение структур данных, методов работы с текстами и графикой, компиляторы, декомпиляторы, отладчики. Компилятор генерировал код на промежуточным языке, названном byte codes. VM обеспечивала интерпретацию байт-кодов на любой платформе. Все это вызывает ассоциации с Java на уровне подкорки. Это говорит о той серьезной роли, которую сыграл SmallTalk в программировании.
Жизнь после Xerox
Кроме DynaBook и SmallTalk у Алана Кэя были и другие проекты. Будучи лидером научно-исследовательской группы в PARC, Кэй содействовал разработке Ethernet, лазерной печати и сетевой клиент-серверной модели ARPANet.
Кэй предлагал Xerox инвестировать в некоторые из его проектов, но управление Xerox не пожелало развивать его идеи и вкладывать крупные ресурсы в его работу. Когда Стив Джобс, Джеф Раскин и некоторые другие лидеры Apple посетили PARC в 1979 году, они сразу же увидели огромные перспективы в работах Алана. Они были поражены идеей оконного интерфейса и гибкостью языка Smalltalk. Работа Алана в PARC была зерном, из которого вырос Арple Macintosh.
Кэй ушел из Xerox в 1983 году и после небольшого перерыва стал ведущим программистом-исследователем в Apple Atari, в 1984 году — на Macintosh, первом массовом компьютере с графическим пользовательским интерфейсом.
В 1996 году Кэй перешел на должность вице-президента по исследованиям и разработкам в компанию Walt Disney. Он трудился в подразделении Walt Disney Imagineering Lab., где разрабатывались самые новые аттракционы для парков Disney World.
Новое тысячелетие ознаменовалось бурным ростом рынка мобильных систем, как и предсказывал Алан Кэй.
После ухода из Disney, в 2001 году, он основал исследовательский Институт Вьюпоинта (Viewpoints Research Institute), некоммерческую организацию, посвящённую детям, обучению и передовым разработкам программного обеспечения, где является председателем.
В 2003 году Кэй стал лауреатом премии Тьюринга за вклад в развитие объектно-ориентированного программирования. В 2004 году он получил Премию Киото.
Позже Кэй работал в команде Applied Minds, затем стал главным сотрудником (Senior Fellow) в Hewlett-Packard пока HP не распустил команду перспективных исследований в области программного обеспечения 20 июля 2005 года.
С 2006 года Алан разрабатывает систему STEPS (STEPS Toward Expressive Programming Systems) на гранты National Science Foundation.
В 2015 году Илон Маск вместе с группой инвесторов из IT-индустрии основал фонд OpenAI, который займется исследованиями, способными предотвратить восстание искусственного интеллекта против людей. У фонда будет наблюдательный совет, который возглавил Алан Кей.
След в истории
Алан Кэй изменил отношение к компьютерам. До идей Алана Кэя, компьютер был ящиком, который выводил не понятные простому человеку текст и цифры на экран. Для общения с машиной, необходимо было выучить довольно сложный язык. Кэй осознал, что пользователи могут и должны взаимодействовать с компьютером другим способом и не должны быть ограничены только текстом.
Он был среди первых, кто решил представить объекты в компьютере как изображения — метафора, которая в дальнейшем расширилась с появлением объектно-ориентированного программирования.