воскресенье, 25 апреля 2010 г.

Старение и process.kill()

Стоит немного задуматься и представить себя великим программистом. У которого есть очень мощная рабочая станция и неограниченная фантазия. Вот сидит такой разработчик и тяжело, в поте лица, работает день и ночь, создавая свой продукт. Сначала он намечает себе цель – сделать нечто такое же, как он. Мы бы назвали это искусственным интеллектом или искусственным разумом – некая самообучающаяся система. Вот наш программист создает первые эскизы, испытывает первые прототипы. Он пишет юнит-тесты модуля памяти, тестирует генератор мыслей, отлаживает систему контроля эмоций. Затем все эти кусочки собираются в одно – и работа идет дальше…

Готовое ядро он облекает в форму – дает ей интерфейс взаимодействия с собой. Это может быть командный интерфейс, графический или визуально-голосовой. Потом он выделяет программе место на диске и… внимание! Запускает! Следит за загруженностью процессора и выделением памяти – они минимальны. Смотрит на производительность рабочей станции, и видит, что она не уменьшилась ни на йоту, настолько оптимально написан весь код. Повод собой гордится, однако что-то ему не нравится в его творении… В первую очередь предсказуемость. Стоило программе преодолеть первый этап обучения, как большинство ее реакций стало однотонно, все ответы - шаблонными.

Тогда он создает еще один экземпляр и запускает его. Следит за ним, наслаждается… Потом еще и еще один. Затем ему надоедает делать это вручную, и он пишет патч, позволяющей его творению самому запускать свои экземпляры. И, процесс за процессом, они начинают заполнять память компьютера, загружать  процессор. Ничтожный каждый конкретный, все вместе они забивают 30…50…70% мощностей машины, не давая нормально работать другим приложениям, тормозя их исполнение, нарушая результаты. А перезагрузить систему, допустим, нельзя! Слишком много трудов будет потеряно. Тогда программист идет на сложный, но необходимый шаг. Он пишет еще один патч, содержащий таймер. Обычный таймер, встроенный в каждый экземпляр: генератор псевдослучайных чисел настроен на диапазон от 0 до 120 по F распределению (или какому там? Чтоб вот так:  ) и как только количество тиков достигает полученной величины – все. Процесс самоубивается. Естественное желание создателя не потерять всю работу из-за любимого и интересного, но такого многочисленного и опасного для остальных, творения.

А мы еще удивляемся, почему люди смертны? Порой только и остается надеяться, что наш генератор выдал приличное число и что создатель не успел забэкапить все необходимое, чтобы капитально перезагрузить систему.

Комментариев нет:

Отправить комментарий