Шрифт:
27.1. Языки С и С++: братья
Мы рассматриваем язык С в основном как подмножество языка С++. Следовательно, с точки зрения языка С++ проблемы описания языка С сводятся к двум вопросам.
• Описать те моменты, в которых язык С не является подмножеством языка C++.
• Описать те свойства языка С++, которых нет в языке C, и те возможности и приемы, с помощью которых этот недостаток можно компенсировать.
В настоящее время практически повсеместно используется версия C89 (описанная во втором издании книги K&R [12] ). Именно эту версию мы излагаем в данном разделе. Помимо этой версии, кое-где все еще по-прежнему используется классический С, и есть несколько примеров использования версии C99, но это не должно стать проблемой для читателей, если они знают языки C++ и C89.
Языки С и С++ являются детищами Исследовательского центра компьютерных наук компании Bell Labs (Computer Science Research Center of Bell Labs), МюррейХилл, штат Нью-Джерси (Murray Hill, New Jersey) (кстати, мой офис находился рядом с офисом Денниса Ритчи и Брайана Кернигана).
12
Перевод на русский язык: Керниган Б., Ритчи Д. Язык программирования C, 2-е изд. — М.: ИД Вильямс, 2006.
Оба языка были разработаны и в настоящее время интенсивно используются для решения сложных программистских задач. Перечислим некоторые из них.
• Ядра операционных систем.
• Драйверы устройств.
• Встроенные системы.
• Компиляторы.
• Системы связи.
Между эквивалентными программами, написанными на языках С и С++, нет никакой разницы в производительности.
Как и язык C++, язык C очень широко используется. Взятые вместе, они образуют крупнейшее сообщество по разработке программного обеспечения на Земле.
27.1.1. Совместимость языков С и С++
• Простота перехода.
• Совместимость.
Многие свойства, оказавшиеся несовместимыми с языком С, объясняются тем, что в языке С++ существует более строгая проверка типов.
Примером программы, являющейся допустимой на языке С, но не на языке С++, является программа, в которой ключевые слова из языка С++ используются в качестве идентификаторов (раздел 27.3.2).
Примеры, в которых семантика конструкции, допустимой в обоих языках, отличается в них, найти труднее, но все же они существуют.
Строковый литерал, такой как
Информация, касающаяся совместимости и различий между языками, не так интересна. В языке С нет никаких изощренных методов программирования, которые стоило бы изучать специально. Вам может понравиться вывод данных с помощью функции