О «назальных демонах» и стандартах языка С
Все языки развиваются. Новые фичи появляются после долгих и, хочется надеяться, взвешенных дискуссий. И с каждой новой итерацией, с каждым новым стандартом язык становится, предположительно, все более надежным, понятным и безопасным.
Но если сверить это со статистикой?
В стандарте ANSI C существует такое понятие как undefined behavior — термин, который дает компилятору некоторую свободу поведения (или кодогенерации) в определенных ситуациях. Это породило шутки о назальных демонах — «When the compiler encounters [a given undefined construct] it is legal for it to make demons fly out of your nose».
Иногда неопределенное поведение обусловлено желанием дать свободу оптимизации (например, переполнение знакового числа — это то самое undefined behavior, ведь может быть разное представление знака). Иногда неопределенное поведение описывают ситуацию глубокого заблуждения программиста (не стреляйте себе в ногу, переопределяя setjmp). 👇
Post #33
1.45K

- 👍 2