yurikhan: (Default)

[personal profile] yurikhan 2015-10-25 05:08 am (UTC)(link)
Мне нравится метафора Lawful Evil компилятора: обязан во всём соблюдать стандарт, но в остальном направлен на то, чтобы как можно больше испортить жизнь разработчику. Имеет INT, достаточный для решения любых вычислительных задач, не являющихся доказанно алгоритмически неразрешимыми.

[identity profile] beldmit.livejournal.com 2015-10-25 10:12 pm (UTC)(link)
Мне понравилась идея похоронить концепцию Undefined Behavior.
yurikhan: (default)

[personal profile] yurikhan 2015-10-26 02:44 am (UTC)(link)

Это где такое придумали и как собираются не похоронить при этом платформозависимые оптимизации?

Не, даже не так. Как избежать необходимости вводить платформозависимые пессимизации?

Вот, к примеру, код:

int foo = некое не-constexpr выражение,
    потенциально возвращающее std::numeric_limits<int>::max();
++foo;

Что должен здесь генерировать компилятор для платформы с представлением отрицательных чисел, отличным от того, которое мы примем за стандартное (скорее всего two’s complement)?

Edited 2015-10-26 03:11 (UTC)

[identity profile] beldmit.livejournal.com 2015-10-26 07:36 am (UTC)(link)
Придумали это в рассылке cryptography. Автор, кажется, предлагал всегда крэшиться, но я мог и перепутать, поскольку эту ветку читал недостаточно внимательно.
yurikhan: (Default)

[personal profile] yurikhan 2015-10-26 11:22 am (UTC)(link)
Возможно, что для целей криптографии нужен язык с другими приоритетами, чем у C.

[identity profile] beldmit.livejournal.com 2015-10-26 11:41 am (UTC)(link)
Или дополнения в стандарт.
yurikhan: (Default)

[personal profile] yurikhan 2015-10-26 12:40 pm (UTC)(link)

Если в стандартах C и C++ доопределить все места, где сказано «undefined behavior», это уже будут другие языки. Потому что та спецификация, которая получится, не будет реализуема в рамках принципа нулевого/минимального оверхеда, который является для них одним из основополагающих.

В начале 2000-х были попытки Managed C++ и потом C++/CLI. Не взлетели. (А C# взлетел. Но это тоже совсем другой язык, который выбирают другие люди и за другие причины, чем выбирают C и C++.)

Вот, кажется, оригинальное письмо.

[identity profile] beldmit.livejournal.com 2015-10-26 10:39 am (UTC)(link)