"Мелкие недостатки", накапливаясь, создают барьер для эффективного практического использования языка. Если у программиста половина времени будет уходить на промпты к какому-нибудь ИИ вида "Я хочу сделать ХХХ, а оно вот так не компилируется. Как это правильно написать?", ничего хорошего из этого не выйдет.
Когда не компилируется - это еще полбеды. Хуже, когда написана какая-то ересь, которая сразу и не скажешь, как работает - ну типа вашего примера. Еще хуже, когда компилируется и делает что-то неожиданное. Типа
vector x(2); - создает вектор [0,0]
vector x{2}; - создает вектор [2]
С++ полон таких мин и сиплюсплюсники, похоже, жутко гордятся знанием их карты и умением их обходить :) А некоторые с удовольствием изобретают новые :D
Это, конечно, смешно, но книгу "Ошибки-ловушки при программировании на Х", наверное, можно написать практически про любой индустриальный язык Х. Начиная как минимум с Фортрана.
Изобретают новые мины весьма некоторые люди, это да.
Ну и давно пора перестать использовать этот гибрид ужа с ежом - портабельного ассембелра с языком высокого уровня. Используйте Rust если нужен zero-runtime cost. (который у C++ кстати ни разу не zero) и что-нибудь интерпретируемое в остальных случаях.
Да-да, сейчас всё брошу и начну переписывать миллионы строк на Rust. (Или всё брошу и начну уговаривать менеджмент уговорить SWE department всё бросить и обеспечить инфраструктуру для cross-language development.)
Reply
vector x(2); - создает вектор [0,0]
vector x{2}; - создает вектор [2]
С++ полон таких мин и сиплюсплюсники, похоже, жутко гордятся знанием их карты и умением их обходить :) А некоторые с удовольствием изобретают новые :D
Reply
Изобретают новые мины весьма некоторые люди, это да.
Reply
Ну и давно пора перестать использовать этот гибрид ужа с ежом - портабельного ассембелра с языком высокого уровня. Используйте Rust если нужен zero-runtime cost. (который у C++ кстати ни разу не zero) и что-нибудь интерпретируемое в остальных случаях.
Reply
Reply
Reply
Адресная арифметика.
Reply
Reply
Leave a comment