Cиница в руках
АрхивНечастые свободные от ежедневной работы минуты не позволяют всерьез заняться чем-либо еще. Потому и принимать всерьез написанное ниже, право, не стоит. Но не все ведь про работу писать, позвольте и отвлечься самую малость.
Те, кто занимался разработкой больших систем (не важно, программных, аппаратных или еще каких), знают: первые попытки анализа будущего монстра с точки зрения поиска того, с какой стороны к нему подойти, порой приводят в ужас. Масса не связанных между собой функций, не делящихся ни на какие категории связей. Никаких перспектив кроме реализации "в лоб" - объем работы, которого не пожелаешь врагу, с известным заранее результатом: там забудешь, тут не учтешь, здесь потребуется изменить, когда все уже будет готово, там окажется, что что-то забыли еще при постановке задачи. Результатом будет бесконечный апгрейд, новые модификации с новыми же ошибками. Ничего не напоминает?
Кто-то скажет: а-а-а, знаю - это Виндоуз, тот, который Must Die. Ответ правильный, но не полный. Microsoft и ее конкуренты (если таковых еще можно считать конкурентами) уже охватили, кажется, весь возможный спектр приложений и даже додумались до объединения их в один пакет. Вернее, в один CD-ROM под названием xxx-Office. Функциональность огромна, и от версии к версии, как и положено, только растет: текстовый редактор - тексты набирать, электронные таблицы - цифры считать, браузер - в Сети и каталогах ковыряться, графический редактор - картинки рисовать. Разные случайные связи - да вот же они: OLE, ODBC, конвертеры, перекодировщики, фильтры импорта-экспорта и черт-те знает что еще. Похоже? А что, если, к примеру, подняться на один уровень и посмотреть на весь этот зоопарк сверху? Неужели текстовый редактор, умеющий работать с таблицами, не напоминает вам электронные таблицы, в ячейках которых содержится тот же самый текст? Да вот же он, элемент общий - графический интерфейс - окно знаменитое. Поднимите его в иерархии, сделайте общим для всех типов данных, что внизу останется? Правильно, объекты и модули для работы с ними: текстом, таблицами, изображениями, каталогами, гипертекстом и т. д. и т. п. Только элементы управления меняй. А масса связей уложится в стандартные "копировать - вставить - удалить" применительно к любому объекту. Это не решение, это просто пример, и более чем абстрактный. Кто же мог при создании системы предусмотреть, какие данные нужно будет (и окажется возможным) в ней через десяток лет обрабатывать. Да и эволюционный путь структурного подхода не предполагает. Разные пакеты, разные разработчики, разные решения, кто же теперь захочет с нуля переделывать то, что с таким трудом вместе увязано и не так уж плохо работает? Вы скажете: а как же объектное программирование, языки концептуальные? А никак. Что они могут сделать в таких условиях, кроме как под условия эти подстроиться? Есть строгий Паскаль, красивый АДА, а есть C++ с Бейсиком. Вы чем пользуетесь? Синица в руках всегда считалась лучше журавля в небе.
Да и вообще при решении своих задач человечество почему-то всегда идет путем эволюционным, практически не утруждая себя попытками анализа системы перед ее построением. Отдельные философы, объяснявшие миру, что нужно сесть и подумать, никогда не были в почете. Дело начато, деньги вложены, силы затрачены, не переделывать же теперь.
Вы думаете, я хотел обсудить Windows? Да нет же, про нее и так уже написано столько, что вплетать свой голос в хор обвинений просто неприлично. Посмотрите, разве не так мы пытаемся строить, опять же к примеру, экономику нашей страны? Та же масса функций, те же беспорядочные связи, бесконечный апгрейд правительства, парламента... А как было бы хорошо подняться над всем этим, понять смысл и принять изначально верное и красивое решение, чтобы ничего после не добавлять и не переделывать, а все будущие доработки уложились бы в готовую структуру. Но это журавль в небе, а у нас в руках известно что. Но ведь мечтать в свободное от работы время не вредно...