LINUX.ORG.RU

История изменений

Исправление 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])) 

можно использовать безопасный