а чем все-таки отличаются С и С++?

Тема в разделе "WASM.HEAP", создана пользователем dZentle_man, 23 окт 2010.

  1. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    Понятно, что в С++ введено много интересных и полезных языковых средств, но ведь и общность то языков сохранилась. Даже компилляторы, по крайней мере наиболее популярные из них, - и те гибридные. Так где же можно провести границу между ними, да еще и так, чтобы кричать что это настолько разные языки, что между ними нельзя ставить косую черточку при упоминании?
     
  2. sysexit

    sysexit New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2010
    Сообщения:
    176
    С++, ООП ЯП, этого мало?
     
  3. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    Разница становится ощутимой при прохождении собеседований на вакансии C программиста и С++ программиста.

    В качестве примера приведу простейшие вопросы по С++:

     
  4. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    dZentle_man
    разница в пародигмах программирования. у плюсов это процедурное, ооп и мета. у си это только процедурное. на плюсах можно писать в стиле си, но си дает больше свободы. в частности, на си можно написать: foo(a,b){return a+b;} bar(char *p){return foo(1,2, *p=0);} и это не будет ошибкой, хотя компилер скорее всего ругется матом, но все-таки это проглотит. на плюсах это уже не прокатит.

    ооп и мета-программирование -- изначально настраивают на решение задач в очень обобщенном виде и на абстракцию от конкретного контекста. плюс в том, что код получается более управляемый, масштабируемый и расширяемый. минус -- там где на си хватит и трех строк на плюсах будет полсотни.

    плюсы это не просто "си с классами" (как он назывался изначально). это самостоятельный язык с си синтаксисом. Java Script тоже внешне поход на си, но это же ни разу не си...
     
  5. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Тут хорошо написано:
    http://www.insidecpp.ru/art/1/
     
  6. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    dZentle_man
    C++ - это не слишком удачная попытка сделать из проблемного языка нормальный, не слишком меняя синтаксис. Разница между ними составляет примерно 3 раза (1100 страниц Страуструпа против ~400 КиР). А ещё вместо традиционных библиотек там модно использовать STL, руководство по правильному колдованию в которой тянет ещё на 600 страниц.
     
  7. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    KeSqueer
    > Тут хорошо написано:
    > http://www.insidecpp.ru/art/1/
    почитал. "бред" (с). мозги off. ну вот афффтор пишет, що надо абстрагироваться от всего, даже порядка байт в машинном слове. пускай даже ценой потери эффективности. но если так, то на фига нам вообще писать на плюсах? берем жабу -- там уже все что можно абстрагировано. так ведь нет -- не все можно сделать на жабе, ибо тормозная она. вот и приходится юзать плюсы...
     
  8. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    CyberManiac
    Я б сказал иначе: C++ -- это не слишком удачная попытка сделать из системного языка прикладной.
     
  9. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Я б сказал что вы не шарите программировании, но это бесполезно, такое говорить.
     
  10. osox

    osox New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2009
    Сообщения:
    280
    // мой скромный опыт говорит о ...
    1 ) C++ удобнее C для больших программ
    2 ) писать на нем приятнее опять же большие программы
    3 ) писать утилиты без разницы на чем
    4 ) профита от C++ не почувствуеш пока прога не перевалит ну хотя бы за 5000 строк
     
  11. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    Согласен, абсолютно корявая точка зрения, годная лишь для тех, кто ни в байтах, ни в машинных словах совершенно не шарит. Я так вообще читая код в подавляющем большинстве случаев в уме перевожу с С на асм, и без этого плевался бы от всего этого уровня абстракции.

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

    Я и в своих двух тысячах строк прекрасно чувствую профит. Что со мной не так? Вопрос риторический. Конечно все со мной так, просто я быстро понял какую пользу можно извлекать из деления на классы, а большинство даже это сделать не в состоянии. Хотя.. Мое видение классов помогли сформировать сорцы программ, на которых я учился.
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    dZentle_man
    Оптимизирующий компилятор в уме? Гениально. А как насчёт абстракций байт кода?
     
  13. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    Так, вот только не надо оффтопа.. Никаких оптимизирующих компиляторов, просто умозрительное представление того, что за собой должны скрывать сишные выражения. Хотя да, оптимизировать это безусловно помогает и не представляю как можно было бы оптимизировать без этого. А вообще, если хотите обсуждать всякие левые темы - создавайте свои топики с соответствующими названиями, здесь я опрашиваю чем отличается С от плюсов у людей, которые достаточно грамотны чтобы знать разницу.
     
  14. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    dZentle_man
    > Я так вообще читая код в подавляющем большинстве случаев в уме перевожу с С на асм
    вас не затруднит перевести #define MAX(a,b) ((a)<(b))?(b):dntknw:a)
    а еще пжласта int a,b; ... a = b/365.
     
  15. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    dZentle_man
    Зачем? Каков профит от этого?

    Извините, мне просто стало интересно посмотреть на человека - компилятора.
     
  16. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    #define MAX(a,b) ((a)<(b))?(b):dntknw:a) - это целое выражение, в таких выражениях я пожалуй и правда смотрю более абстрактно, переводя в уме только связующие операторы, например (a)<(b) я представляю как cmp a,b, зная что потом нужно проверить состояние флагов. А если мне нужно понять что скрывается за a и b - я смотрю их опеределение чтобы понять тип, а тип, например int - уже перевожу в уме в dword по умолчанию и реже в word. Как записать последнюю аналогию в машинных командах я и правда не особо представляю, да у меня и вопроса такого не возникает - достигнутого уровня ясности пока что хватало, хотя я понимаю, что для действительно сложного исследования порой нужно копать гораздо более глубоко.
     
  17. dZentle_man

    dZentle_man New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    414
    Booster
    Поздравляю, вы попали в мой личной игнор-лист) Отныне что бы вы не написали, мне этого не видно.

    spa
    А вы были одним из первых кандидатов в него, теперь официально зачислены.
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Вот жеж напугал.
     
  19. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    так у вас у самого большинство сообщений в хипе+бегиннерс.
    А кто кричит то? Все спокойно пишут себе на чем им удобно. А кричать мой язык круче, а ваш какашка -удел школоты)
     
  20. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    dZentle_man
    > например (a)<(b) я представляю как cmp a,b,
    а если это float и double, например? тоже будет cmp? а если компилер решит избавиться от ветвлений? более того, cmp это по сути sub, толко она не трогает приемника.

    > например int - уже перевожу в уме в dword по умолчанию и реже в word.
    нету здесь типа. это макрос (в плюсах был бы шаблон). типа _н_е_т_у_, ему по фиг какой тип.

    > Как записать последнюю аналогию в машинных командах я и правда не особо представляю,
    а то! это же матан. целочисленное деление на константу компилер будет стемиться заменить умножением. и там многоэтажные формулы для такой замены. ксати, вещественное деление быстрее на x86 :derisive: