Пособие по практике программирования



       японская косметика купить |   

Пособие по практике программирования

Эта книга построена как раз на основных принципах, применимых к информационным технологиям на любом уровне. К таким взаимосвязанным принципам относятся: простота, благодаря которой программы остаются короткими и управляемыми, четкость и ясность, которые облегчают понимание программ и людям, и машинам, обобщенность, означающая, что программа способна корректно работать в широком диапазоне ситуаций и нормально адаптироваться к новым ситуациям, и автоматизация, которая позволяет передавать машине наиболее утомительные и скучные части нашей работы. Рассматривая программирование на различных языках, от алгоритмов и структур данных, через проектирование, отладку, тестирование, до улучшения производительности, мы иллюстрируем универсальные концепции, которые не зависят ни от языка, ни от операционной системы, ни от конкретного задания.
Книга родилась из нашего многолетнего опыта в написании и поддержке разнообразнейших программ, в преподавании программирования и в общении с большим количеством программистов. Мы хотим поделиться знаниями, приобретенными благодаря этому опыту, чтобы помочь программистам всех уровней работать более эффективно и профессионально.

Введение
В мире разнообразных интерфейсов, постоянно меняющихся языков, систем и утилит, под постоянным давлением обстоятельств мы зачастую теряем из вида главные принципы, которые должны быть основанием любой хорошей программы, — простоту, четкость и универсальность.

Стиль
Есть старое наблюдение, что лучшие писатели иногда пренебрегают правилами риторики. Однако, когда они это делают, читатель обычно находит в тексте какие-то компенсирующие достоинства, достигнутые ценой этого нарушения. Пока кто-то не уверен, что он сможет сделать то же самое, ему, вероятно, лучше всего следовать правилам.

Стиль
Пример 1.1
Имена
Пример 1.4
Пример 1.5
Пример 1.6
Упражнение 1-1
Пример 1.9
Выражения
Пример 1.11

Алгоритмы и структуры данных
Исследование алгоритмов и структур данных является одной из основ программирования, а также богатым полем элегантных технологий и сложных математических изысканий. И это — что-то большее, чем развлечение для теоретически подготовленных: хороший алгоритм или структура данных могут позволить решить в течение нескольких секунд проблему, которая без них решалась бы годы.

Хэш-таблицы
Пример 2.50
Пример 2.53
Пример 2.55
Пример 2.55 - 2
Упражнение 2-14
Упражнение 2-15
Упражнение 2-16
Упражнение 2-17
Заключение

Проектирование и реализация
Одним из аспектов этой точки зрения является то, что выбор конкретного языка программирования оказывается сравнительно неважным для общего проектирования. Мы сначала спроектируем программу абстрактно, а потом реализуем ее на С, Java, C++, Awk и Perl. Сравнив реализации, мы увидим, как тот или иной язык может облегчать или, наоборот, затруднять кодирование и в каких аспектах выбор языка не является важным. Выбранный для реализации язык может, конечно, чем-то украсить программу, но не доминирует в ее разработке.

Алгоритм цепей Маркова
Пример 3.2
Варианты структуры данных
Создание структуры данных в языке С
Пример 3.4
Пример 3.6
Пример 3.8
Пример 3.9
Пример 3.10
Пример 3.11

Интерфейсы
Интерфейсы: какой доступ и какой сервис предлагается? Интерфейс, в сущности, является соглашением между поставщиком (программистом) и потребителем. В идеале мы должны предоставлять унифицированные и удобные средства, имеющие достаточно возможностей для того, чтобы их было легко использовать, и в то же время не настолько большие, чтобы стать громоздкими.

Значения, разделенные запятой
Пример 4.1
Пример 4.2
Пример 4.4
Прототип библиотеки
Пример 4.5
Пример 4.8
Пример 4.6
Пример 4.8
Пример 4.7

Отладка
В предыдущих четырех главах мы продемонстрировали много различного кода и при этом притворялись, что весь этот код работал должным образом с первого раза. Естественно, это было не так: на самом деле было множество "багов". Слово "баг" появилось вовсе не среди программистов, но считается одним из самых распространенных терминов в программировании. Почему программирование столь сложно?

Отладчики
Хорошие подсказки, простые ошибки
Пример 5.1
Пример 5.2
Пример 5.4
Трудные ошибки, нет зацепок
Трудные ошибки, нет зацепок - 2
Трудные ошибки, нет зацепок - 3
Пример 5.6
Пример 5.7

Тестирование
Тестирование и отладка часто упоминаются вместе, однако это две разные вещи. Сильно упрощая, можно сказать, что отладкой называется то, что вы делаете, когда знаете, что программа не работает. Тестирование же — это последовательные, систематические попытки добиться ошибки от программы, которая считается работающей.

Систематическое тестирование
Систематическое тестирование - 2
Пример 6.16
Пример 6.17
Пример 6.17 - 2
Упражнение 6-4
Автоматизация тестирования
Пример 6.18
Пример 6.19
Пример 6.20

Производительность
Когда-то программисты затрачивали огромные усилия на то, чтобы сделать свои программы эффективными, так как компьютеры были очень медленными и очень дорогими. В наши дни компьютеры стали гораздо быстрее и сильно подешевели, так что необходимость в идеальной эффективности заметно снизилась. Стоит ли по-прежнему волноваться из-за производительности?

Узкое место
Пример 7.1
Пример 7.2
Пример 7.2 - 2
Пример 7.3
Пример 7.4
Пример 7.6
Пример 7.7. Код для построения этих таблиц весьма прост
Упражнение 7-1
Замеры времени и профилирование

Переносимость
Написать корректную и эффективную программу трудно. Поэтому если программа уже работает в одной среде, то вам, скорее всего, не захочется повторять пройденный путь ее создания при переходе на другой компилятор, процессор или операционную систему. В идеале программа не должна требовать внесения никаких изменений.

Язык
Язык - 2
Язык - 3
Пример 8.1
Пример 8.1 - 2
Пример 8.2
Пример 8.3
Пример 8.4
Пример 8.5
Заголовочные файлы и библиотеки

Нотация
Преимущества хорошей нотации — способа записи — появляются при переходе от традиционного программирования к узкоспециальным проблемным областям. Регулярные выражения позволяют использовать компактные (из-за этого подчас превращающиеся в тайнопись) описания классов строк. Язык HTML позволяет определять внешний вид интерактивных документов, нередко используя встроенные программы на других языках, вроде JavaScript. PostScript рассматривает целый документ — например эту книгу — как стилизованную программу. Электронные таблицы и текстовые процессоры часто содержат в себе языки программирования типа Visual Basic, они используются для вычисления выражений, доступа к информации, управления размещением данных в документе.

Форматирование данных
Пример 9.1
Пример 9.3a
Пример 9.4
Пример 9.6
Пример 9.7
Пример 9.9
Пример 9.10b
Пример 9.11
Пример 9.12

Приложения
Во многих главах были выделены правила или какие-то основные моменты, подводящие итог обсуждению. Для удобства поиска правила собраны здесь воедино. Не забывайте, что в соответствующих частях книги объясняется назначение и способы применения этих правил.

Стиль
Интерфейсы
Отладка
Тестирование
Производительность

Компьютерные игры. Как это делается.
Игры для взрослых вечеринок
Секреты программирования игр
Введение в программирование трехмерных игр с DX9
Ганичев Валерий - Росс Непобедимый
Тестирование софта - статьи
Гарднер Лиза - Куинси И Рейни
Гаррет Рэндал - Ипсвичский Фиал
Гарфилд Брайан - Жажда Смерти
Герман Юрий - Один Год
Гершкович Това - Новый Дом
Гидравлика. Конспект лекций
Самоучитель по Photoshop 7
Мир Internet - журнал для пользователей Сети
Говард Роберт & Де Камп Спрэг & Картер Лин - Дьявол Из Железа
Головачев Василий - Излом Зла
Горбачева Наталья - Лобовы
Горяинов Евгений - О Боге. Непротиворечивая Теория Бога
Межсетевое экранирование
Продвинутая 3D графика в пакете Maya