13-Я КОМНАТА: Эпоха динозавров
13-Я КОМНАТА: Эпоха динозавров
Автор: Сергей Леонов
Не зря программисты говорят, что найденная ошибка – всегда предпоследняя. Найти последнюю невозможно. А затраты времени и средств на ее поиск, соответственно, близки к бесконечности. Да и нужно ли ее в таком случае искать? Я еще помню времена, когда ошибка в микрокоде очередного процессора была сенсацией. Ее изучали, обсуждали, выясняли как распознать по маркировке чипа, писали программы обнаружения… А потом забыли. Вставили в программы кусок кода с проверкой, учтя банальный факт, что бывают процессоры с ошибкой, а бывают и без. Вроде как и не ошибка это вовсе, а просто такие разные процессоры. А программа умеет работать на обоих, за что ей честь и хвала. Впрочем, ошибки аппаратные по сравнению с программными – это цветочки, и притом весьма мелкие. Что ничуть не мешает нам приспосабливаться и к ним тоже. Не работает присвоение адресов в беспроводной сети под «Вистой»? Вобьем адрес руками и забудем.
Постоянно ошибается набор T9 в телефоне? Будем больше звонить и меньше писать SMS. Я иногда поражаюсь, насколько люди, не связанные профессионально с компьютером, легко уживаются с софтом, который я бы снес с матюками через десять минут. Программа выдает сообщение о нехватке памяти? Ерунда, нажми «ОК», со второго раза сработает. Ошибка структуры базы данных? Так надо было открывать не из этого окошка, а из другого – все было бы нормально. Кривой и глючный софт отечественных изобретателей велосипедов, в котором даже самодельная полоса прокрутки неадекватно реагирует на мышь, оказывается, вполне можно использовать по делу, да еще и быть благодарным разработчикам, главное – не знать, что так быть не должно. Что рекомендация о «прокрутке» клавиатурой – следствие ошибки, а не свойство. Что бесплатный сервер баз данных лохматой версии применен не потому, что он лучше, а потому, что на халяву. Человек дошел до текущей стадии развития не съеденным в свое время динозаврами как раз благодаря тому, что научился приспосабливаться к внешним условиям, изменить которые был не в силах. Необходимость выживания диктовала преимущественное использование удачных решений одновременно с ограниченной проверкой новых вариантов. Казалось бы, софтверная индустрия более чем благодатна для подобной тактики – к примеру, нынешняя армия программистов давно уже должна была бы решить все основные задачи, если бы основывалась на удачных и проверенных алгоритмах и готовых модулях. Тем не менее, приспособляемость наблюдается лишь в среде пользователей, но никак не разработчиков. Выходит, для последних создание надежных и качественных решений не является жизненной необходимостью? Здесь можно придумать много объяснений. Например, заметить, что жизненный цикл большинства устройств весьма короток. Ошибка в BIOS системной платы будет, скорее всего, забыта вместе с самой платой. Некоторые компании, конечно, пытаются выпускать исправления даже к моделям пятилетней давности, но много ли тех, кто эти обновления устанавливает? А если взять чисто потребительские изделия, такие как телефоны, то любой софтовый баг проще признать специфической особенностью устройства и просто привыкнуть к нему. Можно вспомнить, что большинству программ присуща сумасшедшая избыточность функциональности, большинством которой никто и никогда не пользуется. Потеря одной из функций имеет значение для столь малого количества пользователей, что эту функцию проще перевести в разряд недокументированных особенностей, не упоминая о ее наличии. Но это все следствия, а на деле приходится признать, что да, действительно, у отрасли с потребителем задачи разные. И все же очень хочется надеяться, что наблюдаемая сегодня ветвь развития окажется не самой удачной и эволюция на ней не остановится, а лишь вымрут отдельные динозавры.