пятница, 22 мая 2020 г.

[work.sandness] Отказался от предложения Яндекс.Практикум поучаствовать в разработке нового обучающего курса по C++

С одной стороны безответственно браться за такое серьезное дело, когда сам не понимаешь доживешь ли до конца лета под грузом всех текущих планов и хотелок (не считая внезапных вбрасываний и форсмажоров, которые не предскажешь).

Но, главное, старого пса новым трюкам не обучишь. За многие годы программирования на C++ я привык к этому языку, набил шишки, научился не наступать на разбросанные там повсюду грабли. Уже даже свои мысли и идеи чуть ли не автоматически облекаешь в C++ные конструкции.

Но при этом всем я не знаю толком C++.

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

Вот такой вот парадокс: пишу на C++, как мне кажется, без проблем, но при этом экспертом по C++ не являюсь (от слова совсем). Особенно плохо знаю и умею применять действительно современный C++, т.к. не часто пока представлялась возможность работать именно на C++17.

Да и, по большому счету, накопилась изрядная усталость от C++. Если бы не тот большой объем наработок, которые наша маленькая компания успела сделать за последние годы именно на C++, которые, к моему удивлению и радости, постепенно получают признание, то я бы лично рискнул бы сменить C++ на что-то другое. На тот же Rust, скорее всего. Или же на C#.

Но столько сил, времени и средств было вложено в наши плюсовые разработки, что выгоднее оставаться в C++. Так что это больше "выбор по неволе", а не веление сердца.

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

Но вот обучать кого-то C++... Это уже нет. Староват-с

среда, 20 мая 2020 г.

[prog.c++] Собственные ощущения от выбора C++17 в 2018, 2019 и 2020 годах

Интересно, как меняется собственное ощущение от применимости C++17 с течением времени.

Два года назад, в 2018-ом, когда мы начинали делать демо-проект Shrimp, то выбор в пользу C++17 был достаточно рискованным. Типа, ну это же изначально эксперимент, не для продакшена, да и C++17 в условиях, максимально приближенных к боевым, надо осваивать.

Год назад, в 2019-ом, когда принималось решение делать SObjectizer-5.6 уже исключительно с расчетом на C++17, было ощущение, что это не самое лучше решение и часть потенциальных пользователей от SObjectizer-а это отвернет. Но зато оно оправдано с точки зрения перспективы. Все равно популяризация SObjectizer-а идет медленно, поэтому когда информация о SObjectizer-е разойдется более-менее широко, то C++17 уже не будет проблемой. Т.е. уже в 2019-ом выбор C++17 был не то, чтобы однозначно хорошим решением, но уж точно не рискованным.

Сейчас, в 2020-ом, мы начинаем делать прототип для нового решения сразу на C++17. И это уже воспринимается как само собой разумеющийся выбор. Благо у заказчика всего одна целевая платформа и на ней по дефолту доступен gcc-8.

Ну и еще раз повторю сказанное раньше неоднократно: попрограммировав немного на C++14 уже сложно возвращаться на C++11, хотя 14-е плюсы от 11-ых не сильно отличаются. Тоже самое ощущение и после программирования на C++17: на 14-й стандарт уже некоторая ломка :)

Какой из этого вывод?

Наверное, их два.

Во-первых, пора уже переставать считать C++11 современным C++ ;)

Во-вторых, времена меняются, сидеть по 10-15 лет на древних компиляторах C++, наверное, можно. Но тут нужно отдавать себе трезвый ответ на вопрос "А зачем мне это все нужно и оправдано ли это?"