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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28 29 3031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 7th, 2026 05:27 pm
Powered by Dreamwidth Studios