Язык программирования C (иногда называемый K&R , по инициалам его авторов) — книга по программированию, написанная Брайаном Керниганом и Деннисом Ритчи , последний из которых изначально разработал и реализовал язык программирования C , а также совместно разработал операционную систему Unix , с которой разработка языка была тесно переплетена. Книга сыграла центральную роль в разработке и популяризации C и до сих пор широко читаема и используется. Поскольку книга была написана в соавторстве с разработчиком оригинального языка, и поскольку первое издание книги в течение многих лет служило фактическим стандартом для языка, многие считали ее авторитетным справочником по C. [1] [2]
Язык C был создан Деннисом Ритчи в Bell Labs в начале 1970-х годов как расширенная версия языка B Кена Томпсона . [ 3] Другой сотрудник Bell Labs, Брайан Керниган , написал первый учебник по языку C, [4] и убедил Ритчи стать соавтором книги по этому языку. [5] Керниган написал большую часть «описательного» материала книги, а справочное руководство Ритчи стало ее приложениями.
Первое издание, опубликованное 22 февраля 1978 года, стало первой широкодоступной книгой по языку программирования C. Его версию C иногда называют K&R C (по именам авторов книги), часто для того, чтобы отличить эту раннюю версию от более поздней версии C, стандартизированной как ANSI C. [ 6]
В апреле 1988 года было опубликовано второе издание книги, обновленное с учетом изменений в языке, вызванных новым на тот момент стандартом ANSI C, в частности, с включением справочного материала по стандартным библиотекам . Второе издание книги (и по состоянию на 2024 год [обновлять]— самое последнее) с тех пор было переведено на более чем 20 языков. [7] В 2012 году электронная версия второго издания была опубликована в форматах ePub, Mobi и PDF. [8]
C был впервые стандартизирован в 1989 году (как ANSI X3.159-1989) и с тех пор претерпел несколько изменений. Однако не было выпущено ни одного нового издания The C Programming Language, которое охватывало бы более поздние стандарты.
Журнал Byte в августе 1983 года заявил: «[ Язык программирования C ] — это окончательная работа по языку C. Не читайте дальше, пока не получите эту книгу!» [1] Джерри Пурнелл написал в журнале в том году, что книга «все еще является стандартом... немного краткой». Он продолжил: «Вы можете изучить язык C, не читая Кернигана и Ритчи, но это будет трудным путем. Вы также слишком много работаете, если сделаете ее единственной книгой по C, которую вы купите». [9]
Язык программирования C часто упоминается как модель для технического письма , а рецензенты описывают его как имеющий четкое представление и краткое изложение. Примеры обычно состоят из полных программ того типа, с которым можно столкнуться при ежедневном использовании языка, с акцентом на системное программирование . Его авторы писали,
Мы попытались сохранить краткость первого издания. C — не большой язык, и ему не очень подходит большая книга. Мы улучшили изложение критических особенностей, таких как указатели, которые являются центральными для программирования на C. Мы усовершенствовали исходные примеры и добавили новые примеры в несколько глав. Например, обработка сложных объявлений дополнена программами, которые преобразуют объявления в слова и наоборот. Как и прежде, все примеры были проверены непосредственно из текста, который находится в машиночитаемой форме.
— предисловие ко второму изданию [10]
В книге представлена программа «Hello, World!» , которая печатает только текст «hello, world» в качестве иллюстрации минимальной рабочей программы на языке C. С тех пор многие тексты следовали этому соглашению для введения в язык программирования.
До появления ANSI C первое издание текста служило фактическим стандартом языка для авторов компиляторов C. Со стандартизацией ANSI C авторы более осознанно написали второе издание для программистов, а не для авторов компиляторов, написав,
Приложение A, справочное руководство, не является стандартом, а нашей попыткой передать суть стандарта в меньшем объеме. Оно предназначено для простого понимания программистами, но не как определение для авторов компиляторов — эта роль по праву принадлежит самому стандарту. Приложение B представляет собой сводку возможностей стандартной библиотеки. Оно также предназначено для справки программистами, а не разработчиками. Приложение C представляет собой краткую сводку изменений по сравнению с исходной версией.
— предисловие ко второму изданию [10]
Влияние языка программирования C на программистов, поколение которых впервые работало с C в университетах и промышленности, привело к тому, что многие приняли стиль программирования и соглашения авторов как рекомендуемую практику, если не нормативную практику. Например, стиль кодирования и форматирования программ, представленных в обоих изданиях книги, часто называют «стилем K&R» или «стилем One True Brace », и он стал стилем кодирования, используемым по соглашению в исходном коде для ядер Unix и Linux .