В своё время исследовательский центр Microsoft Research пользовался покровительством Гейтса, а вот под Балмером исследователям, кажется, не очень уютно. Известно, что маркетинг и продажи волнуют нового главу компании куда сильнее, чем всякие научные штучки. Проектам, которыми занимаются в Microsoft Research, теперь редко дают ход.
Показательна история, произошедшая с любопытным игровым конструктором Kodu, который разработали в Microsoft Research. Он был выпущен без рекламной шумихи (хотя её вполне достоин), да и поддержка продукта организована кое-как. В старом Microsoft такую разработку не упустили бы - по духу Kodu Game Lab очень близок к Basic - любимому детищу Билла Гейтса.
Впрочем, Kodu ещё повезло: он сумел выбраться на свет божий из секретных лабораторий. Планшету Courier, к примеру, это не удалось, а о многих проектах никто за пределами Microsoft даже и не знает. Такое прохладное отношение к Microsoft Research не сулит подразделению ничего хорошего.
Карманная революция
На всех направлениях Microsoft угрожает одна и та же беда, которая называется Google. Суть проблемы проста: в отличие от Microsoft, зарабатывающего на продаже Windows и Office, Google раздаёт альтернативные продукты бесплатно, субсидируя их за счёт рекламы в результатах поиска. Конкурировать с бесплатным трудно само по себе, но это лишь начало. Если бесплатные решения займут заметную долю рынка, это усугубит проблему: как отмечает автор блога Daring Fireball Джон Грубер, не будучи вездесущими, платформы Microsoft резко теряют актуальность.
В подобный сценарий было бы трудно поверить, если бы он не разворачивался прямо перед нами на рынке мобильных ОС. Google Android агрессивно и не без успеха пытается занять то самое место вездесущей платформы, которое традиционно принадлежало Windows (Apple по обыкновению спасается тем, что продаёт дорогие устройства собственного производства). Хоть Android и не приносит денег Google, сам факт его существования может сильно навредить Microsoft.
В результате корпорация оказывается в патовой ситуации. Конкурировать с бесплатным Android - бесполезно, делать свои телефоны - не получается, оставаться же совсем без мобильного решения - глупо и недальновидно.
Очевидно, первое, что нужно сделать, - это объединить все разрозненные проекты по разработке мобильных ОС во что-то более или менее цельное. Оставить, наконец, в покое Windows Mobile и вложить все ресурсы в WinPhone 7. Причём все - это значит все, включая Courier, который, похоже, вернули обратно в Research (выбраться из которого, как мы знаем, непросто).
Консолидация усилий при этом не должна обязательно означать, что придётся ограничиваться одной версией ОС или одним устройством. Планшеты, телефоны, плееры, фоторамки, навигаторы и любые другие гаджеты могут иметь разные модификации системы. Важно только, чтобы работа над ними не была столь безудержно хаотичной и рассинхронизированной, как в последнее время.
Тем не менее, придётся с чего-то начинать - хотя бы с одной ОС и одного устройства. И то, и другое просто обязано стать хорошим и успешным, иначе - пиши пропало. Можно, к примеру, попытаться занять сегмент дешёвых телефонов. Собственно, это была готова сделать команда, работавшая над провальным Microsoft Kin. К сожалению, проект погубили внутренние разногласия и сотовый оператор Verizon, вдруг решивший отменить выгодный тариф, придуманный для Kin.
Имея хороший и дешёвый телефон нового поколения, вполне возможно конкурировать с Apple и Google. В модельной линейке iPhone пока что нет дешёвых моделей, а Android на недорогих телефонах просто не заработает. В итоге в США эти телефоны продаются лишь с дорогостоящим контрактом, который могут себе позволить далеко не все.
Вторая возможность - распространение операционной системы на условиях, сопоставимых с предлагаемыми Google. К примеру, можно попытаться раздавать ОС разработчикам устройств бесплатно или очень дёшево, зарабатывая на подписных сервисах (впрочем, они у Google тоже бесплатные, а это сильно портит всю задумку).
В конце концов, можно удержаться за счёт корпоративных клиентов и потеснить на этом рынке RIM, продающий сверхпопулярный у бизнесменов смартфон Blackberry. Ведь именно с большими компаниями Microsoft работается лучше всего. Главное, не пытаться и дальше предлагать здесь устаревший Windows Mobile. Такому служебному телефону всё больше сотрудников будет предпочитать купленный на собственные деньги iPhone.
Не только персональные компьютеры
Цены на электронику быстро идут вниз, и модель "один компьютер на семью" незаметно превратилась в модель "компьютер на человека", а теперь переходит и этот барьер - используя сразу несколько специализированных устройств, чувствуешь ещё больший комфорт.
В эпоху планшетов, умных телефонов и телевизоров роль классического персонального компьютера с его традиционной клавиатурой и оконным интерфейсом на большом экране потихоньку уменьшается. Может ли Microsoft предложить что-то актуальное в изменившихся условиях?
Может, и даже предлагает. Речь идёт об игровой приставке Microsoft Xbox 360 и модуле распознавания жестов и речи Kinect. Xbox 360 - одна из немногих удач Microsoft за последнее десятилетие, и вкупе с Kinect он может стать тем "центром домашних развлечений", которым не стал Windows Media Center.
Проблемы здесь если и есть, то относятся они в первую очередь к маркетингу и продвижению. Microsoft продаёт Xbox 360 как игровую приставку, а сервисы вроде аренды фильмов через Netflix подаются лишь как этакое ценное дополнение, да и доступны лишь части потенциальных пользователей.
Платформе Google TV, которая метит именно в эту нишу, ничто не мешает воспользоваться шансом, который в Microsoft игнорируют. Если же Google TV станет популярной системой для телеприставок - своего рода телевизионным "Андроидом", - она способна превратиться в опасного конкурента для Xbox 360, ведь от медиаконтента до видеоигр - один шаг.
Чтобы подготовиться, Microsoft придётся придумать, как сделать платформу Xbox/Kinect более массовой. Это непросто, но куда полезнее, чем продолжать навязывать неудачные медиацентры на основе Windows.
Веб
Если в других областях Google лишь угрожает бизнесам Microsoft, то интернет - это его территория, а Microsoft здесь - на правах бедного родственника. Что же есть у Microsoft? В первую очередь - Live, Hotmail, Messenger и Bing. Затем - экспериментальный Docs.com. От отдельного Hotmail, пожалуй, давно пора избавиться - если он с чем-то и ассоциируется у пользователей, то в основном со старыми "заспамленными" почтовыми ящиками. Live уже вполне готов его заменить.
Не объединить ли все проекты в один большой портал? Bing, Live и Docs (то есть, грубо говоря, поиск, почта и веб-офис) прекрасно будут себя чувствовать и по отдельности. Нужно только довести сервисы до такого уровня, чтобы им перестали ставить в пример аналогичные решения Google. Если с поиском это не так просто, то сделать хорошую почту и пакет для работы с документами Microsoft вполне под силу. Главное - не бояться конкурировать с собственными коробочными продуктами и придумать жизнеспособную бизнес-модель. Комбинация рекламы и подписки должна вернуть хотя бы часть денег, вкладываемых в разработку и продвижение.
Однако конкуренция с Google на его поле - не самое приятное занятие. Microsoft всегда была компанией, которая делает софт, да и появление веб-сервисов здесь предвидели заранее. Возможно, хорошей стратегией было бы вернуться к созданию разнообразных сервисов - таких, которые смогут восстановить пошатнувшуюся репутацию создателей хорошего софта. Только не нужно для этого покупать готовые разработки, чтобы тут же их загубить. У инженеров Microsoft в голове наверняка не меньше идей, чем у сотрудников Google, в узаконенные двадцать процентов личного времени клепающих всякие занятные штуки. Если дать этим идеям немного свободы, они наверняка превратятся во что-нибудь интересное.
Средства разработки
При Гейтсе в Microsoft была выпестована прекрасная культура программирования, благодаря которой компании до сих пор удаётся одной левой создавать операционные системы и средства разработки. Эти возможности всегда ограничивал медлительный менеджмент, но, тем не менее, компанию, способную разработать нечто масштабов .NET или взять и превратить его в Silverlight, недооценивать нельзя.
В злосчастный период пассивности в Microsoft не решились заставить всех разработчиков перейти на .NET, а промедление может в один прекрасный день обернуться тем, что переход станет уже неактуальным - изменятся нужды и появится что-то поновее. То же и с другими инновациями - не стоит задерживать их, мотивируя промедление нуждами корпоративных клиентов. Если не подталкивать тех на апгрейды, то вся машина производства софта начнёт буксовать.
На одной поддержке Windows Server, SQL Server, Sharepoint и прочих серверных решений и серьёзных средств разработки Microsoft может протянуть ещё долго, даже не гоняясь за революционными идеями. Однако это и может всё погубить - выгода выгодой, но и о будущем нужно заботиться.
Что до попыток захватить рынок кластеров и суперкомпьютеров, здесь, похоже, Microsoft как ничего не светило, так и не светит. Всё плотно занято решениями на юникс-системах, и двигаться в сторону Windows никто не собирается. Исключением может стать нижний ценовой диапазон высокопроизводительных компьютеров, но здесь упор, скорее, стоит делать на облачные вычисления и Azure, чем на HPC.
То же в некоторой степени касается и веб-серверов: скорость развёртывания и масштабируемость "облачных" решений во многих случаях оказывается важнее, чем возможность иметь веб-сервер в своём распоряжении. Важным шагом стало бы построение более высокоуровневой платформы, чем Azure - не всем разработчикам хочется заниматься управлением виртуальными машинами. Многим нужны решения уровня Google App Engine, где достаточно опубликовать исходный код, и он заработает. Впрочем, компании, не доверяющие "облакам" наверняка останутся, и совсем отказаться от Internet Information Server как отдельной сущности вряд ли получится, каким бы удобным, высокоуровневым и хорошим ни стал Azure.
Windows и Office тоже в беде
Можно подумать, что уж флагманские продукты можно просто оставить в покое, пока они приносят корпорации основные деньги. Однако именно это и делает бездействие рискованным - начни клиенты выбирать конкурирующие решения, и под угрозой окажется вообще весь бизнес. Финансировать следующий Xbox, Bing или Windows Phone окажется нечем.
Что же может угрожать Windows и Office? Иногда кажется, что корпоративные клиенты отказаться от них не смогут уже никогда. Слишком много закуплено компьютеров с Windows, а основная масса документов создана в офисных программах Microsoft. Любой изъян в совместимости влетит ренегатам в копеечку.
Но что, если новые решения помогут серьёзно сэкономить? Вряд ли заказчики откажутся их рассмотреть. Сейчас самое слабое место Windows - это стоимость её поддержки. Если Google Chrome OS и Google Docs смогут справиться с заметной долей офисной работы, наверняка найдутся желающие перейти на них. Ведь стоимость владения сразу упадёт в разы.
Веб-сервисы легко обновлять, они не ломаются и изначально рассчитаны на работу в Сети. Организация коллаборативных возможностей здесь не требует установки и настройки собственного сервера. Ситуация вполне может стать похожей на то, что сейчас происходит с Windows Mobile и Android. То есть безраздельное правление Windows обернётся кровопролитной борьбой с медленно, но верно продвигающимся агрессором, доходы которого не зависят от победы или поражения на этом фронте.
Разделим Windows натрое
Идею офисного решения можно позаимствовать у Apple - платформа iOS, использующаяся в iPhone и iPad - это как раз то, что нужно, чтобы сократить стоимость поддержки. Для iOS нет вирусов, зависает она в разы реже своих "десктопных" собратьев, а для установки пиратского софта нужно взламывать всю систему. Возможно всё это благодаря жёстким ограничением, в том числе - запрету на установку программ не из фирменного магазина.
Строить систему на том же принципе обособленных приложений, что применяется в iOS вовсе не обязательно. Здесь отлично подошло бы решение, предложенное автором оригинальной версии Macintosh Джефом Раскиным в его книге "Интерфейс". Раскин предлагал избавиться от понятия "программа", создать единое рабочее пространство, а возможности добавлять лишь в качестве компонентов. По сути, панели Ribbon и Visual Basic for Applications (или VSTO) позволяют в какой-то мере делать то же самое. Осталось лишь избавиться от разделения на приложения и добавить компонентный репозиторий со строгой модерацией.
В итоге получается три версии Windows. Назовём их Windows Office (со включёнными возможностями Microsoft Office, повышенной безопасностью и без возможностей для копания в системе); Windows Professional (в него можно включить, скажем, и Visual Studio и прочий софт для разработчиков); и Windows Home - домашняя версия, которая будет востребована для тех задач, под которые сложно приспособить Xbox/Kinect.
Home имеет смысл делать похожим на версию Office - многим людям нравится иметь дома компьютер, похожий на тот, что установлен на работе, да и защита от вирусов и "от дурака" не помешает. Но функций здесь нужно побольше - понадобятся как минимум любительские инструменты для работы с видео, звуком и фотографиями, всяческие плееры и т.п.
В этом придуманном разделении Windows не хватает лишь одного продукта - того, который угодил бы людям, любящим мастерить что-то не ради выгоды, а из любви к искусству. Именно для них в своё время был сделан Basic, а вот в мире закрытых со всех сторон плееров, телеприставок и планшетов этим людям придётся несладко.
Возможно, Microsoft не стоит отпускать этих энтузиастов копаться в GNU/Linux и Android - это именно то сообщество, которое способно создавать что-то новое и вести за собой остальных. Нужные наработки у Microsoft уже есть - XNA, тот же Kodu, Robotics Studio и так далее. Возможно, есть смысл объединить это в какой-то особый продукт или даже продавать свои конструкторы в духе Lego NXT и Arduino, совместимые и с Windows и с Xbox и с мобильными решениями.
Итоги?
В результате у нас получилось четыре стройных направления: домашние устройства и периферия (Xbox, игрушки, роботы и прочее), офисные решения, рабочие станции плюс средства разработки, мобильные компьютеры, веб-сервисы. Все они в той или иной мере близки Microsoft и все будут актуальны в ближайшем будущем. Что до отдалённого, то здесь, наверное, ставку стоит делать на сетевые и облачные решения - именно они станут связующим звеном между всеми перечисленными пунктами.
Надо сказать, что предложенный подход ещё очень мягок, и в Microsoft пока что могут себе его позволить. Чем дальше, тем больше потребуется жертв, чтобы спасти главное.
Идентификация, абстрагирование, смысл
Автор: Юрий Гуськов
Интернет - это большая свалка информации. Впрочем, не без попыток отсортировать и упорядочить. Но даже самые успешные сортироворочные машины на простейшие запросы вываливают на вас миллион ссылок (что, по видимому, должно считаться символом успешности сортировки, как если бы вы попали в библиотеку, а вам сказали: "да, у нас есть миллион книжек на эту тему, поищите там..."). Что ж, приходится полагаться на собственные умения и досортировывать то, что уже предложено. Вполне естественно, что обычно мы ограничиваемся сортировкой десятка, максимум, сотни ссылок, если ничего не находим - поиск можно считать провалившимся. Конечно, сортировочные машины проделывают огромную работу: по расчетам, на данный момент, в Интернете существует около 1 триллиона (10 в 16 степени) уникальных страниц, запросы на общие слова обычно дают около сотни миллионов страниц (10 в 8 степени), на менее общие мы уже получаем десятки миллионов, и так далее. Но ведь, в реальной жизни, поиск должен давать от десятка-сотни до одной ссылки. Например, на запрос "чемпион мира по футболу 2010 года" существует ровно один ответ, на запрос "кошки", наверное, все же ожидается ответ с сайтами и страницами, посвященным только им, а не все ссылки, где они так или иначе упоминаются. Поэтому неудивительно, что современные поисковики пытаются угадать то, что вам нужно, предложить лучшую фильтрацию, полагаются на человеческую досортировку, логично полагая, что уж люди лучше разберутся в информационном хламе.
А ведь вначале о подобных проблемах никто и не думал. Первые компьютеры были весьма неудобны в использовании (относительно современных, конечно), поэтому информация накапливалась очень медленно. Но, к счастью или сожалению, прогресс не стоял на месте. Появился текстовый интерфейс, операционные системы, высокоуровневые языки программирования, форматы данных, графический интерфейс, Интернет, наконец. Каждое из последующих нововведений (не считая прогресса аппаратного обеспечения) облегчало ввод и обработку информации, что вело к росту ее объемов и затрудняло поиск. С появлением Интернета ситуация еще больше усугубилась: покуда компьютеры не были связаны в единую сеть не каждый находил удовольствие в выплескивании своих мыслей и эмоций на жесткий диск, но появление тысяч и даже миллионов благодарных (а пусть даже и неблагодарных) читателей, стало спусковым крючком для экспоненциального роста информации.
Можно ли решить проблему больших объемов информации? Кое-кто полагает, что решение в коллаборации и разного рода социальных сетях, а также Семантическом Вебе (который, хотя и акцентируется на интеллектуальных агентах и приложениях, но тоже подразумевает своего рода социальную сеть). Однако существует, по крайней мере, две проблемы. (1) Информация, когда создается и публикуется, уже должна быть упорядочена. Возникает вопрос, есть ли гарантия, что сторонние люди упорядочат ее лучше, чем ее создатели? (2) Порой коллаборация вместо упорядочивания информации создает еще больший объем информации, которую в свою очередь, тоже надо упорядочивать. (3) Часто упорядочивание требует эксперта, что порой просто невозможно. Другие перспективные направления включают (но не ограничены только этими): виртуальная реальность, дополненная реальность, 3-мерный интерфейс, распознавание образов и языка. Некоторые из них еще недостаточно развиты, другие же весьма эффектны эстетически, но не так полезны практически. Раз так, то давайте попробуем взглянуть на проблему с другой стороны: а можно ли вообще понять, что хотя бы теоретически могло бы решить эту проблему? Для начала можно посмотреть на революции прошлого и попробовать понять, почему то или иное изобретение оказалось прорывом.
* Текстовый (консольный) интерфейс. Возник, т.к. человеку было необходимо общаться с компьютером на понятном языке. Для подобного общения были неоходимы два условия: возможность идентифицировать ту или иную компьютерную сущность (например, диск или операцию копирования) и возможность абстрагирования (т.е. выражения множества действий или объектов при помощи одного идентификатора). Как побочный эффект: возможность переиспользования уже имеющихся идентификаторов. Долгое время проводились попытки использовать естественный язык для этих же целей, но они провалились не только из-за того, что анализ полного набора грамматических конструкций затруднен (хотя анализ упрощенного подмножества вполне реален), но также из-за того, что для оперирования компьютерными сущностями лучше подходит специальный язык. Ведь, любая область человеческой деятельности рано или поздно приходит либо к своему жаргону (арго), либо к специфическому абстрактному языку (как в математике), которые лучше абстрагируют объекты и действия этой области.
* Высокоуровневые языки программирования, программные интерфейсы, форматы данных. По сути, ситуация такая же как и с текстовым интерфейсом, но с большими возможностями (которые заключается в наборе дополнительных абстракций, помогающих компоновать гораздо более сложные решения). Форматы данных, по сути, являются абстрактным языком (что неявно в двоичном виде, но явно в текстовом) для упорядочивания и ограничения информации.
* Операционная система. Среда, помогающая программному обеспечению и пользователю использовать аппаратное обеспечение. По сути же, предоставляет слой абстракции, который скрывает низкоуровневые сущности аппаратного обеспечения, а также позволяет программному обеспечению выстраивать свой слой абстракции, предоставляя набор сущностей, понятных пользователю.
* Файловая система. Предоставляет атомарный элемент хранения информации (файл) и иерархию каталогов, для упорядочивания файлов. Содержимое файла, теоретически, должно абстрагироваться в его имя и атрибуты (хотя их набор ограничен). Списки файлов, опять же теоретически, должны абстрагироваться (отображаться) в имя каталога. На практике же, принципы абстрагирования часто нарушаются, так имена файлов превращаются в бессмысленный набор символов, а каталог выбирается произвольным образом. Более того, информация о каталоге (которая теоретически должна классифицировать файл) теряется при копировании файла. Содержимое файлов часто спрятано обслуживающим приложением, поэтому информация внутри файла не может переиспользоваться (если это не предусмотрено в соответствующем приложении).
* Приложения. Являются слоем абстракции между операционной системой и пользователем. Предоставляют детерминированный набор действий на предопределенные реакции пользователя. Кодируют первоначальный смысл (то, как систему видят пользователи) в виде абстракций (сначала архитекторами, а потом и разработчиками), чтобы в итоге декодировать абстракции в смысл, понятный пользователем (естественно, во многих случаях, уже хоть немного, но искаженный, т.к. смысл проходит через несколько преобразований).
* Графический интерфейс. Его преимущества связаны не только с тем, что человек лучше воспринимают информацию визуально (человек быстрее обрабатывает пространственные абстракции, чем логические или языковые, к тому же само абстрагирование возможно является порождением именно визуального восприятия информации). Не менее важно и то, что он явно предоставляет и ограничивает информацию (т.е. вы видите все команды сразу, а не вспоминаете их, а их возможные значения ограничены в списке и т.п.) и связывает ее (одному элементу соответствуют другие элементы информации или действия, например, связь между объектом и действиями, предоставляемыми в меню). Однако, при большом количестве элементов мы опять возвращаемся к необходимости использования поддержки естественного языка (в виде руководств и т.п.). К тому же, что часть элементов приходится скрывать, упорядочивая их в иерархии (меню, деревья, вложенные окна и т.п.), при этом мы ограничиваем контекст, что хорошо для понимания отдельной области, но при этом же, многие уровни вложенности так хорошо скрывают возможности приложения, что ими редко, кто пользуется, а иногда и с трудом находит. Наконец, еще одна проблема заключается в том, что элементы графического интерфейса и данные связаны неявно (для пользователя), что не позволяет переиспользовать подобный интерфейс (т.е. ссылаться на элементы GUI). При всех преимуществах, графический интерфейс всегда поддерживается натуральным языком: в корне проблемы лежит тот факт, что визуальные элементы программы не всегда интуитивно понятны, в то время как естественному языку люди обучаются в течении десятилетий. Собственно говоря, иконки ничем не отличаются от букв (которые тоже являются иконками), но при необходимости компоновки сложных действий - это проще будет сделать при помощи естественного языка (в виде инструкции), либо при помощи абстрактного языка скриптов, а не переиспользуя графический интерфейс. В целом, хотя графический интерфейс и очень эффективен, но он не может представить любую информацию (например, звук), поэтому универсальным может быть только символьный интерфейс.
* Интернет. Его достоинства заключаются в неразрывном сплетении двух факторов: объединение компьютеров в глобальную сеть и объединение информации внутри гипертекста (который представляет собой контейнер, объединяющий текст и другие медии). Оба эти фактора по раздельности не могли совершить революцию: представьте себе Интернет, в котором нет гипертекста, а есть один ftp протокол, или же, наоборот, существует прогрессивный формат, позволяющий переходить из текста в текст, но в рамках вашего жесткого диска. Естественно, что одно вытекало из другого и появление глобальной сети послужило спусковым крючком для появления всего набора Интернет технологий.
* Гипертекст, Веб, Веб 2.0, доменная система. В свою очередь, представляет собой симбиоз трех факторов: связывания ресурсов (различных репрезентаций информации), форматирования данных и разного рода динамика: клиентская (ДжаваСкрипт, плагины) и серверная (формы, элементы графического интерфейса) ресурсов. Впоследствии, серьезное внимание было уделено форматированию и динамическим возможностя, поэтому были упущены недостатки связывания. А именно, гипертекстовое связывание позволяет реализовать ссылку только один-к-одному, и наибольший смысл имеет только тогда, когда мы ссылаемся на уникальный ресурс (или оригинал) или же ссылаемся на часть общего целого (как, например, один сайт). Если же мы ссылаемся на произвольный ресурс произвольного сайта (например, новость на определенном новостном ресурсе, хотя она продублирована на множестве других), то такая ссылка становится ограниченной и субъективной. Веб 2.0 представляет собой развитие динамической составляющей ресурсов, добавляя больше возможностей графического интерфейса со стороны клиента. Доменная система является аналогом "файловой системы" Интернета, где домен и его компоненты должны (теоретически) идентифицировать провайдера информации. Практически же, домены в виде идентификаторов часто неправильно (намеренно или нет) используются (как и имена файлов), что поощряет коррупцию вокруг доменных имен.
* Персональные страницы, электронная почта, чаты, мгновенный обмен сообщениями, блоги, микроблоги, социальные сети, комментирование, коллаборейшн сайты. Интернет стал спусковым крючком для роста накопленной информации. В пре-Интернет эпоху никому и не приходило в голову создавать документ с описанием себя любимого (кроме резюме) и распространять его каким-либо способом (здесь мы тоже видим сплетение двух неразрывных факторов: публикование персональной информации и ее распространение). Вначале, модным словом стало "персональная страница", с появлением блогов необходимость в персональных страницах постепенно отпадает, так как блоги предоставляют почти те же возможности, при меньших затратах на дизайн и поддержку, к тому же сочетая в себе возможности обмена сообщениями, но с возможностью сохранения и всемирной доступности (микроблоги являются еще более упрощенным развитием той же линии). В дополнении к этому многие сайты сейчас предоставляют системы комментирования своих ресурсов, что для некоторых постоянных посетителей является эдакой разновидностью микроблога (часто комментарии постоянных посетителей могут уклоняться от темы ресурса и становиться микроблогом). Тоже самое касается и социальных сетей. Коллаборейшн сайты, в отличие от социальных систем обмена субъективной информацией, предназначены для обмена объективной информации, в идеале, роль личности должна быть сведена к нулю. При всех недостатках, Википедия стала де-факто стандартом для справки о том или ином предмете.
* Порталы, поисковые системы. Первоначально именно порталы представлялись решением, которое позволит упорядочить информацию в Интернете. Но они обладали и определенными недостатками: (а) любая иерархия знаний частично субъективна, поэтому не всегда очевидно какой путь иерархии выбрать, чтобы найти нужный предмет, (б) любая иерархия вместе с упорядочиванием, посредством разбиения на ветви, также и скрывает информацию в этих ветвях, (в) использовалось ручное обновление каталога, хотя при этом многие порталы предоставляли эту возможность любому, что роднило их с коллаборейшн сайтами. На порталах был даже поиск по содержимому портала, но появление поисковых систем нанесло серьезный удар по их позициям, так как их поисковая строка была точкой входа (кстати, подобно консоли операционной системы) для любой информации в Интернете, причем постоянно обновляемой. Разумеется, как и любое творение человека, поисковые системы имеют и свои недостатки. Главный из которых, является, одновременно их достоинством: это представление всего массива данных Интернета в виде большой "плоской" базы данных. Точно также можно представлять весь наш мир, все континенты, города, людей, животных в виде "плоской" базы данных атомов. Конечно же, такое представление частично абсурдно (т.к. имеет значение в какие структуры эти атомы собираются). И создатели поисковых систем прекрасно это понимают, предоставляя дополнительные средства, как то: релевантность/ранжирование слов/запросов, коллаборейшн средства для повышения релевантности поиска, и т.п. Поисковая система достигает максимума продуктивности только в случае, когда слово или словосочетание полностью соответствует смыслу, скрывающемуся за ним.
* XML, Семантический Веб. Идея связывания всего и представления в одном универсальном формате лежала еще в основе HTML, а если копнуть еще глубже, то и в SGML (если уж копать дальше и дальше - идея-то прорабатывалась еще философами за много столетий до того как). XML подошел к проблеме ближе, так как, по крайней мере, был достигнут консенсус по поводу универсального формата. Однако, не хватало смысла. Семантический Веб добавил немного смысла, и стал потенциальным кандидатом на новую революцию, но он обладает и определенными недостатками. Главное - это то, что он ориентирован на обработку "интеллектуальными агентами", а не простыми пользователями. И обработку, в основном, данных, причем, данных упорядоченных. К тому же, формат тройки "субъект-предикат-объект" заставляет сомневаться в целесообразности абстрагирования всего при его помощи. Никто не подвергает сомнению факт, что всё можно втиснуть в подобный формат, но будет ли являтся это целесообразным? Этот принцип аналогичен конструкциям естественного языка, где подобные тройки выступают как символ дуальности пространства-времени и выражение факта, что любое действие происходит между двумя предметами. Но, в естественном языке формат тройки не является обязательным, к тому же часто расширяется обстоятельствами. Разумеется, что и дополнения, и обстоятельства можно представить тройками тоже, но это может быть целесообразным только, когда субъект, предикат и объект - это роли, а не смысл. Например, в таком случае в роли предиката может выступать как глагол-действие, так и глагол-отношение, а в роли объекта как существительное (объект), так и прилагательное (которое редко бывает объектом, а обычно выступает атрибутом объекта). Любимый пример в Семантическом Вебе: "небо голубое", где субъектом выступает "небо", предикатом "иметь цвет", а объектом "голубое". Как мы видим, здесь не совершается никакого действия по смыслу, а выражается только отношение (или же атрибутивность). Данный пример показывает, что изначальный смысл дуальности пространства и времени (например, в "я иду"), представляется в абстрактной форме, где вся предикат и объект являются ролями. И, конечно, очевидный недостаток в обязательности тернарного представления, хотя большинство данных организовано в Н-арном виде, в общем случае (особенно это очевидно в мире компьютеров, где данные могут быть связаны множеством произвольных ссылок, но это истинно и для естественного языка). Онтологии Семантического Веба вводят новый уровень сложности, но не являются ли они логическим продолжением XML схем, на которые мечтали перевести целые индустрии несколько лет тому назад (и на которые все так и не перешли)? В целом, мы видим картину, что с Семантическим Вебом могут работать (по крайней мере, на данный момент), в основном, эксперты, что очень сужает возможности коллаборации на его основе.
Итак, работа с компьютером представляет собой работу с абстракциями, которые выражаются в абстрактных, графических и естественных языках, форматах, протоколах, представлениях. Которые, в свою очередь, представляют собой набор идентификаторов, связанных между собой правилами и отношениями (в частности системой разделителей, которые выражаются либо в определенном символе, представляют собой пустой идентификатор, выражающие обычно отношение границы или связывания). Перед появлением Интернета все революции заключались в построении все более и более высоких уровней абстракции над аппаратным обеспечением и машинным кодом, высшей формой чего явился графический интерфейс (который, теоретически, должен быть ближе всего к пользователю). Интернет революция дала нам связность информации между компьютерами и связность информации внутри гипертекста. Все остальные нововведения являются либо следствиями этих причин (появление социальных сетей, как еще одна возможность общения в Интернете), либо недостатками изначальных стандартов (как, например, динамический аспект гипертекста), либо же средствами преодоления возникших проблем (как поисковые системы и Семантический Веб). В целом же, мы видим, что каждый шаг касался трех основных аспектов: идентификация, абстракция и смысл (связность).
* Идентификация
Проблема идентификации идеально решается в программировании. Что неудивительно - ведь там это необходимое условие самого процесса (т.к. всё должно быть идентифицировано, чтобы использовать его в дальнейшем). Для всего остального мира, проблема идентификации как стояла, так и стоит, как никогда остро (впрочем, проблема существует даже в программировании на месте его стыка с миром не-программирования, например, идентификации предметов, не включенных в программу напрямую). Текстовый интерфейс усугубил проблему идентификации тысячей аббревиатур, которые необходимо запомнить (или найти). Графический интерфейс облегчил проблему тем, что показывает идентификаторы явно, однако проблема его заключается в том, что эти идентификаторы не доступны для переиспользования (например, чтобы сослаться на какой-либо элемент и изменить его значение/состояние). Файловая система вводит еще один уровень сложности идентифицирования, т.к. необходимо запоминание имен файлов и путей. Доменная система заставляет запоминать имена доменов и URL-ы. В целом, конечно, любое запоминание полезно для тренировки памяти, но на выходе мы также видим свалку из миллионов идентификаторов. И ладно, когда чужие идентификаторы нам ничего не говорят о содержимом, так даже те идентификаторы, которые мы используем для собственных файлов, со временем тоже могут потерять смысл.
* Абстракция
Проблема абстракции более-менее решена в программировании. Что неудивительно - ведь там это достаточное условие самого процесса, а именно, программирование постоянно оперирует с абстракциями, которые соответствуют другим абстракциям или предметам реального мира. Существует, конечно, и небольшая проблема, а именно: пройдя через несколько этапов абстрагирования (например, в цепочке "пользователь-дизайнер-разработчик-пользователь") на выходе мы имеем абстракции, которым не всегда можно поставить в соответствие исходные абстракции. Отброшенная информация либо подразумевается (дизайнером, разработчиком, и т.п.), либо просто игнорируется. Для мира вне программирования проблема выглядит по-другому, т.к. здесь абстрагирование отсутствует вообще. Почему? Главным образом, потому что не существует формального алгоритма абстрагирования. Впрочем, абстрагирование частично доступно через идентификацию (ведь идентификатору соответствует содержимое, т.е. идентификатор, по сути, и является абстракцией информации, особенно это очевидно, если в роли идентификатора выступает текст на естественном языке), что неудивительно, так как идентификация - это как бы "идеальное" абстрагирование, когда похожесть источника и результата абстрагирования является полной.
* Смысл
Проблема смысла лучше всего решается в программировании. Что такое смысл? Простейшее определение может звучать так: комплекс идентификаторов сходны по смыслу, если стоящие за ними объекты, действия, отношения тоже сходны. Например, комплекс идентификаторов может включать: (1) фотографию части реальности, где травка зеленеет и солнышко блестит, (2) сочинение, описывающее эту часть реальности, (3) предложение "травка зеленеет, солнышко блестит", (4) предложение "весна пришла, ожили растения, стало тепло и сухо". Разумеется, что полной эквивалентности между этими комплексами достичь практически невозможно, так (2) абстрагирована при помощи фотоаппарата (а если это картинка в памяти, то абстрагирована человеческим глазом), (2), (3) и (4) являются результатом абстрагирования человеческого ума, причем (3) и (4) также могут выступать в качестве абстракции по отношению к (2). Все эти случаи не могут быть полностью эквивалентными, так как полностью идентичное абстрагирование двух инструментов абстракции (человеческий ум, глаз, фотоаппарат, и т.п.) достижимо только в идеальных условиях. Поэтому нам приходится устанавливать допустимые границы, в пределах которого мы считаем комплексы сходными. Так, в нашем случае, смысл абстрагируется в объекты травы и солнца, которые соответственно зеленеют и блестят (действия, отношения). Абстрагируясь, мы можем отбросить факты, что трава не полностью зеленеет, и не всегда солнышко блестит. Обозначив допущения, мы можем прийти к ситуации, в которой все комплексы могут считаться сходными. В программировании каждому объекту реального мира соответствуют либо переменная, либо объект, либо комплекс объектов и т.д. Чего нет или частично нет в программировании: (а) категоризации элементов смысла (объекты, действия, отношения, временные отношения, и т.п.), (б) связи с объектами реального мира. Тоже самое касается и Семантического Веба, который пытается упорядочить информацию при помощи новых стандартов, но не решает полностью ни проблему категоризации (хотя пытается при помощи онтологий), ни проблему связи с реальным миром (хотя пытается при помощи URI/URN).
Эти три аспекта являются необходимыми условиями решения проблемы больших объемов информации (если это возможно). Идентификация позволила бы ускорить сортировку, абстрагирование позволило бы уменьшить объемы необходимой сортировки, а смысл позволил бы улучшить ее точность. Но наряду с этим, перед нами стоят еще множество вызовов, которые желательно решить тоже (некоторые уже были перечислены выше):
* Большие объемы компьютерных идентификаторов (имена файлов, каталогов, сайтов, последовательность открытия графических элементов) невозможно запомнить.
* Компьютерные идентификаторы неестественны (слова естественного языка часто представляются в виде не всегда понятных аббревиатур, разделители либо пропускаются, либо заменяются другими разделителями) и сложны для запоминания (URL). Например, equalsIgnoreCase - идентификатор используемый для сравнения игнорируя регистр букв, он эквивалентен идентификатору естественного языка "equals ignoring case" или же другому компьютерному идентификатору equals(boolean ignoreCase). Как мы видим компьютерные идентификаторы приводятся к неестественному виду главным образом, т.к. игнорируются разделители естественного языка (которые используются для других целей) и т.к. часть смысла становится статической, а не динамической (параметром).
* Обычные идентификаторы (например, естественного языка) используются для графических элементов, но неотделимы от самих элементов (т.е. недоступны для переиспользования).
* Элементы интерфейса, файла, документа, приложения и сайтов монолитны и неотделимы друг от друга, что затрудняет переиспользование.
* Содержимое, а также содержание архива или файла скрыто обслуживающим приложением (например, невозможно понять, что скрывается в файле, не открыв его при помощи соответствующего приложения).
* Гипертекст жестко интегрирует информацию, что приводит в результате к "контентовому кошмару" (а. невозможно понять, где граница между контентом и не-контентом; б. сам контент представляет собой лишь последовательность символов/слов; в. субъективное и объективное смешаны)
* Гипертекстовая ссылка ссылает слово (абстрактное) на ресурс (конкретное).
* Невозможно создавать и классифицировать информацию без посредника между информацией и пользователем (например, чтобы создать заметку, относящуюся к одному из аспектов проекта, вы должны оформлять это только как документ или же использовать специальную программу для создания заметок)
* Невозможно маркировать информацию при помощи идентификаторов или смысла, не вмешиваясь в содержимое файла или в работу приложения
* Невозможно пользоваться совместно классификацией файлов (например, автор классифицирует файл как "документ проекта А" и вы автоматически видите ту же классификацию), совместно пользоваться информацией без посредника (например, чтобы передать файл другу вы должны пользоваться программой электронной почты, браузером, и т.п.), запросить информацию без посредника (например, попросить у друга документ по проекту, минуя обмен сообщениями и собственно сам поиск и передачу документа)
* Практически отсутствует возможность сохранять "снимки" информации, с которой вы работали (например, последний запрос к базе данных или сайту), с возможностью обновить позднее
* Невозможно при поиске получить точный ответ (вместо этого вы получаете миллионы ссылок)
* Практически невозможно руководствоваться целями при работе с приложениями (хотя мы их представляем, когда работаем), а только инструкциями (например, вместо того, чтобы поставить цель "послать документы господину Х" мы должны разбивать нашу цель на команды, которые включают в себя выделение документов, нахождение господина Х в адресной книге, и отсылку при помощи какого-то приложения)
* Некоторые действия приходится делать вручную (например, править файлы после инсталляции, либо изменять опции), только потому, что нет метода идентификации информации внутри контейнера и графических элементов, а методы идентификации при помощи программного интерфейса усложнен (поэтому и не реализован)
* Практически отсутствует понятие временных отношений (возможность, необходимость, и т.п.), хотя они часто подразумеваются
* Существуют принципиальные ограничения любого графического интерфейса. Лучше всего он подходит в условиях, когда человек может запомнить набор необходимых действий, чтобы автоматически их воспроизводить впоследствии. К сожалению, он плохо представляет сложные действия, т.к. человек "оптимизирован" под графическую систему естественного языка и ему сложно запоминать все тонкости новых графических систем, предоставляемых приложением или операционной системой. Построить простой графический интерфейс возможно только для простых задач (хороший пример, что всё должно быть просто, но не проще, чем необходимо), многие интерфейсы намеренно упрощают, достигая эстетического эффекта, но и снижая их возможности.
* Проблемы неупорядоченного интерфейса или контента перекладываются на пользователя ("посмотри в руководство" или "поищи в интернете"), что частично связано с проблемой любой иерархии (ограничивая область поиска она одновременно и скрывает часть информации), например, искать необходимую для вас информацию в нескольких уровнях вложенности меню или в нескольких уровнях вложенности сайта, представляет собой задачу, требующую не столько умения, сколько времени, а порой и просто удачи.
* Ассоциации (ключевые слова, теги и т.п.) часто заменяют абстракции (редуцированную или обобщенную информацию). Хотя, в общем случае, информация имеет множество ассоциаций, но одну абстракцию.