LINUX.ORG.RU
Форум — Talks  

Черновик стандарта C++26 официально отклонён

 , обломинго


0

6

Вроде не видел тут этой новости. Если простыми слововами: на последнем шаге перед официальным принятием стандарта, при голосовании, C++26 был отклонён, не набрав минимальные соотв. 2/3 «за» и максимальные 25% «против». Это беспрецедентное событие, потому что все предыдущие версии стандатов C++ прошли этот этап голосования положительно. Против проголосовали: Дания, Финляндия, Иран, Италия, Япония, Люксембург, Румыния, Испания и Швеция.

Камень преткновиния - контракты. Хотя черновик спецификации контрактов для C++26 определяет варианты реакции на нарушение контрактов (ignore, observe, enforce, quick-enforce), какая именно выбирается, зависит от реализации (в gcc флагом компиляции). Но это не всё. Не определено, что может пойти не так в процессе вычисления самого контракта, и как на это реагировать компилятору и рантайму. Голосовавшие против указывают на то, что нет достаточного (для решения данных вопросов) опыта индустрии, и потому такое определение контрактов не приемлемо.

Дальше во второй половине ноября, в Бразилии состоится новая встреча комитета, где будут решать, выкинуть ли контракты опять, либо провести голосование повторно, либо принять контракты в статусе TS (экспериментальной части языка).

А как же индустриальный опыт Айфеля? Айфельстудию продают за 50 долларов в месяц коммерцоидам. И уже хрен знает, с какого года, язык в 1985г. появился.

★★★★★

Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от Lrrr

Но это все сторонние проекты, не имеющие отношения к гуглу.

Сторонние проекты, которые возможны и работают.

seiken ★★★★★
() автор топика
Ответ на: комментарий от seiken

И кстати Conan в артефактори тоже поддерживается. При том, что вроде как не MS (вбухавшая столько средств в разработку своих инструментов для C++, что пришедший .NET хоронил-хоронил старичка плюсовичка, и так и не смог похоронить его) создала Conan.

Это я к тому, что есть две крайности в отношение Корп: 1) у-у-у, бездельники, прожигают бюджеты, занимаясь какой-то хренью! и 2) лучше бы занимались хренью, а то опять эти психопаты запилили вендорлокинг, и нас всех скоро закуют в кандалы! Я предпочитаю более сдержанную позицию.

seiken ★★★★★
() автор топика

Да, дедушке пора о душе подумать, а он всё о бабах. Эх, срамота.

yvv1 ★★
()
Ответ на: комментарий от seiken

как ты соберёшь проект в версии без энфорсинга контрактов простым изменением одной настройки

Дедушкин assert передаёт привет.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

перечитай весь ветку, многократно уже писали, чем ассерты принципиально отличаются от контрактов

seiken ★★★★★
() автор топика
Ответ на: комментарий от seiken

Очень интересно. Оказывается, годами assert был непригоден к использованию из-за проблем с препроцессором. И вообще препроцессором пользоваться нельзя, сплошной ногострел. Как же мы жили все эти годы…

Ты написал какую-то обобщенную чушь про препроцессор. Еще раз, конкретный вопрос. Что мешает написать свои контракты на коленке, и чем они будут хуже зашитых в язык?

Подсказываю, есть ровно 2 пункта, которые можно упомянуть в ответе на данный вопрос. Также можно написать «я не знаю», это тоже валидный ответ.

Siborgium ★★★★★
()
Ответ на: комментарий от seiken

ассерты принципиально отличаются от контрактов

Вообще не отличаются. Нет никакой проблемы стандартизировать статическую проверку через тот же синтаксис если очень хочется. Как-то компилятор соображает например, что цикл нужно анроллить, никто специальный синтаксис для этого не выдумывает. Точно также можно и ассерты проверять компайлтайм (с минимальным допилом).

no-such-file ★★★★★
()
Ответ на: комментарий от Siborgium

Очень интересно. Оказывается, годами assert был непригоден к использованию из-за проблем с препроцессором.

Да, мне тоже интересно, где я такое написал…

seiken ★★★★★
() автор топика
Ответ на: комментарий от upcFrost

Я спешил, и криво выразился. Способ выбора зависит. Т.е. может быть флаг компиляции или какая-то магия со спец. директивой препроцессора…

seiken ★★★★★
() автор топика
Ответ на: комментарий от Siborgium

Сишечный препроцессор древнючее говно говна, от которого вообще по хорошему надо бы избавиться в плюсах.

WatchCat ★★★★★
()
Ответ на: комментарий от Begemoth

property-based testing

А это тут причём? В контрактах ты кратко прописываешь ожидаемые эффекты после испольнения данного метода. В данном случае после put, методы hasKey и get становятся контрактом для проверки. Тесты уже генерируют полный код провеки для метода put на основе установленных тобой контрактов.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от seiken

То есть вы вместо #ifdef или if constexpr предлагаете захардкодить опциональное включение кода для определённых ключевых слов? Это же чушь какая-то получается. Я не вижу никакого смысла в этих «контрактах» на уровне синтаксиса языка. Это прекрасно делается на уровне библиотек тем, кому это надо. Всё равно 99% разработчиков C++ этими контрактами пользоваться не будут и это приведёт только к очередному усложнению и заторможению компиляторов.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему: только для зарегистрированных, score>=50.