Просмотров: 4830

4 распространенные мифа о родстве C/С++


Меня достали фразы в резюме типа «знаю язык C/C++», или попытки рассуждать о С как «всего лишь» подмножестве от С++ — я считаю, что это чудовищная ошибка. И я считаю, что это совершенно разные языки. Нет, правда.

Именно поэтому я решил накропать этот короткий пост, чтобы пользуясь случаем напомнить об этом.

C .vs C++

Миф номер 1. Есть такой язык программирования — «С/C++».

Нет такого языка программирования. Языки С и C++ имеют не так много общего. Да, действительно, язык C++ был создан под сильным впечатлением от С, но, повторюсь, несмотря на это, эти два языка — весьма разные.

Миф номер 2. Язык C++ является продолжением развития языка C.

С++ — это попытка создать на базе знакомого всем C язык с развитыми объектно-ориентированными возможностями, не более того.

С++ не является следующей версией языка С — это чушь. Кстати, если и говорить о развитии С, то его следующей версией официально является C1x.

Миф номер 3. Язык C++ обратно совместим с языком C.

В очень общем приближении — да. Даже более того, когда-то, согласен, это звучало здраво, но только не сегодня. Сегодня все эти void pointers и прочая ерунда делают эти языки во многом несовместимыми.

Миф номер 4. Если ты знаешь C++, ты автоматически знаешь и язык C.

Опять же, это полуправда. Ты можешь понимать синтаксис языка, но не будешь классным программистом (см. выше — потому что это всё-таки разные языки).

Язык C имеет очень большое количество ограничений и потенциальных опасностей, и чтобы обходить всё это, нужно иметь опыт программирования именно на нем. У C++ несколько другой подход, и он преодолевает эти ограничения часто по-другому.

Не надо, я вас умоляю, горячо уверять себя (и тем более других), что после программирования С++ вы сразу автоматически сможете писать хорошие и большие программы на С.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , ,
Эта запись опубликована: Четверг, 22 декабря 2011 в рубрике ЛитдыбрПрограммирование.

2 комментария

Следите за комментариями по RSS
  1. Полностью согласен! Сам начинал изучать C++ не зная C и сейчас могу сказать, что я C не знаю - не знаю как применять malloc/calloc/free, в C++ есть new/delete. Не знаю всех аргументов printf, т.к. в C++ есть cout. Не применяю #define. т.к. в C++ есть const, и т.д.

    Особенно удивляют люди, которые утверждают, что чтобы изучить C++ нужно предварительно изучить C.

  2. С 2 и 4 соглашусь, но не более того.

    А 1 и 3 по сути повторяют друг друга.

    Сравнение языков в 1-м пункте просто огонь.

    Про C - не объекто-ориентированный, не поддерживает ссылки и структуры это еще нормально.

    Используется scanf и printf для вывода - вот прямо очень характерная особенность языка. 6-й пункт это следствие того, что C не объекто-ориентированный. Отсутствие inline-функций, кхм, скорее всего для большего контроля за языком. Способ разбора и ядро и так очевидно.

    Про C++. Уже 2-й пункт. Хотя бы одна функция(main), да и содержится в каждой программе. 3-й пункт классы и объекты (может тогда просто объекты). 5-й пункт способ вывода на консоль (про потоки хоть бы написал, но в сравнении языков как таковых потоки не существенны). 10-й пункт следует из первого, хотя можно и писать прям как на C.

    В том списке деталей отличия мелкие - cpp представлен только как расширение.

    C++ это надстройка над С. Очень измененная и расширяющая базовые функции.

    Замена void* на cast'ы увеличивает скорость компиляции и уменьшает количество ошибок в коде в связи с некорректным приведением (только dynamic_cast это специальное требование для c++).

    >чтобы изучить C++ нужно предварительно изучить C.

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

    >в C++ есть new/delete

    в C++ есть умные указатели раз на то пошло.

    > в C++ есть const

    в C тоже есть const, только немного отличается в применении

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз