Является ли C / C ++ одним языком или двумя языками?

Является ли C / C ++ одним языком или двумя языками? Я слышал, что C ++ был просто C с классами. Это правильно?

31

Решение

C ++ отошел от C в 1982-1983 годах, и это долгое время в компьютерные годы. Но есть много библиотек C с совместимостью с C ++, включая саму стандартную библиотеку C, и постоянный поток программ переносится с C на C ++. Многие программисты на C знают или используют только те функции, которые совместимы с C ++.

Они определяются различными стандартами ISO от отдельных комитетов. Даже когда они определяют совместимые функции, это часто определяется другими терминами.

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

67

Другие решения

«C / C ++» — это как раз ноль языков. Не существует.

С другой стороны, C — это язык.

C ++ — это другой язык, который похож на C, но также имеет классы и много других отличий.


Чтобы быть ясным, @Zoidberg был на месте:

C и C ++ — два совершенно разных языка. C with Classes был предшественником C ++, но этот термин все еще часто используется для не современного C ++ (например, который использует необработанные указатели повсеместно).

34

Это два языка. Называть C ++ «C с классами» — все равно что называть слона четвероногим животным. Это кажется правдой, пока вы не сравните это с мышью.

Есть много языков, которые происходят от C: C ++, Java, C #, JavaScript, csh, этот список можно продолжить. Все они разные во многих отношениях, но имеют одинаковый синтаксис.

Конечно, C получен из B. Но это другая история (и никто больше не заботится о B.)

23

Простой ответ: два языка

Это два разных языка, хотя почти любой C-код является допустимым (не обязательно хорошим) C ++ -кодом.

Сначала C ++ считали «C, но с классами», но с течением времени он все больше и больше отличался, и теперь C-код очень плохой C ++-код. Вы можете изучать C или C ++ или оба, но вы обычно не путайте их (но вы можете).

12

C / C ++ — это два языка. C — это один язык, а C ++ — другой. С ++ считается «лучшим». С — процедурный, тогда как С ++ — объектно-ориентированный. C ++ имеет много улучшений по сравнению с C и имеет синтаксис, аналогичный C.

4

Это два разных языка. C ++ назван так потому, что его часть основана на C и в некотором смысле совместима с C.

Согласно «Эффективному C ++» Скотта Майерса, мы можем рассматривать C ++ как унифицированный язык со следующими 4 компонентами:

  1. Часть языка C, блоки, операторы, препроцессор и т. Д.
  2. Ориентированный на C ++: включая класс, инкапсуляцию, наследование, полиморфизм и т. Д.
  3. Шаблон C ++: включая шаблоны C ++, метапрограммирование
  4. STL.

Так что C ++ в некотором смысле более мощный, чем C.

4

Имя «C» относится к семейству родственных языков, некоторые из которых оформлены как международные стандарты. Они включают К&R C, ANSI C, C99, а также C11.

Имя «C ++» относится к семейству родственных языков, некоторые из которых оформлены как международные стандарты. Они включают
C ++, 98,
C ++ 03,
C ++ 11,
C ++ 14,
и предположение C ++ 17.

Термин «C / C ++» используется многими людьми неофициально ссылаться на пересечение C и C ++, которое было намеренно поддерживается дизайнерами C ++.

Непосредственный предшественник C ++ изначально назывался «C with Classes». Это подробно описано в книге Бьярна Страуструпа 1994 года «Дизайн и развитие C ++» (а также Вот). В конце концов имя было изменено на «C ++», в основном из-за любезности сообщества C, потому что людям стало слишком заманчиво сокращать «C with Classes» до просто «C» или «new C».

Есть много языковых возможностей в C ++, которых нет в C (обратное верно в меньшей степени). В частности, модель на основе классов, из-за своей способности вызывать неявные вызовы функций настолько мощен, что C ++ (довольно органично) развил высокоуровневые стили программирования, которые обычно используют C ++ сильно отличается чем тот из C. Наиболее заметные примеры этого связаны с концепцией, называемой Приобретение ресурсов — это инициализация, который воплощен в стандартных классах
строка, вектор, а также shared_ptr а также потоковые классы стандартная библиотека ввода / вывода.

Другие заметки:

2

ИМХО, я думаю, что ответ в том, что C / C ++ — это не один язык, а два, которые:

  • C язык программирования
  • Язык программирования C ++

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

Ссылка

1
По вопросам рекламы [email protected]