From: Sergey Matveev Date: Wed, 10 Nov 2021 07:57:07 +0000 (+0300) Subject: Си должен умереть X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=725aff6b7afa6fb0cea24d13d3733d21a984618b;p=stargrave-blog.git Си должен умереть http://cmustdie.com/ От Столярова (d026b3c3e20a717c7fd8aad8f5377c4fc4b90d0b) узнал про этот сайт, прочитал. Согласен что со всеми этими undefined behaviour жопа. Но, в конце есть выдержка диалога одного из разработчиков GCC (Andrew Pinski), который своим изменением (якобы) поломал кучу кода. Вот с ходу, честно говоря, я на стороне этого Пински полностью. Уж извините, но тот факт, что масса людей написала security-critical код полагаясь не шибко корректно -- это их проблемы. С какого чёрта компилятор должен думать о fail-ах кучи остальных людей и делать по умолчанию совместимость с их поведением? Есть отдельный флаг -fwrapv, но включать его по умолчанию, с какой стати? Да, с каждой новой версией компилятора и прочего, я считаю нормально проверять что в них изменилось и как теперь надо править параметры сборки для своего не очень корректного кода. Более того, задумываться о возможности переполнения мне тоже приходилось, когда я начинал писать на Си. И у меня почти идентичный код как у Пински получился. Ибо только так у меня была чёткая уверенность что оно будет отрабатывать как я ожидаю без подвохов. Но я согласен что сам факт этих дискуссий и ругани, в первую очередь, говорит плохо о стандарте Си, из-за которого вообще возможны такие эксцессы. Но, блин, аргументы про Ариан-5 -- говорят только об идиотизме людей которые пишут на столь опасных языках такой опасный код. Вообще риторика felix-gcc -- хамская и вообще удивительно как Пински спокойно отвечает и реагирует на это, попутно показывая *как* надо проверять на переполнение. ---