Содержание

Предисловие к первому изданию

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

Первоначально Си был спроектирован Деннисом Ритчи как инструмент написания операционной системы UNIX для машины PDP-11 и реализован в рамках этой операционной системы. И операционная система, и Си-компилятор, и, по существу, все прикладные программы системы UNIX (включая и те, которые использовались для подготовки текста этой книги (имеется в виду оригинал этой книги на английском языке. — Примеч. пер.)) написаны на Си. Фирменные Си-компиляторы существуют и на нескольких машинах других типов, среди которых IBM/370, Honeywell 6000 и Interdata 8/32. Си не привязан к конкретной аппаратуре или системе, однако на нем легко писать программы, которые без каких-либо изменений переносятся на другие машины, где осуществляется его поддержка.

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

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

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

Вдумчивая критика и предложения многих друзей и коллег были очень полезны для книги и помогали нам ее писать. В частности Майк Бианки, Джим Блу, Стью Фелдман, Дуг Макилрой, Бил Рум, Боб Разин и Ларри Рослер с вниманием прочли все многочисленные варианты этой книги. Мы в долгу у Ала Ахо, Стива Бьерна, Дана Дворака, Чука Хейли, Марион Харрис, Рика Холта, Стива Джонсона, Джона Машея, Боба Митца, Ральфа Мухи, Питера Нельсона, Эллиота Пинсона, Била Плейджера, Джерри Спивака, Кона Томпсона и Питера Вайнбергера за полезные советы, полученные от них на различных стадиях подготовки рукописи, а также Майку Леску и Джо Оссанне за помощь при подготовке ее издания.

Бриан В. Керниган,
Деннис М. Ритчи.