vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2012-10-18 08:43 am

Плюсы C++

Тут сегодня в debian-russian кто-то высказался, что де у C++ есть плюсы и минусы. Минусов больше.
Не могу не согласиться. Я знаю целых два плюса C++. Оба - в названии.

[identity profile] max630.net 2012-10-18 07:41 am (UTC)(link)
> сильно увеличивается ... время выполнения

Ну это как писать. Если не плодить виртуальных объектов - будет как на C.

А для больших систем тормоза от языка слабо зависят. Гном без плюсов не сильно быстрее КДЕ с плюсами.

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

[identity profile] potan.livejournal.com 2012-10-18 07:49 am (UTC)(link)
Темплейты - очень удобный способ создавать огромный код и не помещающиеся в кеш объекты ;-).

[identity profile] max630.net 2012-10-18 08:37 am (UTC)(link)
Темплейты всё же лучше чем программирование на препроцессоре

Виртуальные вызовы тормозят независимо от языка, хоть на C их напиши, хоть на хаскеле. Тут уж надо выбирать, что надо - скорость или гибкость.
filin: (Default)

[personal profile] filin 2012-10-18 12:12 pm (UTC)(link)
На хаскеле их можно развиртуализовать на этапе компиляции.

[identity profile] max630.net 2012-10-18 12:23 pm (UTC)(link)
Это делается только в тех случаях когда тип можно определить на этапе компиляции.

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

[identity profile] taelhash.livejournal.com 2012-10-18 10:15 am (UTC)(link)
Э-э-э. Классы?

[identity profile] taelhash.livejournal.com 2012-10-18 10:27 am (UTC)(link)
В синтаксическом сахаре и всяких вкусностях типа конструкторов с деструкторами. Восход Солнца руками через структуры и функции - делал, больше не хочу.

Если придираться, то невиртуальное наследование (которого в C нет) тоже не лишено смысла и раза полтора в жизни мной использовалось. Если не придираться, а по существу — то умеренное использование виртуального к проблемам с быстродействиеми не приводят. То есть, в 99% чувствительный к скорости выполнения код обычно по архитектуре не способен содержать таких сущностей, которые вызывали бы у меня желание напендюрить туда виртуальных вызовов. Разве есть места, где не так?
ext_605364: geg MOPO4 (Default)

[identity profile] gegmopo4.livejournal.com 2012-10-18 03:55 pm (UTC)(link)
Например ради лучшего статического контроля. C++ даже 20-летней давности, без шаблонов и исключений, намного высокоуровнее Си (который чуть выше ассемблера). Пожалуй, даже Паскаля с наследниками обошёл. И при этом сохранил все низкоуровневые возможности.