Беседы о программировании
Занимаясь индустрией, основу которой составляют стремительные нововведения, мы поступаем неправильно, концентрируясь на поиске и обсуждении фундаментальных проблем в системах, которые затем поставляются доверчивым пользователям.
Одним из последних примеров нашего малодушия было решение корпорации Microsoft подменить давно обещанную, полностью объектно-ориентированную файловую систему в Cairo, следующем поколении Windows NT, дополнительными расширениями объектов. Предполагалось, что новая файловая система должна заменить устаревшие модели хранения информации.
Я не пытаюсь использовать здесь понятие объектной ориентированности в качестве некой смутной панацеи. То, что я имею в виду, вполне конкретно.
Предположим, что мы имеем дело с предприятием, чья деятельность может рассматриваться раздельно для восточного и западного регионов. Предположим, что мы создаем внутренние приложения, которые должны либо сравнивать, либо объединять данные для этих двух регионов. Как это и должно быть, для пользователя структура данных, используемых в работе, не имеет значения.
Но предположим, что в результате развития западного региона возникла по ряду причин необходимость его разделения на северо-западный и юго-западный регионы. Как должны реагировать на эти изменения пользователи и разработчики внутренних приложений?
Бремя примитивных приложений
Примитивные приложения, написанные с использованием простых файловых систем, создадут наибольшее число проблем для разработчиков внутренних приложений. Им придется рассматривать две группы пользователей: одну, интересы которой связаны с географией регионов (данная группа нуждается в объединении информации из двух новых регионов в один полный набор данных), и другую, чьи интересы связаны с организационными вопросами (для нее существенно, чтобы необходимые отчеты были переделаны для трех регионов вместо двух).
Нашим разработчикам теперь придется просматривать все приложения на предмет ссылок на прежний западный регион и решать, следует ли обрабатывать каждую ссылку, объединяя данные или рассматривая отдельно два новых региона. Неисправленные приложения прекратят работу при обращении к файлу, которого больше не существует, или, что еще хуже, будут давать неверные результаты, используя один из "западных" файлов, считая, что он все еще охватывает половину страны.
Более "умные" приложения могут быть созданы с использованием базы данных вместо дискретного набора файлов. Приложения, написанные для "организационных" пользователей, будут опрашивать базу данных о том, какие регионы определены, и реагировать соответственно. Приложения, написанные для "географических" пользователей, будут обращаться к уже несуществующим "западным" таблицам, которые могут быть описаны как виртуальные и при необходимости построены заново.
Таким образом, нам более не нужна объектно-ориентированная файловая система, нам нужны реляционные СУБД. Правильно?
Неправильно. До сих пор мы говорили о статических и быстро обновляемых данных. А как быть с приложениями, которым нужны наилучшие для данного момента оценки, а не самые свежие конкретные данные? Такие приложения должны использовать текущие сведения из базы данных, а если они существенно устарели, использовать определенные алгоритмы предсказания.
Для таких задач наиболее подходят системы с информационной архитектурой, скрывающей различия между реальными данными и алгоритмами их обработки, с одной стороны, и интерфейсными интеллектуальными объектами, обеспечивающими удобное использование приложений, - с другой.
Годами корпорация Microsoft утверждала, что основу системы давно обещанной в Cairo, составляет система подобного типа. Без этого мы лишь перекрашиваем старое ветхое здание. Пользователи не хотят, чтобы их вечно дурачили подобными поверхностными изменениями.
Питер Коффи