Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Разница между Си и Си++

Панк Ленин Ученик (160), закрыт 9 лет назад
Поправьте меня, если я вдруг где ошибаюсь.
Да, я знаю, что Си и Си++ -это РАЗНЫЕ языки, хоть и синтаксис их очень сильно похож, вплоть до того, что иногда встречаются книги с названием "Учебник по С/С++". Меня интересуют различия. Пытаюсь понять, но нигде не могу найти толкового разъяснения.
Я так понял, что Си++ -это язык, который взял за основу Си и проапгрейдил его до возможностей объектно-ориентированного программирования. На нём стало проще писать прикладные приложения, но за объектно-ориентированность пришлось заплатить меньшей гибкостью, язык стал более "костным", т. е. в результате апгрейда исчезли некоторые плюшки, приятные СИшникам. Но в целом этот практически тот же СИ. Верно или нет?

Подскажите, пожалуйста. Я просто в этом вопросе рачина, что пипец просто, а мне никто так и не объяснит толком=(
Дополнен 9 лет назад
УПД.: Если Си++ -это тот же Си, только улучшенный, то тогда почему в рейтинге популярности языков программирования Си занимает 1-е место, а Си++ -только 4-е?
Лучший ответ
Хулиганов Иосиф Искусственный Интеллект (293211) 9 лет назад
Б. Страуструп называл С++ поначалу как "С с классами". Т. е. С++ это С с возможностью разработки объектно-ориентированного кода. Практически все, что есть в С, заложено и в С++. Но за дополнительные возможности приходится платить. Поэтому объектный и исполнимый код на С, откомпилированный компилятором С++, как правило, тяжелее и неповоротливее, чем такой же, но полученный С-компилятором. И там, где компактность приложения и скорость его работы критична, там без колебаний отказываются от возможностей ООП и используют С вместо С++.
Остальные ответы
Krab Bark Искусственный Интеллект (296419) 9 лет назад
Почти совсем верно. На самом деле "плюшек" исчезло очень мало, и то в большинстве компиляторов они вставлены и в C++, хотя и не входят в его стандарт.
Различия (не расширения) посмотри, например, тут:
http://www.c-cpp.ru/books/razlichie-mezhdu-s-i-s
Я бы добавил еще VLA (Variable Length Array), не включенные в стандарт C++, хотя по факту, как и всё остальное, они часто допускаются компиляторами.
Мудрец (15751) 9 лет назад
> за объектно-ориентированность пришлось заплатить меньшей гибкостью
Ни разу не пришлось. Никто не мешает писать на С++ приложения хоть вообще без ООП, либо применять ООП только когда считается нужнм. Точно так же можно использовать всю сишную библиотеку и вообще смешивать Си и С++ как кажется нужным, в т. ч. в пределах одного проекта и даже файла исходного кода.
Вот в C# и Java - ООП обязательно, и библиотека может использоваться только своя, а библиотека Си или С++ использоваться не может.

---

Синтаксис у всех ЯП - достаточно прост, и в общих чертах не отличается.
Везде есть условия, циклы, функции (или хотя бы goto) и т. д.

Различия же начинаются на уровне: массивов, циклов, структур, классов, пространств имен, типов значений...
То есть на уровне того, что относится не столько к синтаксису. сколько к ПЛАТФОРМЕ И БИБЛИОТЕКЕ языка.

И еще больше различий - на уровне платформы и библиотек в общепринятом смысле слова.
Главное в любом ЯП - именно библиотеки (то есть наборы готовых функций, классов и т. д., используемых при написании программ) - как стандартная библиотека, так и альтернативные и сторонные.
Критерий заточенности реализации ЯП для конкретных целей и вообще актуальности ЯП - именно наличие и качество библиотек.

И главное развитие между Си и С++ -опять же в библиотеках.
На Си невозможно работать с .NET и сторонними .NET-библиотеками.
На Си невозможно работать с Qt (во всяком случае, полноценно).
На Си невозможно работать с VCL.
Список можно продолжать.
И это и есть главная причина не использовать Си под виндой, а использовать С++.
Лиля КалидеПросветленный (27030) 9 лет назад
Чуток "ДА" и чуток "НЕТ"
Lisp или PROLOG ну ни разу не срастаются с "в общих чертах они не отличаются"))
Лиля КалидеПросветленный (27030) 9 лет назад
если смотреть только на ветку выросшую из наследников процедурных типа "С". там разницы почти нет.
а в списочных, реляционных, итеративных.. -ну там иногда похоже а иногда иначе
Лиля КалидеПросветленный (27030) 9 лет назад
про жуткий список
"На Си невозможно работать с... "
Окстись!
Вполне возможно!
Он всё это поддерживает.
Просто не всегда удобно писать доступ к нестандартным библиотекам
Мудрец (15751) Да ладно? И каким же образом? Чем компилировать сишное приложение под .NET? Я уж молчу о том, что все стоящие WYSIWYG-конструктор GUI работают только с ООП и поэтому GUI все равно придется писать на C++, а не Си, а значит и все приложение будет компилироваться в режиме С++.
Лиля Калиде Просветленный (27030) 9 лет назад
"С++" по определению включает в себя "С"
и все плюшки из С можно использовать в С++, хотя многие не рекомендуются.
И прога на "С" годится в "С++"

НО!!
У них идеология разная!

в С вообще нет понятия объекта -он на функциях. Так что никаких классов и методов.

Ближайшее в Сиплюсовому классу там "структура". но в ней в принципе не предусмотрено методов. это просто способ объединения разнородных данных без углубления дальше.

Соответственно там и сами структуры прог строятся по разному. Хотя в С++ часто используются фишки из С. И даже наследуется синтаксис.
Ученик (106) 9 лет назад
UPD:
> это тот же Си, только улучшенный
Не улучшенный и точка, а лучше подходящий для БОЛЬШИНСТВА стандартных ЦЕЛЕЙ ВЫСОКОУРОВНЕВОЙ РАЗРАБОТКИ.

В низкоуровневой разработке Си по-прежнему удобнее и мощнее, а где-то вообще вне конкуренции, так как компиляторов каких-то других ЯП под ту платформу просто нет.

Рейтинги такого типа просто абсурдны.
Из них можно лишь узнать, на чем пишет больший процент, а на чем меньший, из общего числа программистов.
Но у разных программистов задачи разные.
И если китайских программистов, пишущих прошивки для тамагочи на Си или каком-нибудь брейнфаке, оказывается, больше, чем десктопных программистов на С++ (хотя б потому что китайцев вообще больше, чем многих других народов вместе взятых), то из этого никак не следует, что ВАМ на ДЕСКТОПЕ лучше использовать Си или брейнфак.
=Serge= Просветленный (36130) 9 лет назад
С++ предлагает свою парадигму программирования. Принимать ее тебе или нет - определяется твоими целями и работатодателем. Лучше это или хуже определять только после досконального изучения. Писать в процедурном стиле можно и в С++.Накоплены обширные библиотеки кода С, которые можно использовать и в С++.Короткие и утилитарные функции можно писать по старинке, на С, поэтому таких программистов больше.
Wolfbertfx Ученик (122) 9 лет назад
C++ это таже С, только с ООП. Так уж получилось что после функциональной сишки, программеров на ООП потянуло, вот из С и появились такие языки как С++ или Objective-C. На обоих этих языках можно писать обычный сишный код.
egregreh Мыслитель (8817) 9 лет назад
C++ более гибкий чем C. В C++ есть классы, объекты, в C только структуры.
Похожие вопросы