40

2. Компьютер, похожий на меня и тебя

Трэппинг

(сжатие и растяжение)

Программисты, как правило, убеждены, что они создают
не что иное, как оптимальную программу. Когда их спра¬
шивают, видят ли они возможности для улучшения своей
программы, они обычно отвечают: «Теоретически это воз¬
можно, но я так не думаю».

Программирование руководствуется следующими прин¬
ципами:

1. Каждая программа содержит, по крайней мере, одну
ошибку.

2. Каждая программа содержит, по крайней мере, одну
лишнюю команду.

3. Ошибка, которую вы ищете, появилась благодаря по¬
следним изменениям.

4. Каждая программа может быть ускорена, по крайней
мере, за счет п. 2.

2. Компьютер, похожий на меня и тебя

41

В 1978 г. мы работали над проблемой разработки так
называемых сжимающих и растягивающих программ для
Текстильной базы данных (ТБД), проекта компании Hell из
Киля. Нашей целью было создать искусственное сжатие и
растяжение границ цветных областей на узорчатом тек¬
стиле одежды или портьер так, чтобы улучшить внешний
вид границ красочных областей при цветной печати. Каж¬
дый цветной участок площадью 1 квадратный метр мог
спокойно занять от 10 до 40 Мбайт данных. Разрешение
при записи было в среднем от 1200 до 2400 Ірі (линий на
дюйм).

Наша первая версия программы сжатия и растяжения
для ТБД потребовала бы около 300 часов работы процессо¬
ра для обычного образца площадью 1 квадратный метр.
Однако мы не позволили делу зайти так далеко и заверши¬
ли программу в пятницу вечером, всего за пять дней рабо¬
ты процессора.

Группа работала еще три недели, повышая скорость
программы. Рейнхард Тетцлафф написал собственный
программный код в ассемблере Сименс — около 17000
строк. Мы остановились на варианте, что программа долж¬
на быть плодом умственной деятельности одного челове¬
ка, и это, разумеется, привело к лучшим результатам. Годом
позже новая программа потребовала всего один час вме¬
сто пятисот, как это было раньше.

Искусственное
сжатие и растяжение
границ цветных
областей
на узорчатом
текстиле одежды
или портьер

500 ч

1 ч