Constexpr — большое благо, выраженное в неправильной идее (Евгений Клименков, ISPRASOPEN-2019)
Материал из 0x1.tv
- Докладчик
- Евгений Клименков
Введение спецификатора “constexpr” в новом стандарте языка С++ (C++11) породило волну интереса к теме выполнения функций во время компиляции в сообществах связанных с языками программирования. В данном докладе рассмотривается и анализируется эта языковая конструкция и показывается, что хотя само выполнение функций во время компиляции является очень ценным методом оптимизации, его явная поддержка с помощью специального спецификатора на уровне языка програмирования является неверным решением.
В докладе демонстрируется что вычисления во время компиляции должны применяться компилятором в полностью автоматическом режиме и прозрачно для программиста. Наконец, в докладе предлагается принцип проектирования языков программирования согласно которому “язык программирования не должен включать в свой состав конструкции и элементы, которые представляют собой исключительно позитивные оптимизационные подсказки компилятору.
The introduction of the “constexpr” feature in the C++11 standard has raised a great interest in the compile-time function execution in the programming languages communities. In this paper, we evaluate this feature and argue that while the compile-time evaluations are valuable optimization methods, its explicit support on the level of a programming language is a wrong decision. We show that compile-time evaluations must be enforced by the compiler automatically and transparently to the developer. Finally, we propose a programming language design principle stating that positive optimization “hints” must not be a part of programming language.
Видео
Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.
Презентация
Примечания и ссылки
Plays:116
Comments:1