МЕНЮ:
Аналитик | Постановщик задач | Проектировщик | Программист | Программист БД
Инженер по тестированию | Тестировщик | Инженер по документированию
Инженер по внедрению | Инженер поддержки | Менеджер проекта | Менеджер подразделения
Менеджер по продажам | Менеджер по маркетингу | Администратор | Администратор БД
Литература | Контакты
\

Книга Жемчужены творчества программистов на IT БАЗАР

Многопроходные алгоритмы. Эти алгоритмы совершают несколько проходов по входным данным, продвигаясь каждый раз немного впе­ред. Ранее мы рассмотрели 27-проходный алгоритм. В задаче 1 требуется разработка 2-проходного алгоритма.
Компромисс "память-время" и случай невыполнения. Программист­ский фольклор и теория о компромиссе "память-время" сообщают следующее: дольше работающей программе может потребоваться мень­ший объем памяти. Например, в 2-проходном алгоритме, приведенном в решении задачи 1, удваивается время работы, чтобы вдвое сократить занимаемую память. Однако, как показывает мой опыт, гораздо чаще при уменьшении объема памяти, требующейся программе, уменьшается и время ее работы1. Эффективная по объему занимаемой памяти поби­товая структура существенно сокращает время сортировки. В данной задаче уменьшение объема памяти привело к сокращению времени по двум причинам: меньший объем данных, которые надо обработать, приводит к сокращению времени обработки, а хранение данных в ОЗУ, а не на диске, устраняет накладные расходы на доступ к диску. Конеч­но, улучшение обоих параметров стало возможным только потому, что исходный вариант программы был далеко не оптимальным.
Простота замысла. Антуан де Сент-Экзюпери, французский писатель и авиатор, говорил: "Конструктор знает, что он достиг совершенства не тогда, когда нечего больше добавить, а тогда, когда нечего больше убрать". Многие программисты должны оценить свою работу по этому критерию. Простые программы обычно более надежны, "здравомысля­щи", эффективны, чем их сложные родственники, их намного проще создавать и сопровождать.
Этапы разработки программы. Рассмотренный пример иллюстрирует процесс разработки, подробно описанный в разд. 11.4.
1.6. ЗАДАЧИ
Подсказки и решения для некоторых задач можно найти в конце книги. 1. Мой собеседник - программист - сказал, что в его распоряжении есть
около 1000 свободных слов в памяти, но в рассмотренном фрагменте
Компромиссы часто встречаются во всех инженерных дисциплинах; конструкторы автомобилей, например, обычно увеличивают удельный расход топлива, добавляя тяжелые детали для улучшения эксплуатационных характеристик. Однако предпочтительней взаим­ное улучшение характеристик. Анализируя конструкцию экономичных автомобилей, которые я водил, могу заметить, что "уменьшение массы за счет основных устройств автомо­биля приводит к дальнейшему сокращению массы различных деталей шасси — и даже к тому, что некоторые из них, такие, как усилитель руля, становятся не нужны".
17


Страница №18
*
Зайцев нет
© "IT БАЗАР", 2003. Все права защищены. Создание: © "z-group" студия веб-дизайна, 2003.
Также может поискать работу на прямую в следуйщих организациях:
IT БАЗАР