40
2. Компьютер, похожий на меня и тебя
Трэппинг
(сжатие и растяжение)
Программисты, как правило, убеждены, что они создают
не что иное, как оптимальную программу. Когда их спра¬
шивают, видят ли они возможности для улучшения своей
программы, они обычно отвечают: «Теоретически это воз¬
можно, но я так не думаю».
Программирование руководствуется следующими прин¬
ципами:
1. Каждая программа содержит, по крайней мере, одну
ошибку.
2. Каждая программа содержит, по крайней мере, одну
лишнюю команду.
3. Ошибка, которую вы ищете, появилась благодаря по¬
следним изменениям.
4. Каждая программа может быть ускорена, по крайней
мере, за счет п. 2.
2. Компьютер, похожий на меня и тебя
41
В 1978 г. мы работали над проблемой разработки так
называемых сжимающих и растягивающих программ для
Текстильной базы данных (ТБД), проекта компании Hell из
Киля. Нашей целью было создать искусственное сжатие и
растяжение границ цветных областей на узорчатом тек¬
стиле одежды или портьер так, чтобы улучшить внешний
вид границ красочных областей при цветной печати. Каж¬
дый цветной участок площадью 1 квадратный метр мог
спокойно занять от 10 до 40 Мбайт данных. Разрешение
при записи было в среднем от 1200 до 2400 Ірі (линий на
дюйм).
Наша первая версия программы сжатия и растяжения
для ТБД потребовала бы около 300 часов работы процессо¬
ра для обычного образца площадью 1 квадратный метр.
Однако мы не позволили делу зайти так далеко и заверши¬
ли программу в пятницу вечером, всего за пять дней рабо¬
ты процессора.
Группа работала еще три недели, повышая скорость
программы. Рейнхард Тетцлафф написал собственный
программный код в ассемблере Сименс — около 17000
строк. Мы остановились на варианте, что программа долж¬
на быть плодом умственной деятельности одного челове¬
ка, и это, разумеется, привело к лучшим результатам. Годом
позже новая программа потребовала всего один час вме¬
сто пятисот, как это было раньше.
Искусственное
сжатие и растяжение
границ цветных
областей
на узорчатом
текстиле одежды
или портьер
500 ч
1 ч