четверг, 23 июля 2009 г.

Concepts are gone!!

Многие уже знают, но все равно: ошеломляющая новость!


Комитет по стандартизации C++ проголосовал за удаление механизма концептов из нового Стандарта Си++.

Вот ссылка, по которой рассказываются детали и обсуждаются причины и последствия:


Вот на что упал взгляд при первом чтении (перевод вольный):

В понедельник 13 июля на очередном заседании комитета по стандартизации С++ во Франкфурте по результатам голосования концепты были удалены из C++0x. Эта шокирующая новость вызывает множество вопросов и беспокойств... Когда я впервые об этом услышал, я просто не поверил... Концепты представляли собой наиболее существенное добавление в ядро С++ с 1998 года (с момента выпуска первого стандарта - Е.З.). В течение последних пяти лет обсуждение механизма концептов проходило на каждом заседании комитета... После десятков официальных сообщений, описаний и статей, посвященных представлению и продвижению концептов, казалось крайне маловероятным, что непосредственно перед финишной чертой, в результате драматического голосования этот механизм будет выброшен...

По-моему, это беспрецедентно: на самом последнем этапе стандартизации, когда даже редакторские правки в финальный текст вносятся неохотно, а голосование представляет собой формальность, сделать такое... Надо полагать, были на то весомые причины. Где-то было написано, что, мол, "никто из участников голосования не был счастлив от такого решения"...

Помимо очевидной важности этого события "вообще", оно непосредственно влияет и на мою работу: простите, ребята, я уже перевел почти сто страниц текста - громадный кусок главы 14 драфта!.. И что мне теперь, выкидывать все это? Помимо этого, упоминание концептов и понятий, к ним относящихся, разбросано по всему тексту стандарта - и теперь придется лазить по всему тысячестраничному тексту и все эти упоминания вычищать?..

9 комментариев:

Анонимный комментирует...

Мутные они эти концепты... Хотя такой крутой поворот конечно не радует. Возможно, это выкидывание задержит стандарт, а не ускорит.

Впрочем, не исключено, что поддержка концептов появится как расширение в каком-либо из компиляторов. Грабли, которые насобирают разработчики, помогут досконально продумать концепты (и, надеюсь, пройтись по ним бритвой Оккама).

Анонимный комментирует...

Неприятно, конечно.

Но опыт export подсказывает, что, может быть, лучше бы дождаться экспериментальных реализаций в популярных компиляторах, а уж потом утверждать в стандарте.

Анонимный комментирует...

Да, а вычищать - не надо, конечно; лучше оставить в виде приложения.

zouev комментирует...

Для legolegs
Ну, я бы не сказал, что они мутные: базисная идея понятна. Воплощение слишком закрученное. Хотели сделать гибче и мощнее, чем в других языках. И напридумывали многое "из головы", а не из практики.

А поддержка будет, я согласен. В gcc уже сейчас что-то есть.

Unknown комментирует...

На мой взгляд, перевод частей стандарта, связанных с концептами выкидывать не следует. Стоит пометить (в сноске, в комментариях) что на последнем этапе они выкинуты.... Т.е. оставить всё как есть.

Вудруф комментирует...

Это естественный риск при переводе черновика. Именно поэтому выпускать перевод до выпуска стандарта ни в коем случае нельзя - могут быть ещё какие-нибудь изменения. Выкидывать надо, ибо это будет уже не перевод стандарта, а нечто другое.
Возможно, описание концептов, как они выглядели в черновике, можно выложить отдельной статьёй - пусть все свободно читают.

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

Alex Che комментирует...
Этот комментарий был удален автором.
Alex Che комментирует...

Появятся ли концепты в новом стандарте (1x) - вопрос открытый. И если появятся, то не понятно, будут ли они дорабатываться, или наоборот - урезаться. А вполне возможно - будут переписаны заново.
Судя по всему, исключение концептов из стандарта - это меньшее зло, чем введение сырой спецификации на, ни много ни мало, фундамент нового использования парадигмы мета-программирования C++.
В любом случае, как пишет Саттер, убрать концепты из текущей версии стандарта в условиях нехватки времени проще. Кроме того, и без них останется много полезного и вкусного.

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

Andrey Agibalov комментирует...

По-моему, вполне адекватно было бы проигнорировать это событие и сделать концепты по спецификации драфта в виде "нестандартных расширений".