Rambler's Top100
 
 
  21 ноября 2008 года Компьюлента
CIO
Терралаб
Бизнес-журнал
в поле зрения | обзоры и тесты | своя игра | интерактив

В ближайшие дни в этом блоге "Компьютерры-Онлайн" мы (не без помощи читателей) будем выбирать лучшие компьютерные игры - от Pong и Mario до GTA 3 и World of Warcraft.

Путеводитель автостопщика по потаенным знаниям

Тяга человека и человечества к потаенному знанию — извечная наша слабость и любовь, влекущая нас от восточного золотого века к западному техногенному раю. Нельзя же все время писать, к примеру, о С++ — будто все остальные языки, на которых пишут серьезные лохматые граждане программистской национальности, либо произошли от сиплюсплюса, либо вообще никому не нужны. Так что будем говорить о языках, на которых серьезные граждане писать не станут. Потому что они о них не знают. (Мы-то знаем, но мы не такие серьезные.)

История Посвященных начата «26 мая 1972 года, ранним утром» Доном Вудсом и Джеймсом Лионом — людьми совершенно даже несерьезными и, возможно (хотя и вряд ли), даже не особо лохматыми. То раннее утро — день рождения языка, роль которого в компьютерном мире не меньше, чем в общекультурном — роль Бориса Виана и Дугласа Адамса, Терри Пратчетта и Монти Пайтона; всех тех, для кого светлые идеалы глумления над психикой читателя превыше банальной житейской логики. Потаенный Язык Программирования, названный «Compiler Language With No Pronounceable Acronym» (Компьютерный Язык С Непроизносимой Аббревиатурой, сокращенно — для удобства — INTERCAL), был преподробнейшим образом описан в руководстве из восьми частей («1.3. Благодарности. Мы глубоко обязаны Eric M. Van и Daniel J. Warmenhoven, без чьей невольной помощи это руководство все равно было бы написано») и оставил неизгладимый след на психике всех, кто когда-либо с ним столкнулся. То был язык, базой для которого не стали Фортран и Бейсик, Алгол и PL/I, Lisp и APL, и даже появившиеся намного позже C, Pascal, Java и Prolog. То был язык, сокровенным смыслом которого стала ни-единой-командой-не-похожесть-ни-на-что (Заметим, что по несчастливой случайности, эта цель так никогда и не была достигнута. Одна команда языка INTERCAL совпала по смыслу с одной из команд советского-социалистического-ордена-ленина-и-трудового-красного-знамени-компьютера БЭСМ-6. Что в очередной раз демонстрирует). То был язык, в котором иногда к инструкциям надо добавлять ПОЖАЛУЙСТА (PLEASE), команда ПОЖАЛУЙСТА ЗАБУДЬ (PLEASE FORGET) прерывает безусловный переход, а команда ВОЗДЕРЖИСЬ ОТ ПРИПРЯТЫВАНИЯ (DO ABSTAIN FROM STASHING) отключает во всей программе команду ПРИПРЯТАТЬ (STASH)(А уж что делает эта команда! Ууууу... словами такое не передать).

Мозги

...Язык звался BrainFuck (что можно литературно перевести как «Великая Загадка Для Ума, Об Кою Многие Из Мудрейших Сломают Копья») и выглядел так же. Впрочем, в отличие от великолепного INTERCAL’а, BF создавался скорее как «proof-of-concept», нежели чистый стёб. Шутка ли — совершенный, современный, Тьюринг-полный язык (Что такое Тьюринг-полнота и зачем она нужна уважающему себя языку программирования — смотрите в соответствующей врезке. Вкратце — если язык обладает этим свойством, с его помощью можно решить любую вычислительную задачу) — с размером компилятора в 240 байт! Это был технологический прорыв, и даже более того — это было удивительно забавно. Крайнее выражение того, что принято зывать «птичьим языком». BrainFuck-программа составляется из восьми разных символов-инструкций. Вот эдак:

++++++++++[>+++++++>++++++++++>+++>+<
<<<-]>++.>+.+++++++..+++.>++.<<++++++
+++++++++.>.+++.———.————.>+.>.

(Это, вестимо, «Hello world!» на BrainFuck’е.) Главной магией этого странного языка, кажется, стала мысль: «Ёлки зеленые, а ведь и так можно!» Можно — довести любое свойство языка (например, количество инструкций; позже появятся и другие ориентиры для «концептуальных улучшений») до абсурда, до максимума, до планки — а потом отбежать в сторонку и посмотреть, что получилось. Можно — сделать из языка программирования одновременно анекдот и объект поклонения (а еще — новое слово в компьютерной науке, образец для подражания и головоломку почище кубик-рубика). Можно — раздвигать границы разумного: чегой там у нас за границами? Можно — почти всё.

BrainFuck [Справедливости ради, следует заметить, что язык False с компилятором в 1024 байта и престранным синтаксисом появился раньше BrainFuck’а. Впрочем, особой известности он не получил — хотя создатель, Wouter van Oortmerssen, утверждает, что именно False вдохновил и Urban’а Muller’а на BrainFuck, и Chris Pressey на Befunge (речь о котором ниже)] породил семейство продолжтаелей-подражателей-улучшателей, в той или иной мере концептуальных. «Ентузазисты» создали Brainfork (многозадачный), F*ckF*ck (каждая инструкция — неподцензурное словцо со звездочкой)[Отзыв благодарного пользователя: «С тех пор как я начал использовать f*ckf*ck, мне уже не нужно изливать мою агрессию на техсаппорт!»], DoubleFuck (вся сила — в названии); BrainFuck’офилы наплодили среды разработки программ (IDE); BrainFuck’оманы сконструировали BrainFuck-компьютер, в котором восемь инструкций языка выполняются самим процессором...

В последующие годы варианты и эпигоны классического BF расцветали один другого краше и скоро дошли до логического финала — краше было уже некуда (хотя «некуда» казался еще BrainFuck): состоящий из одних пробелов, символов табуляции и перевода строки Whitespace.

Глаза

Крис Пресси (Chris Pressey) — ученый, выведший молодую отрасль на качественно новый уровень: созданный им язык Befunge был двухмерным. Код на Befunge — аккуратненькая решетка 80х25 символов, по которой интерпретатор программы должен перемещаться, следуя символьным стрелочкам (v ^ < >; вверх-вниз-влево-вправо). Вот маленькая программа — генератор случайных чисел:

vv < <
2
^ v<
v13v4
^ ^
> >?> ?>5^
v v
v97v6
v v<
8
. > > ^
^<

Впоследствии Крис признался, что главной его целью было — создать язык, максимально сложный для компиляции; немедленно после создания языка компиляторы Befunge расплодились во множестве. Первый Befunge-93 из-за ограниченности «игрового поля» размерами 80х25 (один экран стандартного терминала) не был Тьюринг-полным (позволял решить лишь ограниченный класс задач); эволюционный процесс и естественный отбор породили стандарт Funge-98, обобщивший принципы для поля любых размеров, а также для языков n-мерных. На данный момент есть три языка, полностью соответствующих этому стандарту: Unefunge, Befunge, Trefunge — соответственно одно-, двух- и трехмерный языки. Клифф Биффл (Cliff L. Biffle) сотворил четырехмерный язык 4DL, «требующий некоторых усилий для визуализации».

Наследниками идеи «программирования стрелочками» стало целое семейство языков под общим названием «фунгеоидов» (fungeoid).

Создание программ на фунгеоидах стало пересечением науки компьютерного программирования с искусством абстрактной живописи; крайним выражением идеи «языка-картинки» стал язык имени датского пионера геометрической абстракции Piet Mondrian. Язык Piet вместо приевшихся символов использует цветовое кодирование выражений и данных; 20 базовых цветов и сложные правила создания цветовых блоков делают Piet-программу великолепным образчиком мирного сосуществования тонкого эстетства и изысканного умствования. Анализ Piet-кода стал гвоздем программы студенческой Охоты За Тайнами («Охота За Тайнами» («Mystery Hunt») — ежегодный развлекательный конкурс задач-головоломок в MIT, традиционно проходящий во время январских каникул) 2002 года.

Helloworld и другие звери

— Муснараа, — промолвил Форд Префект. То было словечко из языка Бетельгейзе, которое он всегда произносил, когда знал, что надо что-то сказать, но не мог придумать что.

Дуглас Адамс, «Путеводитель
Автостопщика по Галактике»


Потаенные (англ. esoteric — они же эзотерические, тайные и понятные лишь посвященным) Языки Программирования испокон веков (1972) создавались для раздвижения границ возможного, удивления себе подобных и почесывания левой пяткой правого уха — только не для того, чтобы писать на них программы.

Сегодня трудно сказать, откуда взялась идея, что «первой программой» на новом языке всенепременно должен быть пресловутый «Hello, world!» Тем не менее, вывод на экран сакраментального приветствия — универсальное начало трудовой деятельности в недружелюбной обстановке. Для эзотерического языка — это почти необходимый минимум. Кстати, есть и исключения: на фунгеоиде BDAMD из-за некоторых технических ограничений максимально возможная программа выведет лишь «HI»; соответствующая программа на var’aq печатает менее дружелюбную фразу «What do you want, universe?» («Че те надо, Вселенная?»), да и ту на Клингонском.

Следующая по сложности программа-тест, с циклами и арифметикой — «99 бутылок пива»: нужно вывести надпись «99 бутылок пива стоят на стене. Одна упала. 98 бутылок пива стоят на стене. Одна упала. 97 бутылок...» Это уже не каждому эзоязыку под силу.

И высший уровень мастерства, требующий немалых усилий даже на «нормальном» языке программировании — так называемый quine. Этот класс программ, названный в честь логика Уилларда Куина (Willard Quine), которые выводят свой собственный текст — от первой и до последней буковки. Решение такой задачи — уже требует специалиста уровня «вах!».
Эта троица тестов породила язык-шутку HQ9+, состоящий всего из четырех инструкций: H выводит «Hello, world!», Q печатает текст самой программы, 9 — 99-бутылочный тест, а + — увеличивает значение внутренней переменной (без всякого умысла — прочитать это значение все равно нельзя). Таким образом, на языке HQ9+ стандартные тестовые задачи выполняются лаконичнее, нежели на любом другом. К слову сказать, существует и современная версия — объектно-ориентированный HQ9++, в котором новая команда ++ создает объект. В соответствии с принципом сокрытия информации, доступ к этому объекту невозможен.

Заметим, что при всей своей прогрессивности HQ9+ не позволяет выполнить еще одну классическую тестовую задачу: написать интерпретатор языка на нем самом (к примеру, язык Lisp известен тем, что его интерпретатор, на нем же и написанный, занимает пятнадцать строк).
 

Мысли

На следующем витке углубления потаенного знания в моду вошла эстетика чистого охренения. На языках той поры писать было невозможно — по определению; они стали крайним проявлением недружелюбности к программисту. Принцип, заявленный еще при разработке INTERCAL’а («чтобы все вас уважали, надо заниматься тем, что никому не понятно») здесь был не просто поставлен во главу угла — возведен в идеал. На переднем крае — язык Malbolge. Такое название для языка программирования [Malbolge, «Злые Щели» (в переводе Державина) — восьмой круг Дантева Ада (Inferno)] его автор Ben Olmstead объясняет безыскусно: «хотелось сделать максимально адский (Infernal) язык из всех возможных». В общем и целом, это вполне удалось: потребовалось всего два года, чтобы создать первую работающую программу на Malbolge (более того, эта программа была не написана собственноручно программистом, а «найдена» специальной исследовательской программой на языке Lisp). Этой первой программой стал классический «Hello world» — вот такой:

(=<`:9876Z4321UT.-Q+*)M’&%$H”!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb’rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<

Стоит заметить, что Malbolge взял очень высокую планку: эзотерические языки программирования стали объектом исследования. «Как написать работающую программу на Malbolge» — это была задачка, об которую очень и очень стоило поломать голову; золотыми буквами в историю языка вписаны имена Энтони Йонаса, опубликовавшего несколько работающих программ, но не раскрывшего секрета их написания, Лу Шеллера, проведшего криптоанализ (sic!) языка, Томаса Вергзановски, создавшего генератор несложных, но работающих программ (…которые в несколько раз больше аналогичных программ Энтони Йонаса, по сию пору хранящего свои секреты)...

Подобно Malbolge, «вещью в себе», то есть объектом, а не инструментом изучения, стали: язык Thue, основанный на исчислении Thue, созданном одноименным норвежским математиком; ALPACA — язык клеточных автоматов (игру «Жизнь» помните? — натуральный клеточный автомат); линейка языков Smetana-SMITH-Muriel. Три последних (за авторством уже известного нам Криса Пресси) замечательны тем, что довольно вычурная идея самомодификации кода положена в основу любого действия: единственный способ управления выполнением (вместо всяких там циклов-условий-переходов) — скопировать свой собственный код «вперед», чтобы он выполнился еще раз. Писать такие программы мучительно неприятно; зато для раздвижения границ сознания концепция Сметаны или Туэ — похлеще диэтиламида лизергиновой кислоты.

Уши

Языкостроители также пробуют себя в наилегчайшем жанре пародии и фарса. Несомненная пальма первенства (вместе с кадкой) здесь принадлежит человеку по имени John Unger Zussman, еще в 1982 году опубликовавшему пародийный список «малоизвестных языков». Каждому из языков была выделена всего пара фраз, в которых с убийственной точностью были обгажены все священные коровы того времени: SIMPLE (Одноцелевой Язык Для Абсолютных Идиотов) — в пику BASIC (Многоцелевому Языку Для Начинающих); C- («язык настолько низкоуровневый, что для любой задачи требует больше инструкций, чем язык машинных кодов») — издевательство над «системным» C; SARTRE («инструкции здесь не имеют смысла, они просто существуют... программисты погружены в депрессию и скуку»), названный в честь экзистенциалиста Сартра, как Pascal — в честь математика Блеза Паскаля; Лишп («примечателен тем, что не имеет буквы «с» и вынужден заменять ее на «ш»... удобен для обработки шпишков»)[В оригинале язык Lithp для обработки lithtth] — толстый намек на странноватый синтаксис Лиспа…

Но на этом развлечения, как можно понять, не закончились — а продолжились и углубились. В жанре чистого фарса возникает язык Whenever, инструкции которого выполняются в случайном порядке, а не в том, в котором записаны («Это программа рано или поздно выведет таки 30 первых чисел Фибоначчи»).

По большому счету, жестокие шутки над модными парадигмами программирования — любимое развлечение доброй половины энтузиастов языкопроизводства; одна из причин такого внимания — дурная привычка «теоретиков от программирования» любую мелкую рекомендацию обзывать малопонятным словом «парадигма». К примеру, отечественная разработка — «Программирование снизу вверх наискосок (свн)» — сокрушительный удар по «структурному», «модульному», «восходящему» и «нисходящему» программированию; а кроме того, неплохо демонстрирует особенности национального характера («Многие западные программисты утверждают, что прежде чем начинать писать программу, необходимо время на обдумывание алгоритма, а некоторые даже призывают вникнуть в суть задачи, которую предстоит решать. Категорически не следует интересоваться постановкой задачи до момента получения готовой программы.»). Когда новое программистское поветрие сделало парией инструкцию goto, а слову «спагетти» придало новый, сугубо негативный смысл («Спагетти-код» — жаргонное название такого способа написания программ, что проще заново переписать, чем разобраться, чего оно там делает) — это поветрие естественным образом принесло с собой языки с говорящими именами: GOTO++ и Spaghetti.

Созданный Минобороны США «максимально безопасный» язык Ada получил антипода — язык paranoid, который, как следует из названия, доводит стремление к «безопасному выполнению» до паранойи. Некоторые его конструкции достойны немедленного цитирования (с синхронным переводом):

//типы данных:
х: сомнительное целое;
а: мало_похоже_на массив [x..y а_может_быть z] каких_нибудь символов;
L: безнадежно_поврежденный список слишком_маленьких целых;
//присвоение значения переменной:
x ТОЧНО 3;
x ЧЕСТНОЕ_СЛОВО 3;
x МАМОЙ_КЛЯНУСЬ 3;
//условия:
ЕСЛИ y ЧТО_ТО_ОКОЛО 8 …
ПРИ_МАЛЕЙШЕМ_ПОДОЗРЕНИИ_ЧТО x < 100…
//вызов процедуры:
СБЕГАЙ_КА_ПОИЩИ имяпроцедуры;

Еда

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

Бронзовая медаль в категории «Почти, Но Не Совсем» достается языку Chef, каждая программа которого обязана выглядеть как рецепт (в идеале — рецепт чего-нибудь съедобного): имена переменных — овощи-фрукты, значения — количество ингредиентов (в граммах, литрах или щепотках); после описания переменных идет тело программы, состоящее из несложных операций, обозначаемых словами «положить в кастрюлю», «перемешать», «подогреть», «подавать на стол». В целом, из-за очень ограниченного количества операций, записать программу в виде рецепта чего-нибудь по-настоящему съедобного тяжеловато.

Серебряная медаль в этой категории принадлежит языку Shakespeare. Название с очевидностью указывает на необходимость записи алгоритма языком шекспировской пьесы: переменные-«актеры» «общаются» друг с другом, присваивая друг другу значения оператором «ты так же красив, как значение» (или «ты так же туп, как значение»); выводят эти значения оператором «открой свою душу!»; переходят между частями программы, сообщая: «Давайте перенесемся в сцену III»

Ну и, наконец, пальму первенства, некоторое время назад выданную господину Zussman, мы у него отберем — дабы вручить ее языку Haifu [Автор языка утверждает, что в названии — неочевидный каламбур: оно звучит почти так же, как Haiku (хокку), при этом на мандаринском диалекте Haifu означает «вижу утку». (А что я, что я? сам удивляюсь!)]. Это великолепно продуманная система написания программ-хокку: пять типов переменных (дерево-вода-огонь-земля-металл) со сложными отношениями между ними (дерево создает огонь, огонь разрушает металл, металл любит землю, земля боится дерева). К сожалению, ни одного «работающего» хокку на этом выдающемся языке до сих пор не создано.

Язык

…Новое направление раздвижения границ разумного: языки программирования, в основе которых — нечеловеческая логика. В конце концов, если мы (человечество) не одиноки во Вселенной, отчего бы не предположить, что и программисты — тоже не одиноки. От этого предположения уже остается один шаг до языка программирования var’aq, который предположительно используется расой Клингонов из культового сериала «Star Trek». Попытка воссоздания этого языка программирования не так анекдотична, как может показаться — ведь лингвистический Klingon Language Institute, занимающийся изучением «повседневного клингонского», существует на полном серьезе — а чем «компьютерный клингонский» хуже? Его воссозданием увлеченно занимается Брайан Коннорс (при поддержке вездесущего эзотерика Криса Пресси).

Кроме var’aq, в природе существуют и другие «нечеловеческие» языки программирования: Ook![«Язык программирования для орангутангов», создателей которого вдохновил орангутанг-библиотекарь из книги Пратчетта (библиотекарь был превращен в орангутанга и так прижился в этом образе, что отказался «разпревращаться», когда возникла такая возможность; единственное слово, которым он владеет — У-ук, «Ook» в английской записи);]  и COW. Первый — все программы: комбинации трех высказываний «Ook?», «Ook!» и «Ook.» Коровий язык COW — по тем же правилам строится из фраз «Moo MOO moO»; оба они — всего лишь разновидности классического BrainFuck’а.

Руки

Честное имя эзотерического языка — элитного знания для посвященных (точнее, для тех, кому не лень потратить на это время) — далеко не всегда используется как категория чистой науки. Я вынужден с прискорбием признать, что это светлое имя иногда навешивают как позорное клеймо на неугодные языки. С другой стороны, и здесь есть повод для оптимизма: настоящие ценители заклейменного языка чаще всего принимают обвинения в эзотеричности как заслуженный комплимент. В разные времена и у разных авторов в эзотеричности обвинялись Perl, C++, PL/I. Большинство современных авторов относят к эзотерическим некогда популярные языки обработки текста APL и SNOBOL. Та же участь постигла некоторые странные диалекты известных языков, например Quake C и микрософтово детище MC++. И, наконец, большинство канонических списков эзотерических языков включает «AvtoKod Ingenera for Minsk family of computers».

Тело

К сожалению, в единственном докладе невозможно охватить всю отрасль(Возможно, конечно. Берем докладчика без чувства самосохранения и…) — мы можем лишь очертить ее границы. За кадром остались отечественный smilescript и зарубежный emoticon (языки, состоящие из одних смайликов); функциональные языки Unlambda, iot и Lazy K; хипповый Beatnik и странноватый []; reMorse — программирование азбукой Морзе, и сотни других. Тема отдельного исследования — эзотерические компьютеры (подобные уже упомянутому BrainFuck-компьютеру), проект эзотерической операционной системы ESO (Справедливости ради, заметим, что в этом последнем самое занимательное — название) и различные варианты компьютеров с единственной инструкцией (OISC/UISC/MISC — One-/Uni-/Minimalistic Instruсtion Set Computer).

Из общеэзотерических стоит отметить еще ресурс Криса Пресси Cat’s Eye (под девизом «Вычисления Должны Быть Интересными»), catseye.mine.nu:8080, «Энциклопедию Идиотских Языков» (Stupid Languages Encyclopedie) Георга Крамла, и сайт Дэвида Моргана Danger Mouse. В конференции alt.lang.intercal обсуждают основные живые эзоязыки: INTECAL, BrainFuck, Befunge и Malbolge — а также и прочие, но существенно реже. И конечно же, любой исследователь не должен забывать о хранилищах мирового разума: Google и Wikipedia.

Спасибо за внимание.

Полный Тьюринг и его смоляная яма

«Нет ничего проще», — говорит Человек
и на бис доказывает, что белое — это черное,
после чего на следующем пешеходном переходе его сбивает машина.

Дуглас Адамс, «Путеводитель
Автостопщика по Галактике»

Понятие «Тьюринг-полноты» ведет свое начало от гипотетической универсальной машины Тьюринга, созданной одноименным математиком. Очень грубо говоря, это бесконечная лента, в каждой ячейке которой находится некоторое значение, и считывающая головка на этой ленте. За один «шаг» машина Тьюринга может сместить головку или прочитать/записать значение ячейки.

Ценность этой маловнятной метафоры в том, что любой современный компьютер по вычислительной мощности эквивалентен машине Тьюринга — то есть может выполнять те (и только те) задачи, что и эта машина. Соответственно, языку программирования достаточно быть «Тьюринг-полным» (эквивалентным той же машине) для создания абсолютно любой программы, возможной на современном компьютере.

Языки с очень маленьким количеством инструкций (BrainFuck’ообразные), как правило, являются прямым воплощением машины — то есть их инструкции это как раз «сместиться вперед», «сместиться назад», «прочитать значение», «записать значение». Сленговое название таких языков — «Turing tar-pit» («Тьюрингова смоляная яма») — пошло от известной фразы «Бойтесь смоляной ямы Тьюринга — где все возможно, но ничего интересного просто не сделаешь». И поистине, создание на BrainFuck’е мало-мальски серьезной программы требует почти нечеловеческого напряжения сил.

Интересные факты из истории: «аналитическая машина» Чарльза Бэббиджа была бы Тьюринг-полной, будь она когда-нибудь создана; Z3 Конрада Цузе была таковой — но доказано это было через много лет после ее создания; первым «сознательно» Тьюринг-полным компьютером стал ENIAC; Тьюринг-полны квантовые компьютеры (а значит, имитируемы на обычных и наоборот). Существует также гипотеза, что Вселенная является Тьюринг-полной системой.

Написать комментарий (комментариев - нет) | Послать другу

Борец с системой

26 февраля на многих Mac-ориентированных сайтах появились первые сообщения о смерти Джефа Раскина (Jef Raskin). Авторы некрологов не скупились на эпитеты, называя Раскина и крупнейшим специалистом по пользовательским интерфейсам, и «отцом Макинтоша».

Не заметил смерти Джефа Раскина только главный «яблочный» сайт — Apple.com. На нем вообще ни разу прямо не упоминается человек, который стал в свое время тридцать первым сотрудником молодой компьютерной компании.

Кто изобрел Макинтош?

С пользовательской точки зрения Mac OS X
погрязла в трясине деталей.

Джеф Раскин

 Равнодушие корпорации к Раскину объясняется сложными отношениями Джефа со Стивом Джобсом и тем очевидным фактом, что Раскин никогда Макинтош не изобретал, хотя и не отказывал себе в удовольствии вспомнить о том, как стоял у истоков главного компьютера Apple. У Макинтоша вообще нет конкретного автора, — если Apple I совершенно определенно является детищем Стива Возняка (Steve Wozniak), то Макинтош разрабатывался несколько лет и является плодом совместного творчества большого коллектива, из которого Раскин ушел за три года до выпуска первой модели Макинтошей.

Однако само название «Макинтош» придумал действительно Джеф Раскин. Вот только его Макинтош разительно отличался от компьютера, выпущенного в 1984 году компанией Apple. Дело в том, что уже в то время Джеф весьма критически относился к современным разработкам в области пользовательских интерфейсов и считал, что хороший компьютер должен быть максимально простым для освоения. Несмотря на то что именно с легкой руки Раскина Джобс ознакомился с технологиями, разработанными в исследовательском центре Xerox в Пало-Альто, сам Джеф относился к GUI скептически и, в частности, активно выступал против использования мыши. Макинтош в исполнении Apple казался Раскину дорогим и функционально перегруженным монстром, тогда как потребителям необходим простой, дешевый и интуитивно понятный компьютер. При этом Джеф, если верить байкам с folklore.org, к праву первенства относился крайне трепетно и при каждом удобном случае напоминал коллегам, что Макинтош изобрел именно он. Когда противоречия стали непреодолимыми, Раскин покинул коллектив разработчиков Мака, вынудив Джобса придумывать для проекта новое кодовое название.

Изобретая велосипед

В основу нового кодового имени была положена метафора, пришедшая Стиву Джобсу во время рекламного интервью для Scientific American. В журнале Джобс сравнивал обычных людей с пешеходами, тогда как пользователи компьютеров освоили по меньшей мере двухколесный транспорт. Таким образом, персональные компьютеры, по Джобсу, являлись «велосипедами для разума».

Недолго думая Род Холт (Rod Holt) и Стив Джобс переименовали проект «Макинтош» в проект «Велосипед» («Bicycle»). Когда разработчики намекнули начальству, что новое название у проекта получилось слегка глуповатым, им было сказано, что кодовое имя у проекта может быть любым, поскольку это всего лишь кодовое имя.

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

Осенью 1982 года Apple обратилась за помощью к маркетологам, но толку от этого было чуть — вариантов названий новых продуктов маркетологи предложили много, однако ничего лучше Макинтоша придумать не смогли. Впрочем, Раскин в проигрыше не остался — путаница с названиями позволила ему впоследствии рассказывать о своей роли в создании Макинтоша, порой ее приукрашивая. Нет никаких сомнений, что Джеф собрал команду талантливых разработчиков и заразил их своим энтузиазмом, но конечный продукт, вышедший из недр корпорации Apple, имеет с компьютером, описанным в раскиновской «Книге Макинтоша» (На самом деле, так называется не книга, а сборник статей и дизайн-документов, посвященных раскиновскому Макинтошу), очень мало общего. И Раскин эппловскому Макинтошу — в лучшем случае дядя.

Вторая попытка

В Canon нашим проектом занималось умирающее подразделение электронных печатных машинок, не сумевшее вывести продукт на рынок, так что теперь эта кошка сдохла.

Джеф Раскин

В 1984 году Раскин решил попробовать реализовать свои идеи еще раз. В Apple его задумки были отвергнуты как бесперспективные с рыночной точки зрения. Теперь же он мог доказать бывшим коллегам, как они ошибались. В основу компьютерной приставки Cat были положены принципы, описанные им еще в «Книге Макинтоша», а именно:

  • Отказ от GUI в пользу усовершенствованной командной строки (или, скорее, клавиатурного интерфейса, потому что большая часть функциональности осуществлялась с помощью комбинаций определенных клавиш).
  • Отказ от разбиения задач по приложениям.
    Пользователь должен работать в едином интерфейсе. Это дело системы — решать, какой модуль подключать в тот или иной момент. Так, например, если пользователь печатает на компьютере текст, значит, необходимо подключать модуль со словарем и функции текстового процессора, а если чуть дальше пользователь пишет формулу — уже нужен вычислительный модуль.
  • Отказ от использования мыши.
  • Мышь, по мнению Раскина, — крайне неудобный и неэффективный элемент компьютерного интерфейса. Вместо мыши Раскин предложил использовать инновационные на тот момент методы работы с клавиатурой, — так, для перехода к нужному фрагменту текста требовалось нажать LEAP-клавишу и набрать необходимое сочетание букв (сходную функциональность обеспечивает поиск в Firefox или поиск по заголовкам в TheBat!).

    Изначально Cat была реализована в виде дополнительной платы к Apple II — SwyftCard. Инвесторы Раскина не могли профинансировать производство полноценного компьютера, и со своим бизнес-планом Джеф обратился в компанию Canon. Через некоторое время на рынке появился новый продукт — Canon Cat, но к большому разочарованию Раскина выпуск новинки продолжался всего полгода и, продав 20 тысяч экземпляров нового устройства, японская компания решила, что возиться с такой мелочевкой не имеет смысла. Потребители не оценили ни простоту интерфейса, ни элегантность решений, предпочтя «кэноновской кошке» более дорогие и сложные в освоении персональные компьютеры.

    До сих пор циркулирует несколько теорий, объясняющих тогдашнее фиаско Раскина (интересно, что ни одна теория не ставит под сомнение ценность его идей). По одной из них Раскин стал жертвой корпоративной грызни — его проект был так привлекателен, что за него внутри корпорации Canon развернулась самая настоящая борьба, и один из руководителей компании просто приказал свернуть перспективное направление, решив, что мир в корпорации важнее возможных прибылей. Есть и другое толкование событий: известно, что в 1987 году корпорация Canon вела переговоры со Стивом Джобсом относительно возможных инвестиций в его новую компанию, NeXT Computers, и якобы одним из условий сотрудничества со стороны Джобса было прекращение выпуска устройств Canon Cat (Версия определенно параноидальная, но Canon действительно купила в 1989 году 16 процентов акций NeXT Computers). Согласно третьей теории ни тайных, ни явных недоброжелателей у Раскина не было — просто Canon неправильно позиционировала Canon Cat, и свернула проект, когда стало ясно, что особых денег он не принесет (Будучи многофункциональным устройством, Canon Cat воспринимался потребителем скорее как продвинутый текстовый процессор, чем как простой для освоения персональный компьютер).

    Нечеловеческое окружение

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

    Джеф Раскин

     Следующим крупным проектом Джефа Раскина стала разработка The Humane Environment (THE). Впервые более-менее полно концепция THE была представлена в книге The Human Interface (в русском переводе «Интерфейс: новые направления в проектировании компьютерных систем», издательство «Символ-пресс», 2003), изданной в 2000 году. Однако несмотря на «инновационность» ничего действительно нового в ней не оказалось. За двадцать лет с момента проектирования первого Макинтоша взгляды Джефа не претерпели значительных изменений. Концепцию, положенную в основу Canon Cat, он по-прежнему считал удачной, а графические интерфейс а-ля Windows — недостаточно интуитивными. И дело, по мнению Раскина, зашло так далеко, что незначительными переделками GUI отделаться уже не получится. Если мы хотим сделать компьютер действительно дружелюбным, нам необходимо отказаться от набивших оскомину рабочих столов, модальных окон, меню, системы сохранения информации в отдельных файлах (кто, в конце концов, способен запомнить, как он назвал нужный файл два или три года назад?). По большому счету, мы должны отказаться от современных интерфейсов вообще. Есть пользователь, есть данные. А все остальное должно быть незаметным. Чем меньше пользователь сталкивается со средствами системы, позволяющими ему манипулировать данными, тем лучше.

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

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

    Ввод команд (SAVE, DELETE и т. д.) осуществляется в любом месте документа. Для того чтобы система поняла, что это команда, а не часть текста, придуманы так называемые командные клавиши. На старых клавиатурах в качестве командной клавиши можно использовать Caps Lock.

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

    Впрочем, вполне можно дать слово самому Джефу Раскину:

     Canon Cat«В современных системах вся работа производится в так называемых приложениях, которые являются наборами команд, подходящих для объектов определенного рода… Сама идея приложения — искусственная, и удобна для программиста, а не для конечного пользователя. С пользовательской колокольни есть лишь контент (набор объектов, созданных пользователем или доступных ему) и команды для операций с контентом. Эти команды обязаны быть независимы от приложений и универсальны для любого объекта в любое время. В формальных системах одно и то же действие пользователя в разных условиях может вызвать разные команды, или вообще не вызвать ни одной (В общем, очевидно, что в разных приложениях (контекстах) клавиатурные сокращения, например, могут означать совершенно разные вещи). Если команда, примененная к объекту, не имеет смысла, следовательно объект должен быть автоматически переведен в форму, когда команда обретает смысл. К примеру, проверка правописания во входящем факсе (При всем уважении к Раскину пример явно так себе — зачем, простите, проверять правописание во входящем факсе?) сначала запускает программу распознавания текста для перевода оригинального битмапа в текст. Если же ничего сделать нельзя, система ничего и не делает».

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

    «Проблемы компьютерной навигации и ограниченного размера дисплея могут быть одновременно решены с помощью парадигмы видеокамеры, когда пользователь может увеличивать и уменьшать масштаб, «летая» над вселенной объектов. Объекты (документы, изображения, игры — в общем, все, что может иметь визуальную репрезентацию) сгруппированы в наглядные группы и кластеры, отличающиеся друг от друга формой, цветом или местоположением (к примеру, адресную книгу мы можем поместить в верхнем левом углу нашего мира). Уменьшение масштаба приведет к тому, что мы выйдем за пределы нашего компьютера и увидим локальную сеть, а если взлететь еще выше, то нашему взору предстанет веб».

    Все это вместе — и есть концепция The Humane Environment, придуманная Джефом Раскиным для того, чтобы облегчить жизнь простого юзера. Наглядный, простой и более эффективный по сравнению с нынешними GUI интерфейс для работы с компьютером.

    Арчи

    Приложения как таковые нужны компаниям типа Adobe. Им по душе торговать все более и более специализированными программами.

    Джеф Раскин

     Сама идея приложения — искусственная, и удобна для программиста, а не для конечного пользователя. Джеф РаскинДжеф организовал Центр Раскина по созданию Humane Interface (Raskin Center for Humane Interface, RCHI), в котором и началось создание THE. Поскольку и денег, и людей у Раскина было очень немного, а сам проект, обжегшись на молоке, он рассматривал как некоммерческий, то разработку решили вести поэтапно, а звезды с неба хватать по мере продвижения. Так, THE превратился в open-source-проект, разработку которого возглавил подросший сын Джефа — Аза (Aza Raskin).

    THE, по задумке Раскина, должен был стать не новым компьютером, а надстройкой над современными операционными системами, которая приведет их в надлежащий вид. Отсюда — требование к мультиплатформности и, как следствие, выбор средства разработки: прототип THE написан на Python.

    К сожалению, этот выбор — при всей любви Раскина к простоте — привел к тому, что жаждущие простоты пользователи посмотреть на THE просто не смогут. Для запуска THE требуется скачать и установить четыре программных пакета (в их числе сам Python и CVS-менеджер для загрузки собственно THE) плюс вручную заменить одну dll на другую. Поэтому о простоте разработчики говорят все меньше и меньше, а все больше об эффективности — отдуваться за стандартные GUI опять пришлось манипулятору типа «мышь» (по утверждениям разработчиков «клавиатурный подход» на 40 процентов эффективнее мышиного).

    Сам THE (переименованный в начале января 2005 года в Archie — от RCHI) при ближайшем знакомстве разочаровывает. В настоящее время концепции Раскина реализованы в рамках текстового редактора, причем реализованы далеко не полностью: собственно, сегодня Archie может похвастаться только поддержкой LEAP-клавиш, расширенной функциональностью (встроенные команды для написания e-mail или перехода в веб) и командной клавишей на базе Caps Lock. Любая ошибка прерывает исполнение программы. ZUI нет вообще (впрочем, какая-то реализация его уже существует, но в свободном доступе ее нет [С сайта центра Раскина можно загрузить флэш-демонстрацию возможностей зум-интерфейса]). И поверьте, что юзабилити у любого современного редактора (О GUI и разговора нет — Archie просто пока слишком слаб, чтобы тягаться с интерфейсами операционных систем) выше на порядки. Впрочем, каждый, кому не жалко системный реестр, может попробовать поработать с новой парадигмой самостоятельно, запустив Archie на своей машине.

    Скорее теоретические изыскания Раскина, нежели его практические опыты, позволили в 2005 году Центру Раскина получить 2 млн. долларов от венчурных инвесторов на дальнейшее развитие проекта. Пока Джеф был жив, планировалось полностью завершить проект за пять лет. Сколько времени это займет сейчас — неизвестно, хотя Аза Раскин явно увлечен идеями отца и Archie остался в хороших руках.

    Самое забавное в этом то, что многие идеи Джефа Раскина в урезанном виде оказались все же восприняты индустрией. Явно в направлении THE движутся пакеты Microsoft Office (собственно, любая интеграция разных пакетов созвучна идеям Раскина). Джефа бы это сравнение наверняка возмутило, но мы действительно не думаем о том, какое приложение запускаем, открывая файл в формате .doc — редактор запускается автоматически (Еще более сильным примером является, наверное, панель Microsoft Office. Впрочем, это уже очень на любителя). Явно читали Раскина создатели Gmail, экспериментирует с GUI Sun… Список компаний, которые учли критику Раскина и попытались решить проблемы эволюционными методами, можно продолжать и продолжать.

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

    Написать комментарий (комментариев - нет) | Послать другу
    /  бумажный номер

    Тема номера: Кризис в ИТ Читайте на сайте тему номера "Кризис в ИТ" и другие статьи из журнала "Компьютерра" от 04 ноября 2008 года
      Архив номеров журнала

    О проекте | Реклама на сайте | Рассылки сайта | КПК–версия | RSS-трансляция

    © ООО «Компьютерра–Онлайн», 1997 — 2008.
    При цитировании и использовании любых материалов ссылка на портал «Компьютерра–Онлайн» обязательна (для Интернет–изданий — www.computerra.ru)
    Редакция сайта: site@computerra.ru
    Техподдержка сайта: websupport@computerra.ru
    Редакция журнала: inform@computerra.ru
    Отдел рекламы: reklama@computerra.ru
    Телефон: (495) 232–22–61, (495) 232–22–63
    Работает на «Битрикс: Управление сайтом»
    Почта защищена сервером «СПАМОРЕЗ»
    Трилан — продвижение сайта,
    поисковая оптимизация сайта

    Сайт работает на сервере DEPO Computers
    Rambler's Top100