Сообщение 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>С не хуже С++, и не лучше. Это другой инструмент. Это скальпель. Вы им не нарубите лес, но сможете провести ювелирную операцию.
да.
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>С не хуже С++, и не лучше. Это другой инструмент. Это скальпель. Вы им не нарубите лес, но сможете провести ювелирную операцию.
да.
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>С не хуже С++, и не лучше. Это другой инструмент. Это скальпель. Вы им не нарубите лес, но сможете провести ювелирную операцию.
да.