4.2.4. Компактность и единый жесткий центр
4.2.4. Компактность и единый жесткий центр
Одним неочевидным, но мощным способом поддержать компактность в конструкции является ее организация вокруг устойчивого основного алгоритма, определяющего ясное формальное определение проблемы, избегая эвристики и ухищрений.
Формализация часто радикально проясняет задачу. Программисту не достаточно определить, что части поставленной перед ним задачи попадают в стандартные категории компьютерной науки — поиск и быстрая сортировка. Наилучшие результаты достигаются в том случае, когда можно формализовать суть задачи и сконструировать ясную модель работы. Вовсе не обязательно, чтобы конечные пользователи поняли данную модель. Само существование унифицирующей основы обеспечит ощущение комфорта, когда работа не затруднена вопросами типа "а зачем они сделали это", которые так распространены при использовании универсальных программ.
Дуг Макилрой.
В этом заключается сила традиции Unix, но, к сожалению, это часто упускается из вида. Многие из ее эффективных инструментальных средств представляют собой тонкие упаковщики вокруг непосредственного преобразования некоторого единого мощного алгоритма.
Вероятно, наиболее ясным примером таких средств является программа diff(1), средство Unix для составления списка различий между связанными файлами. Данное средство и спаренная с ним утилита patch(1) определили стиль распределенной сетевой разработки современной операционной системы Unix. Очень ценным свойством программы diff является то, что она нечасто удивляет пользователей. В ней отсутствуют частные случаи или сложные граничные условия, поскольку используется простой, математически совершенный метод сравнения последовательностей. Из этого можно сделать ряд выводов.
Благодаря математической модели и цельному алгоритму, Unix-утилита diff заметно контрастирует со своими подражателями. Во-первых, центральное ядро является цельным, небольшим и никогда не требовало ни единой строки для обслуживания. Во-вторых, результаты ее работы являются четкими и последовательными, не искажены сюрпризами, при которых эвристические методы терпят неудачу.
Дуг Макилрой.
Таким образом, у пользователей программы diff может развиться интуитивное чувство относительно того, что будет делать программа в любой ситуации, даже без полного понимания центрального алгоритма. В Unix имеется множество других широко известных примеров, подтверждающих это. Ниже приводятся некоторые из них.
• Утилита grep(1) для выбора из файлов строк, соответствующих шаблону, является простым упаковщиком вокруг формальной алгебры шаблонов регулярных выражений (описание приведено в разделе 8.2.2). Если бы данная программа испытывала недостаток в такой последовательной математической модели, то она, вероятно, выглядела бы подобно конструкции первоначального средства старейших Unix-систем, glob(1) — набор узкоспециальных шаблонов, которые невозможно было комбинировать.
• уасс(1) — утилита для создания языковых анализаторов представляет собой тонкий упаковщик вокруг формальной теории грамматики LR(1). Сопутствующая ей утилита, генератор лексических анализаторов lex(1) является подобным тонким упаковщиком вокруг теории недетерминированных конечных автоматов.
Все три описанные программы являются настолько "свободными от ошибок", что их корректная работа воспринимается как должное, и в то же время они считаются достаточно компактными, для того чтобы программисты могли их использовать. В основном именно благодаря тому, что данные программы были сконструированы вокруг устойчивой и обоснованно корректной алгоритмической основы, они никогда не нуждались в серьезной доводке в процессе длительного и частого использования.
Противоположный формальному подход заключается в использовании эвристики — эмпирических правил, которые позволяют получить вероятностное, а не абсолютно точное решение. В некоторых случаях эвристика применяется ввиду того, что детерминированное корректное решение невозможно. В качестве примера можно рассмотреть методы фильтрации спама. Для алгоритмически идеального спам-фильтра потребовалось бы в качестве модуля полное решение проблемы понимания естественного языка. В других случаях эвристика используется из-за того, что известные формально корректные методы невероятно дороги. Примером этому служит управление виртуальной памятью. Существуют почти совершенные решения, однако они требуют такого количества измерений во время выполнения, что их издержки свели бы к нулю любой теоретический выигрыш по сравнению с эвристикой.
Проблема эвристических методов заключается в том, что они увеличивают количество частных и граничных случаев. Если ничего другого не остается, то обычно следует ограничить эвристику с помощью какого-либо механизма восстановления на случай сбоя. Все обычные проблемы, связанные с увеличением сложности, сохраняются. Для управления итоговым выбором оптимальных соотношений необходимо начать их изучение. Всегда следует выяснять, действительно ли эвристические методы дают такой выигрыш производительности, который окупает затраты на них, связанные со сложностью кода. При этом не стоит оценивать наугад прирост производительности.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Единый формат документов
Единый формат документов Все документы в Интернете сейчас придерживаются единого формата – HTML (HyperText Markup Language – язык разметки гипертекста). Документы, написанные с использованием HTML, называются веб-документами (или веб-страницами). Совокупность веб-страниц,
9.5. Жесткий диск
9.5. Жесткий диск 9.5.1. Нумерация Сначала приведем дополнительные сведения о нумерации жестких дисков в системе Linux (табл. 9.3).Таблица 9.3. Нумерация жестких дисков Тип жесткого диска Старший номер Наименование устройства Младший номер Диск 1 Диск 2 IDE на 1 контроллере 22 /dev/hda
Жесткий диск
Жесткий диск Вы будете работать с данными, которые представляют собой видеофайлы. Они занимают достаточно много места на жестком диске компьютера. Каких-либо минимальных требований к жесткому диску компьютера нет, поскольку здесь все зависит от ваших потребностей и
4.2. Компактность и ортогональность
4.2. Компактность и ортогональность Код не является единственным объектом, который имеет оптимальный размер своего элемента. Языки программирования и API-интерфейсы (например, библиотечных или системных вызовов) сталкиваются с теми же ограничениями человеческого
4.2.1. Компактность
4.2.1. Компактность Компактность — свойство, которое позволяет конструкции "поместиться" в памяти человека. Для того чтобы проверить компактность, можно использовать хороший практический тест: необходимо определить, нуждается ли обычно опытный пользователь в руководстве
4.2.4. Компактность и единый жесткий центр
4.2.4. Компактность и единый жесткий центр Одним неочевидным, но мощным способом поддержать компактность в конструкции является ее организация вокруг устойчивого основного алгоритма, определяющего ясное формальное определение проблемы, избегая эвристики и
4.2. Компактность и ортогональность
4.2. Компактность и ортогональность Код не является единственным объектом, который имеет оптимальный размер своего элемента. Языки программирования и API-интерфейсы (например, библиотечных или системных вызовов) сталкиваются с теми же ограничениями человеческого
4.2.1. Компактность
4.2.1. Компактность Компактность — свойство, которое позволяет конструкции "поместиться" в памяти человека. Для того чтобы проверить компактность, можно использовать хороший практический тест: необходимо определить, нуждается ли обычно опытный пользователь в руководстве
Единый интерфейс
Единый интерфейс Объединяйте настройки с основным интерфейсомСтраницы, содержащие системные настройки, списки пользователей и т.п., зачастую крайне неудобны и ужасно выглядят. Всё потому, что большая часть времени тратится на разработку основного интерфейса.Не
Жесткий диск
Жесткий диск HDDLifeСайт: http://www.hddlife.com/rus/Размер: 5 МбСтатус: Freeware, Shareware (Pro)Цена: 500 рублей (Pro)Описание разработчиков: Фотографии ваших близких, видеофильмы из путешествий, ваш ежедневник и записная книжка, письма друзей, служебная информация и документы – вы готовы потерять
Жесткий диск
Жесткий диск Для домашней видеостудии очень важны характеристики жесткого диска.Только для установки программы Pinnacle Studio 11 может потребоваться более 1 Гбайт (зависит от того, какие компоненты программы будут установлены) плюс около 3 Гбайт для дополнительных (бонусных)
1.3.4. Жесткий диск
1.3.4. Жесткий диск Жесткий диск (он же HDD, Hard Disk Drive, винчестер и «винт») используется, как вы уже знаете, для постоянного хранения информации. Информация с жесткого диска никуда не исчезнет при выключении питания. Жесткий диск — это не только электронное, но и механическое
Жесткий диск
Жесткий диск Давайте вспомним, что нам уже известно о жестком диске (Hard Disk Drive, HDD). Винчестер – основное хранилище информации в компьютере. В отличие от оперативной памяти, жесткий диск является энергонезависимым устройством. Это означает, что он способен хранить
Жесткий диск
Жесткий диск Жесткий диск[8] (рис. 3.4) используется для по стоянного хранения данных. Этим он отличается от других типов памяти, стоящих выше по иерархии (ОЗУ, кэш-память, регистры). Ведь при выключении компьютера все данные из них удаляются. Рис. 3.4. Жесткий диск для
Жесткий диск
Жесткий диск При использовании накопителей с несколькими жесткими дисками для защиты информации можно производить параллельную запись на несколько дисков (RAID-массивы). Таким образом, при выходе из строя одного диска записанная на нем информация может быть
Единый ключ, что правит всем
Единый ключ, что правит всем Автор: Киви БердВ длинной и поучительной саге о преодолении AACS, системы защиты контента на видеодисках высокой четкости, открыта, похоже, новая интересная глава. Как показали последние результаты анализа, коллективно проводимого участниками