Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет22/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   18   19   20   21   22   23   24   25   ...   256
Сравнение языков С++ и С 
Выбор С в качестве базового языка для С++ объясняется следующими его достоинствами: 
(1) универсальность, краткость и относительно низкий уровень; 
(2) адекватность большинству задач системного программирования; 
(3) он идет в любой системе и на любой машине; 
(4) полностью подходит для программной среды UNIX. 
В С существуют свои проблемы, но в языке, разрабатываемом "с нуля" они появились бы тоже, а 
проблемы С, по крайней мере, хорошо известны. Более важно то, что ориентация на С позволила 
использовать язык "С с классами" как полезный (хотя и не очень удобный) инструмент в течение первых 
месяцев раздумий о введении в С классов в стиле Симулы. 
С++ стал использоваться шире, но по мере роста его возможностей, выходящих за пределы С, вновь и 
вновь возникала проблема совместимости. Ясно, что отказавшись от части наследства С, можно 


Бьерн Страуструп.
Язык программирования С++ 
 
16 
избежать некоторых проблем (см., например, [15]). Это не было сделано по следующим причинам: 
(1) существуют миллионы строк программ на С, которые можно улучшить с помощью С++, но 
при условии, что полной переписи их на язык С++ не потребуется; 
(2) существуют миллионы строк библиотечных функций и служебных программ на С, которые 
можно было бы использовать в С++ при условиях совместимости обоих языков на стадии 
связывания и их большого синтаксического сходства; 
(3) существуют сотни тысяч программистов, знающих С; им достаточно овладеть только новыми 
средствами С++ и не надо изучать основ языка; 
(4) поскольку С и С++ будут использоваться одними и теми же людьми на одних и тех же 
системах многие годы, различия между языками должны быть либо минимальными, либо 
максимальными, чтобы свести к минимуму количество ошибок и недоразумений. Описание С++ 
было переработано так, чтобы гарантировать, что любая допустимая в обоих языках 
конструкция означала в них одно и то же. 
Язык С сам развивался в последние несколько лет, что отчасти было связано с разработкой С++ [14]. 
Стандарт ANSI для С [27] содержит, например, синтаксис описания функций, позаимствованный из 
языка "С с классами". Происходит взаимное заимствование, например, тип указателя void* был 
придуман для ANSI С, а впервые реализован в С++. Как было обещано в первом издании этой книги, 
описание С++ было доработано, чтобы исключить неоправданные расхождения. Теперь С++ более 
совместим с языком С, чем это было вначале ($$R.18). В идеале С++ должен максимально 
приближаться к ANSI C, но не более [9]. Стопроцентной совместимости никогда не было и не будет, 
поскольку это нарушит надежность типов и согласованность использования встроенных и 
пользовательских типов, а эти свойства всегда были одними из главных для С++. 
Для изучения С++ не обязательно знать С. Программирование на С способствует усвоению приемов и 
даже трюков, которые при программировании на С++ становятся просто ненужными. Например, явное 
преобразование типа (приведение) , в С++ нужно гораздо реже, чем в С (см. "Замечания для 
программистов на С" ниже). Тем не менее, хорошие программы на языке С по сути являются 
программами на С++. Например, все программы из классического описания С [8] являются 
программами на С++. В процессе изучения С++ будет полезен опыт работы с любым языком со 
статическими типами. 


Достарыңызбен бөлісу:
1   ...   18   19   20   21   22   23   24   25   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет