Основная причина использовать C ++ вместо управляемого языка в наши дни - это получить преимущества, которые C ++ приносит. Один из столпов C ++ - «вы не платите за то, что вам не нужно». Однако можно возразить, что иногда вы не хотите платить за обратную совместимость с C. Многие странные особенности C ++ можно отнести к этой обратной совместимости. Какие еще существуют языки, где «вы не платите за то, что вам не нужно», включая обратную совместимость с C?
Правка / пояснение: настоящий убийца для меня во втором предложении. Есть ли язык, действительно разработанный с нуля, который не навязывает вашему коду то, чего вы не хотите? В C ++ есть философия дизайна: не хотите RTTI? Его не существует. Не хотите вывоза мусора? Его там нет. Проблема с C ++ в том, что он (IMO) нарушает это требование, когда отказывается оторваться от прошлого. Я не хочу, чтобы проблема обратной совместимости с кодом 20-летней давности мешала мне двигаться вперед. C ++ не хочет этого делать. Что есть / есть?
Edit2: Полагаю, я должен был более четко понять, что такое стоимость. Есть несколько потенциальных затрат. Первоначально я сосредоточился на затратах времени выполнения.
В C ++ полиморфизм виртуальных методов имеет свою цену. Но не все методы окупаются. Невиртуальный метод C ++ вызывается с той же стоимостью выполнения, что и обычная старая функция C (имеющая хотя бы один параметр). C ++ не требует использования полиморфизма. В других языках ООП все методы являются виртуальными, поэтому нельзя избежать затрат на полиморфизм.
Затраты времени выполнения являются наиболее важными, но другие затраты смягчают это. Очевидно, что язык ассемблера будет иметь наименьшие накладные расходы времени выполнения, но затраты на написание и обслуживание языка ассемблера - огромный удар по нему.
Имея это в виду, идея состоит в том, чтобы найти языки, которые предоставляют полезные абстракции, которые, когда они не используются, не влияют на затраты времени выполнения.
C + 1 - styled
. ;) Также посмотрите на гуглGo
. - person Hamish Grubijan   schedule 07.06.2010