Информация об изменениях

Сообщение Re[42]: Разработка на чистом C от 19.11.2016 19:36

Изменено 19.11.2016 20:00 _smit

Здравствуйте, antropolog, Вы писали:

A>Здравствуйте, so5team, Вы писали:


S>>b) таки приведете примеры реальных проблем с enable_if, с которыми может столкнуться обычный C++ разработчик (а не контрибьюторы STL, Boost, Folly, Eigen и др. хардкорных библиотек).


A>"обычный C++ разработчик" не знает об enable_if от слова совсем. И слава богу.


это не "обычный C++ разработчик", а "джуниор C++ разработчик". Знать желательно, использовать необязательно.

A>Т.к. шаблоны дальше библиотек общего назначения вылазить не должны.


никто не запретит вам так думать.


A>Давайте я перечислю чем С лучше C++.


A>- на порядок легче изучить


да!

A>- на порядок проще анализировать ( как тулзами так и человеком )


нет! Мне на порядок сложнее. Часто встречался с такой ситуацией, что сам с-шник не мог понять, что он напрограммировал, особенно с параноидальным желанием с-шников писать код "быстро работающий" (преждевременная оптимизация), и "маленький" код, включая сокращения имен (писать без гласных) да так, что сами потом не могут вспомнить что эти имена означают и нужна ли теперь эта переменная.

Поэтому с-шники так боятся программировать в команде. Им кажется, что только они могут написать код без багов, а коллеги только его ухудшают по объёму, скорости и предсказуемости работы.

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

A>- на порядок меньше результирующий бинарный код


не на порядок. Тогда asm -- наше всё.

A>- на порядок меньше аллокаций в куче ( из за общего подхода к разработке и интрузивных контейнеров )


Не на порядок. И вообще не является достоинством С. И есть ли такое требование в проекте -- не аллоцировать в куче? Если есть такое требование, то могу на С++ написать код не работающий с кучей, и вообще работающий только в кеше процессора, включая и все данные, аллоцированные в кеше процессора.

A>- стабильный ABI

A>- элементарный байндинг к другим языкам

да.

A>- абсолютно предсказуемый execution flow (из-за отсутствия исключений)


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

A>- унифицированный стиль разработки. Две программы на С гораздо более похожи по стилю, конвенциям и вообще подходу, нежели две программы на C++


больше определяется культурой разработки, стандартом предприятия, зрелостью программистов и не зависит, это С или С++ программа.

A>- практически все разработчики на C знают язык хорошо. "Разработчик C++" это очень размытое понятие, там где один использует "С с классами" второй вовсю использует шаблонную магию. Там где один использует new, другой использует vector. Там где один использует исключения, другой не использует. Итд.


да.

A>С не хуже С++, и не лучше. Это другой инструмент. Это скальпель. Вы им не нарубите лес, но сможете провести ювелирную операцию.


да.
Re[42]: Разработка на чистом C
Здравствуйте, antropolog, Вы писали:

A>Здравствуйте, so5team, Вы писали:


S>>b) таки приведете примеры реальных проблем с enable_if, с которыми может столкнуться обычный C++ разработчик (а не контрибьюторы STL, Boost, Folly, Eigen и др. хардкорных библиотек).


A>"обычный C++ разработчик" не знает об enable_if от слова совсем. И слава богу.


это не "обычный C++ разработчик", а "джуниор C++ разработчик". Знать желательно, использовать необязательно.

A>Т.к. шаблоны дальше библиотек общего назначения вылазить не должны.


никто не запретит вам так думать.


A>Давайте я перечислю чем С лучше C++.


A>- на порядок легче изучить


да! но элементарную алгебру тоже на порядок легче изучить чем высшую математику, не следует же из этого, что элементарная алгебра лучше высшей математики.

A>- на порядок проще анализировать ( как тулзами так и человеком )


нет! Мне на порядок сложнее. Часто встречался с такой ситуацией, что сам с-шник не мог понять, что он напрограммировал, особенно с параноидальным желанием с-шников писать код "быстро работающий" (преждевременная оптимизация), и "маленький" код, включая сокращения имен (писать без гласных) да так, что сами потом не могут вспомнить что эти имена означают и нужна ли теперь эта переменная.

Поэтому с-шники так боятся программировать в команде. Им кажется, что только они могут написать код без багов, а коллеги только его ухудшают по объёму, скорости и предсказуемости работы.

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

A>- на порядок меньше результирующий бинарный код


не на порядок. Тогда asm -- наше всё.

A>- на порядок меньше аллокаций в куче ( из за общего подхода к разработке и интрузивных контейнеров )


Не на порядок. И вообще не является достоинством С. И есть ли такое требование в проекте -- не аллоцировать в куче? Если есть такое требование, то могу на С++ написать код не работающий с кучей, и вообще работающий только в кеше процессора, включая и все данные, аллоцированные в кеше процессора.

A>- стабильный ABI

A>- элементарный байндинг к другим языкам

да.

A>- абсолютно предсказуемый execution flow (из-за отсутствия исключений)


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

A>- унифицированный стиль разработки. Две программы на С гораздо более похожи по стилю, конвенциям и вообще подходу, нежели две программы на C++


больше определяется культурой разработки, стандартом предприятия, зрелостью программистов и не зависит, это С или С++ программа.

A>- практически все разработчики на C знают язык хорошо. "Разработчик C++" это очень размытое понятие, там где один использует "С с классами" второй вовсю использует шаблонную магию. Там где один использует new, другой использует vector. Там где один использует исключения, другой не использует. Итд.


да.

A>С не хуже С++, и не лучше. Это другой инструмент. Это скальпель. Вы им не нарубите лес, но сможете провести ювелирную операцию.


да.