А, КСТАТИ...
Есть у меня одна несбыточная мечта. Мне хотелось бы заполучить все исходные тексты какого-нибудь старого прикладного пакета и разобраться с ними. Старого - значит уже "вышедшего в тираж", без каких бы то ни было коммерческих тайн, но с достаточно богатой предысторией, чтобы можно было проследить его эволюцию от версии к версии и при переходах из рук одной команды программистов в руки другой. Я временами представляю себе интеллектуальное наслаждение, которое извлек бы, предпринимая такое "анатомическое исследование". Могли бы получиться прямо-таки детективные истории о следах так и не реализованного или не доведенного до конца замысла, лежащего в основе того или иного модуля. Увы, мечта остается и останется несбыточной, ибо, во-первых, практически не существует окончательно устаревших программ, а во-вторых, никто (включая и меня самого) никогда не позволит мне несколько месяцев заниматься программной патологоанатомией.
Сколько может быть версий у программы? Если говорить о цифрах, которые сопровождают название пакета на коробке, то сколько угодно, вернее, столько, сколько требуют маркетинговые соображения. А по-настоящему? Евгений Веселов однажды заметил, что существенно различных версий программы может быть ровно три. Первая версия, в которой автор реализовал все свои соображения о том, что должна делать и как должна выглядеть программа данного назначения, вторая, в которой будут учтены пожелания пользователей, исправлены все обнаруженные во время реальной эксплуатации ошибки и недочеты и т. д., и третья... Третья версия - это такая, в которой автор осознает, что обвешивать существующее здание балкончиками и пристройками, ломать стены и ставить новые перегородки дальше уже опасно, - строение рухнет. И тогда Главный Программист принимает решение начать все заново, как бы на голом месте, но с учетом опыта, приобретенного при создании предыдущих версий программы. Третья версия могла бы стать пределом совершенства... если бы до нее когда-нибудь дошла очередь.
В реальной жизни практически все достаточно большие программы, с которыми мне доводилось работать, в лучшем случае доходят до второй версии. "Относительное совершенство" - удел небольших утилит, которые очень скоро перестают быть автономными и независимыми и кончают свой век в составе больших комплексов.
Эволюция настоящих программ подчиняется совсем другим законам и более всего напоминает развитие государств. Начальная экспансия: объект нашего рассмотрения молод и агрессивен, он расширяется во всех направлениях, захватывая все новые ресурсы, обрастая новыми возможностями и обретая новые рынки сбыта. Потом наступает период расцвета, когда программа (или страна) занимает стабильное и устойчивое положение в сообществе, принося выгоды своим создателям и подданным и вызывая зависть у окружающих. И, наконец, упадок - цивилизация движется вперед, а те, кто отвечает за развитие программы, уже давно забыли времена, когда были молодыми и агрессивными и не боялись рискнуть всем, чтобы прорваться в первые ряды. И в конце концов программа (страна) опускается до уровня второразрядных, продолжая некоторое время влачить бесцветное существование. А потом и вовсе исчезает, сменив сначала фирму (правящую династию или форму правления), а затем и название.
Некоторые программы так и не выходят из детского "захватнического" возраста, другим удается пройти весь цикл. Я мог бы привести множество примеров, но уверен, что читатели справятся с этим и без меня. А не попробовать ли предсказывать ближайшее будущее прикладных и системных пакетов? Если понять, на каком этапе данный пакет находится сейчас, можно угадать, что нас ждет в следующих версиях: то ли расширение возможностей до таких пределов, что их уже никому не удастся реализовать, то ли незначительные усовершенствования, выдаваемые за очередную победу человеческого разума. По моим наблюдениям, полный цикл, от экспансии до упадка, длится пять - семь лет.
Уж не стоим ли мы на пороге новой "компьютерной" цивилизации? Вот уже и типичное создание человеческого разума, программы, вместо того чтобы неуклонно совершенствоваться, эволюционируют по законам, напоминающим естественные...
P.S. Тему для диссертации "Эволюция программного продукта в условиях рыночной экономики" я дарю любому, кто пожелает ее развить.
Рубен Герр
К Рубену Герру можно обратиться по телефону: (095) 286-8138.
Евгений Веселов однажды заметил, что существенно различных версий программы может быть ровно три. Первая версия, в которой автор реализовал все свои соображения о том, что должна делать и как должна выглядеть программа данного назначения, вторая, в которой будут учтены пожелания пользователей, исправлены все обнаруженные во время реальной эксплуатации ошибки и недочеты и т. д., и третья... Третья версия -это такая, в которой автор осознает, что обвешивать существующее здание балкончиками и пристройками, ломать стены и ставить новые перегородки дальше уже опасно, -строение рухнет.