Компьютерра - Компьютерра PDA 07.08.2010-13.08.2010
Надо сказать, что предложенный подход ещё очень мягок, и в Microsoft пока что могут себе его позволить. Чем дальше, тем больше потребуется жертв, чтобы спасти главное.
Идентификация, абстрагирование, смысл
Автор: Юрий Гуськов
Опубликовано 12 августа 2010 года
Орфография и пунктуация автора сохранены.
Интернет - это большая свалка информации. Впрочем, не без попыток отсортировать и упорядочить. Но даже самые успешные сортироворочные машины на простейшие запросы вываливают на вас миллион ссылок (что, по видимому, должно считаться символом успешности сортировки, как если бы вы попали в библиотеку, а вам сказали: "да, у нас есть миллион книжек на эту тему, поищите там..."). Что ж, приходится полагаться на собственные умения и досортировывать то, что уже предложено. Вполне естественно, что обычно мы ограничиваемся сортировкой десятка, максимум, сотни ссылок, если ничего не находим - поиск можно считать провалившимся. Конечно, сортировочные машины проделывают огромную работу: по расчетам, на данный момент, в Интернете существует около 1 триллиона (10 в 16 степени) уникальных страниц, запросы на общие слова обычно дают около сотни миллионов страниц (10 в 8 степени), на менее общие мы уже получаем десятки миллионов, и так далее. Но ведь, в реальной жизни, поиск должен давать от десятка-сотни до одной ссылки. Например, на запрос "чемпион мира по футболу 2010 года" существует ровно один ответ, на запрос "кошки", наверное, все же ожидается ответ с сайтами и страницами, посвященным только им, а не все ссылки, где они так или иначе упоминаются. Поэтому неудивительно, что современные поисковики пытаются угадать то, что вам нужно, предложить лучшую фильтрацию, полагаются на человеческую досортировку, логично полагая, что уж люди лучше разберутся в информационном хламе.
А ведь вначале о подобных проблемах никто и не думал. Первые компьютеры были весьма неудобны в использовании (относительно современных, конечно), поэтому информация накапливалась очень медленно. Но, к счастью или сожалению, прогресс не стоял на месте. Появился текстовый интерфейс, операционные системы, высокоуровневые языки программирования, форматы данных, графический интерфейс, Интернет, наконец. Каждое из последующих нововведений (не считая прогресса аппаратного обеспечения) облегчало ввод и обработку информации, что вело к росту ее объемов и затрудняло поиск. С появлением Интернета ситуация еще больше усугубилась: покуда компьютеры не были связаны в единую сеть не каждый находил удовольствие в выплескивании своих мыслей и эмоций на жесткий диск, но появление тысяч и даже миллионов благодарных (а пусть даже и неблагодарных) читателей, стало спусковым крючком для экспоненциального роста информации.
Можно ли решить проблему больших объемов информации? Кое-кто полагает, что решение в коллаборации и разного рода социальных сетях, а также Семантическом Вебе (который, хотя и акцентируется на интеллектуальных агентах и приложениях, но тоже подразумевает своего рода социальную сеть). Однако существует, по крайней мере, две проблемы. (1) Информация, когда создается и публикуется, уже должна быть упорядочена. Возникает вопрос, есть ли гарантия, что сторонние люди упорядочат ее лучше, чем ее создатели? (2) Порой коллаборация вместо упорядочивания информации создает еще больший объем информации, которую в свою очередь, тоже надо упорядочивать. (3) Часто упорядочивание требует эксперта, что порой просто невозможно. Другие перспективные направления включают (но не ограничены только этими): виртуальная реальность, дополненная реальность, 3-мерный интерфейс, распознавание образов и языка. Некоторые из них еще недостаточно развиты, другие же весьма эффектны эстетически, но не так полезны практически. Раз так, то давайте попробуем взглянуть на проблему с другой стороны: а можно ли вообще понять, что хотя бы теоретически могло бы решить эту проблему? Для начала можно посмотреть на революции прошлого и попробовать понять, почему то или иное изобретение оказалось прорывом.
* Текстовый (консольный) интерфейс. Возник, т.к. человеку было необходимо общаться с компьютером на понятном языке. Для подобного общения были неоходимы два условия: возможность идентифицировать ту или иную компьютерную сущность (например, диск или операцию копирования) и возможность абстрагирования (т.е. выражения множества действий или объектов при помощи одного идентификатора). Как побочный эффект: возможность переиспользования уже имеющихся идентификаторов. Долгое время проводились попытки использовать естественный язык для этих же целей, но они провалились не только из-за того, что анализ полного набора грамматических конструкций затруднен (хотя анализ упрощенного подмножества вполне реален), но также из-за того, что для оперирования компьютерными сущностями лучше подходит специальный язык. Ведь, любая область человеческой деятельности рано или поздно приходит либо к своему жаргону (арго), либо к специфическому абстрактному языку (как в математике), которые лучше абстрагируют объекты и действия этой области.
* Высокоуровневые языки программирования, программные интерфейсы, форматы данных. По сути, ситуация такая же как и с текстовым интерфейсом, но с большими возможностями (которые заключается в наборе дополнительных абстракций, помогающих компоновать гораздо более сложные решения). Форматы данных, по сути, являются абстрактным языком (что неявно в двоичном виде, но явно в текстовом) для упорядочивания и ограничения информации.
* Операционная система. Среда, помогающая программному обеспечению и пользователю использовать аппаратное обеспечение. По сути же, предоставляет слой абстракции, который скрывает низкоуровневые сущности аппаратного обеспечения, а также позволяет программному обеспечению выстраивать свой слой абстракции, предоставляя набор сущностей, понятных пользователю.
* Файловая система. Предоставляет атомарный элемент хранения информации (файл) и иерархию каталогов, для упорядочивания файлов. Содержимое файла, теоретически, должно абстрагироваться в его имя и атрибуты (хотя их набор ограничен). Списки файлов, опять же теоретически, должны абстрагироваться (отображаться) в имя каталога. На практике же, принципы абстрагирования часто нарушаются, так имена файлов превращаются в бессмысленный набор символов, а каталог выбирается произвольным образом. Более того, информация о каталоге (которая теоретически должна классифицировать файл) теряется при копировании файла. Содержимое файлов часто спрятано обслуживающим приложением, поэтому информация внутри файла не может переиспользоваться (если это не предусмотрено в соответствующем приложении).
* Приложения. Являются слоем абстракции между операционной системой и пользователем. Предоставляют детерминированный набор действий на предопределенные реакции пользователя. Кодируют первоначальный смысл (то, как систему видят пользователи) в виде абстракций (сначала архитекторами, а потом и разработчиками), чтобы в итоге декодировать абстракции в смысл, понятный пользователем (естественно, во многих случаях, уже хоть немного, но искаженный, т.к. смысл проходит через несколько преобразований).
* Графический интерфейс. Его преимущества связаны не только с тем, что человек лучше воспринимают информацию визуально (человек быстрее обрабатывает пространственные абстракции, чем логические или языковые, к тому же само абстрагирование возможно является порождением именно визуального восприятия информации). Не менее важно и то, что он явно предоставляет и ограничивает информацию (т.е. вы видите все команды сразу, а не вспоминаете их, а их возможные значения ограничены в списке и т.п.) и связывает ее (одному элементу соответствуют другие элементы информации или действия, например, связь между объектом и действиями, предоставляемыми в меню). Однако, при большом количестве элементов мы опять возвращаемся к необходимости использования поддержки естественного языка (в виде руководств и т.п.). К тому же, что часть элементов приходится скрывать, упорядочивая их в иерархии (меню, деревья, вложенные окна и т.п.), при этом мы ограничиваем контекст, что хорошо для понимания отдельной области, но при этом же, многие уровни вложенности так хорошо скрывают возможности приложения, что ими редко, кто пользуется, а иногда и с трудом находит. Наконец, еще одна проблема заключается в том, что элементы графического интерфейса и данные связаны неявно (для пользователя), что не позволяет переиспользовать подобный интерфейс (т.е. ссылаться на элементы GUI). При всех преимуществах, графический интерфейс всегда поддерживается натуральным языком: в корне проблемы лежит тот факт, что визуальные элементы программы не всегда интуитивно понятны, в то время как естественному языку люди обучаются в течении десятилетий. Собственно говоря, иконки ничем не отличаются от букв (которые тоже являются иконками), но при необходимости компоновки сложных действий - это проще будет сделать при помощи естественного языка (в виде инструкции), либо при помощи абстрактного языка скриптов, а не переиспользуя графический интерфейс. В целом, хотя графический интерфейс и очень эффективен, но он не может представить любую информацию (например, звук), поэтому универсальным может быть только символьный интерфейс.