Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kernigan_paik.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.91 Mб
Скачать

7. Производительность 157

7.1. Узкое место....................................................................................................………158

7.2. Замеры времени и профилирование.....................................................………… 162

7.3. Стратегии ускорения.................................................................................…………166

7.4. Настройка кода...........................................................................................………. .169

7.5. Эффективное использование памяти...................................................………… 173

7.6. Предварительная оценка..........................................................................………….175

7.7. Заключение................................................................................. .................………. 178

Дополнительная литература..........................................................................…………..179

8. Переносимость 180

8.1. Язык.................................................................................................................……...181

8.2. Заголовочные файлы и библиотеки......................................................…………...186

8.3. Организация программы..........................................................................………….188

8.4. Изоляция........................................................................................................……….191

8.5. Обмен данными............................................................................................………..192

8.6. Порядок байтов.............................................................................................………..193

8.7. Переносимость и внесение усовершенствований.............................……………..197

8.8. Интернационализация........................................................................…………........199

8.9. Заключение...................................................................................................…………201

Дополнительная литература..........................................................................………….…201

9. Нотация 203

9.1. Форматирование данных..........................................................................…………...203

9.2. Регулярные выражения.............................................................................………… ..210

9.3. Программируемые инструменты...........................................................…………….216

9.4. Интерпретаторы, компиляторы и виртуальные машины..............……………… ..219

9.5. Программы, которые пишут программы.............................................……………...225

9.6. Использование макросов для генерации кода...................................……………….228

9.7. Компиляция "налету"...............................................................................……………229

Дополнительная литература...........................................................................……………233

Эпилог 234

Приложение: свод правил 236

Стиль.......................................................................................................................………..236

Интерфейсы..........................................................................................................…………236

Отладка.................................................................................................................……….....237

Тестирование........................................................................................................…………237

Производительность..........................................................................................…………..237

Переносимость.....................................................................................................…………238

Предисловие

редактора перевода

Программировать трудно. Программировать хорошо — очень труд­но. И о том, как нужно правильно программировать, пишут много. Но... сколько людей — столько мнений, и часто создатели очередной строй­ной системы программирования становятся жертвами этой стройности. Объявляют, например, что имена перемaенных должны быть осмыслен­ными, и пишут (не преувеличивая):

basicmatrix[basicmatrixrow, basicmatrixcolumn] :=

basicmatrix[basicmatrixrow, basicmatrixcolumn] + 1;

начинают следить за правильными отступами и превращают программу в бесконечную кишку; заявляют, что "структурное программирование" и "программирование без goto" — это синонимы, и "из принципа" уроду­ют программную логику, лишь бы извести опальный оператор.

Эта книга НЕ ТАКАЯ. В ней систематически изложен колоссальный опыт известных специалистов — известных авторов (в том числе авто­ров книг, переведенных на русский язык) и известных программистов (разрабатывавших ОС UNIX, язык программирования Си, язык скрип­тов AWK, систему полиграфической подготовки текстов TROFF, во многом повлиявшую на ТЕХ Д. Кнута), а также их многочисленных коллег. Книга учит тому, как надо программировать: как разрабатывать программу, как ее писать, как отлаживать, какие средства выбирать. Ин­тересно, что рекомендации даже слегка противоречат друг другу, тем самым делая невозможным их использование "оголтелыми пуристами". Сам стиль изложения, вся книга побуждают к разумному выбору сба­лансированных средств. С моей точки зрения, эта книга нужна каждому активно работающему программисту.

Может быть, мне она так понравилась потому, что, не будучи в состо­янии так красиво все это написать, по самим рекомендациям я был с ав­торами почти во всем согласен. Многим из этих рекомендаций я следую уже много лет, другие, новые для меня, оказывались вполне по душе и сразу же брались на вооружение. Все время хотелось восклицать "И я..." или "А я...", скажем: "И я предпочитаю отладчикам свои отладочные пе­чати", "А я еще использую отладочные печати, создающие ПостСкрип-товый файл". Некоторые из несдерживаемых эмоций нашли выход в примечаниях (все подстрочные примечания появились в книге в про­цессе перевода).

Я надеюсь, что "Практику программирования" ждет у российского

читателя не меньший успех, чем был (и есть) у других книг этих

авторов.

И. В. Романовский

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]