История изменений
Исправление www_linux_org_ru, (текущая версия) :
ухудшилось:
при таком знании с++ критиковать его это «я пастернака не читал, но осуждаю»
вот что я бы написал о недостатках перехода с си на с++ (о достоинствах ниже):
1. переход с си на с++ имеет недостатки для программиста, но эти недостатки меньше, чем при переходе с ассемблера на си, особенно учитывая то, что си остается доступен (имеется в виду переход в своем проекте)
2. по-моему самый серьезный недостаток вида «жри что дают и не выпендривайся» — это c++ ABI (в широком понимании) — манглинг, __gxx_personality_v0, формат указателя на члены класса, формат vtable и т.п. (да, это сковывает свободу выражения мыслей, но все же на практике можно жить без этого)
3. а вот на практике: при использовании плюсовых библиотек вместо сообщения об ошибке часто могут вываливаться кишки библиотеки, которые разбирать и понимать бесполезно (с точки зрения затрат времени); справедливости ради — в си тоже похожее иногда может быть, если некая фича реализована макросами или об ошибке сообщает линкер (а не компилятор), но там масштаб проблемы куда меньше; впрочем, если начнут использоваться новые фичи си (позволяющие использовать в макросах информацию о типах), то си начнет подтягиваться к с++
несмотря на все это, я не представляю, с чего вдруг я бы начал проект на чистом си; более того, если бы это пришлось делать, я бы за пару дней слабал какие-то костыли на макросах/перле, делающие возможным использование плюсовых подходов
к примеру, даже если использовать с++_без_классов_и_исключений, то все равно это лучше чем си в том смысле, что вместо опасного кода
#define LENGTH(array) (sizeof(array)/sizeof(array[0]))
можно использовать безопасный
Исправление www_linux_org_ru, :
ухудшилось:
при таком знании с++ критиковать его это «я пастернака не читал, но осуждаю»
вот что я бы написал о недостатках перехода с си на с++ (о достоинствах ниже):
1. переход с си на с++ имеет недостатки для программиста, но эти недостатки меньше, чем при переходе с ассемблера на си, особенно учитывая то, что си остается доступен
2. по-моему самый серьезный недостаток вида «жри что дают и не выпендривайся» — это c++ ABI (в широком понимании) — манглинг, __gxx_personality_v0, формат указателя на члены класса, формат vtable и т.п. (да, это сковывает свободу выражения мыслей, но все же на практике можно жить без этого)
3. а вот на практике: при использовании плюсовых библиотек вместо сообщения об ошибке часто могут вываливаться кишки библиотеки, которые разбирать и понимать бесполезно (с точки зрения затрат времени); справедливости ради — в си тоже похожее иногда может быть, если некая фича реализована макросами или об ошибке сообщает линкер (а не компилятор), но там масштаб проблемы куда меньше; впрочем, если начнут использоваться новые фичи си (позволяющие использовать в макросах информацию о типах), то си начнет подтягиваться к с++
несмотря на все это, я не представляю, с чего вдруг я бы начал проект на чистом си; более того, если бы это пришлось делать, я бы за пару дней слабал какие-то костыли на макросах/перле, делающие возможным использование плюсовых подходов
к примеру, даже если использовать с++_без_классов_и_исключений, то все равно это лучше чем си в том смысле, что вместо опасного кода
#define LENGTH(array) (sizeof(array)/sizeof(array[0]))
можно использовать безопасный
Исходная версия www_linux_org_ru, :
ухудшилось:
при таком знании с++ критиковать его это «я пастернака не читал, но осуждаю»
вот что я бы написал о недостатках перехода с си на с++ (о достоинствах ниже):
1. переход с си на с++ имеет недостатки для программиста, но эти недостатки меньше, чем при переходе с ассемблера на си, особенно учитывая то, что си остается доступен
2. по-моему самый серьезный недостаток вида «жри что дают и не выпендривайся» — это c++ ABI (в широком понимании) — манглинг, __gxx_personality_v0, формат указателя на члены класса, формат vtable и т.п.
3. при использовании плюсовых библиотек вместо сообщения об ошибке часто могут вываливаться кишки библиотеки, которые разбирать и понимать бесполезно (с точки зрения затрат времени); справедливости ради — в си тоже похожее иногда может быть, если некая фича реализована макросами или об ошибке сообщает линкер (а не компилятор), но там масштаб проблемы куда меньше; впрочем, если начнут использоваться новые фичи си (позволяющие использовать в макросах информацию о типах), то си начнет подтягиваться к с++
несмотря на все это, я не представляю, с чего вдруг я бы начал проект на чистом си; более того, если бы это пришлось делать, я бы за пару дней слабал какие-то костыли на макросах/перле, делающие возможным использование плюсовых подходов
к примеру, даже если использовать с++_без_классов_и_исключений, то все равно это лучше чем си в том смысле, что вместо опасного кода
#define LENGTH(array) (sizeof(array)/sizeof(array[0]))
можно использовать безопасный