суббота, января 27, 2007

C++09

C++0x теперь надо называть C++09. Комитет по стандартизации решил, что новый стандарт C++ будет в 2009. Отступать им уже некуда, C++010 уже не получается из C++0x заменой икса на цифру. Поэтому в 2007 году будут рассматриваться ранее присланные предложения, дорабатываться старые. Новые приниматься не будут. В 2008 финальный документ будет отдан на стандартизацию в ISO. А в 2009 у нас будет новый стандарт.

Чем больше я смотрю на предложения по стандарту и работу над ними, тем больше они мне нравится. Еще по книге D&E видно как Страуструп тщательно подходит к разработке языка. Чтобы ни в коем случае не сломать ничей код. Чтобы обеспечить обратную совместимость, старается не вводить новые ключевые слова. Каждое новое предложение по языку тщательно обдумывается и рассматривается со всех сторон. А не сломает ли его претворение в жизнь что-либо старое? А не выйдет ли боком в дальнейшем? Можно ли как-то добиться того же самого эффекта без реализации этого предложения? Насколько сложно это будет реализовать разработчикам компиляторов? После прочтения этой книги мое уважение к Страуструпу удвоилось.

Поскольку цель введения нового стандарта - это предоставление программистам более удобного и современного инструмента для работы, а не что-нибудь вроде Порабощения Вселенной, то результат обещает быть хорошим. Многие вещи просто напрашивались. Как например использование ключевого слова volatile для обеспечения доступа к переменной из разных потоков. (Сейчас это не так!) Кстати, когда я писала про C++0x, в комментариях было высказано предположение, что вот, да пока его примут, да пока компиляторы напишут... В VC++2005 volatile уже так и работает. Много внимания уделяется многопоточному программированию. Сейчас для стандартизации рассматривается библиотека: Multithreading API for C++0X - A Layered Approach. Планируется введение ключевого слова atomic для атомарных операций.

После прочтения у меня не было ощущения "ну вот, придется все заново учить". Будет принято много новых полезных вещей, которые облегчат мне работу, в дополнение к уже имеющимся. Будут устранены мелкие шероховатости. Я подумываю разобраться поподробнее с новыми волшебными фичами C++. Чтобы к моменту выхода нового стандарта быть уже во всеоружии. Ну и конечно написать о них несколько постов. Но все это будет чуть позже, когда предложения по стандарту примут более законченный вид.

Ссылки по теме:
State of C++ Evolution
Wikipedia: C++0x
C++09: Proposals by Statuses
Bjarne Stroustrup's homepage

14 коммент.:

Qbit, true-indian.livejournal.com комментирует...

Еще по книге D&E видно как Страуструп тщательно подходит к разработке языка. Чтобы ни в коем случае не сломать ничей код. Чтобы обеспечить обратную совместимость, старается не вводить новые ключевые слова.
Это, имхо, спорная позиция. Смысл её, в принципе, понятен, в том же D&E доступно разжёван. Мне очень приятно за Си-программистов и Си-style C++-программистов, что Страуструп и Комитет о них заботятся. Но получается, что они не заботяться обо мне! :) Я ведь не прораммирую на Си и не поддерживаю очень старый код! (Более того, я не люблю Си, я фанат C++.) Но из-за всего этого груза "обратных совместимостей", язык захламляется всякими устаревшими deprecated-возможностями. Куча книг по C++ учат не программированию, а обходным манёврам при борьбе с C++. Сколько там страниц в Стандарте? Тысяча? Это нездоровая канитель, что язык так сложен. Что в нём так много исключений из правил, и всяких тёмных углов. Но у Комитета на первом месте обратная совместимость :( Будет время, надо будет покопать в сторону языка D, как потенциальной альтернативы, наиболее близкой к C++.

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

Мне очень приятно за Си-программистов и Си-style C++-программистов, что Страуструп и Комитет о них заботятся. Но получается, что они не заботяться обо мне! :)

Тут я писала об обратной совместимости с C++98 скорее. Но с С тоже есть, да.

Но из-за всего этого груза "обратных совместимостей", язык захламляется всякими устаревшими deprecated-возможностями.

Страуструп пишет, что deprecated будут постепенно выводиться из языка.

Сколько там страниц в Стандарте? Тысяча?

748 в моем экземпляре. :-)

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

Меня все же это до такой степени не напрягает. Думаю, что С++ не сохранил бы свою популярность так долго, если бы не борьба Страуструпа за обратную совместимость.

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

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

На мой взгляд проблема не в том, обеспечивать ее или нет. Конечно надо обеспечивать. И конечно не навсегда, когда-нибудь неудачные решения таки надо исключать. Но проблема в том, что это измеряется десятилетиями, а не годами. У отдельно взятого поколения программистов почти не шансов дожить до улучшенного языка.

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

Более того, я не люблю Си, я фанат C++
Не все такие фанаты по С++. Я пишу смешанно на С и С++ и собираюсь продолжать в том же духе.
Куча книг по C++ учат не программированию, а обходным манёврам при борьбе с C++. Сколько там страниц в Стандарте? Тысяча? Это нездоровая канитель, что язык так сложен. Что в нём так много исключений из правил, и всяких тёмных углов.
Согласен, но ничего лучше не придумали. Вообще здесь нужна хорошая среда программирования, для отслеживания этих углов. Такой пока нет :(
Но проблема в том, что это измеряется десятилетиями, а не годами. У отдельно взятого поколения программистов почти не шансов дожить до улучшенного языка.
Это все из-за коктейлей :) Любят они не спешно их потягивая о чем то рассуждать. А вообще чего ждать от бюрократической организации? Досадно что после того как Торвальд показал что бюрократы для разработки не нужны, они попрежнему правят нами.

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

Это все из-за коктейлей :) Любят они не спешно их потягивая о чем то рассуждать.

Я более-менее слежу за разработкой C++09 и у меня не сложилось впечатление, что комитет работает неэффективно. Просто там действительно _очень_ много работы. Поскольку люди, принимающие там решения - это люди вроде Страуструпа и Саттера, я не думаю, что они умышленно или случайно затягивают процесс.

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

C++010 уже не получается из C++0x заменой икса на цифру.

С++ 0А

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

С++ 0А

:-)))
Муж мне тоже уже ядовито предложил такой вариант.

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

Great minds think alike(комментарий от анонима про 0А был мой).

У отдельно взятого поколения программистов почти не шансов дожить до улучшенного языка.

Как-то в джава-мире все проще: все же можно дождаться изменений... В джаве есть такая фича - jcp - java community process program: http://jcp.org . Люди выдвигают фичи, которые они хотят, потом они как-то обсуждаются, за них голосуют - и в итоге они принимаются/отклоняются. Как-то так, в общих чертах: подробностей я точно не знаю, мне все же пока еще рано выдвигать новые фичи:-) Ну, там на сайте все должно быть написано, как можно подать заявку. В фичах может быть и новое API, и изменения языка, типа некоего аналога шаблонов... И как-то обычно не так уж и долго все это. Ну, относительно, конечно. А как делают в С++? Что-то 11 лет - это как-то скучновато(если 98 - это год принятия предыдущего стандарта)...

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

Люди выдвигают фичи, которые они хотят, потом они как-то обсуждаются, за них голосуют - и в итоге они принимаются/отклоняются... А как делают в С++?
Говорят, можно отправить свои предложения/реализации на boost.org, там они стописят лет рассматриваются и отклоняются, потому что автор допустил в реализации Самую Страшную Ошибку — забыл в одном месте const :) А ежели библиотека понравится, и на Бусте приживётся, то там глядишь — и в tr1 попадёт, а там и в Стандарт, и пол-века не пройдёт :)

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

А ежели библиотека понравится, и на Бусте приживётся, то там глядишь — и в tr1 попадёт, а там и в Стандарт, и пол-века не пройдёт :)

:-)
Во злыдни ядовитые, а...

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

А у нас в Питоне новые версии языка выходят раз в 2-3 года. Причем как-то и с обратной совместимостью все хорошо, и с миграцией вперед тоже.

Хотя конечно нам проще в том, что нет зоопарка реализаций. Сам язык выпускается именно в виде продукта (интерпретатора), а не стандарта. А всякие ответвления откровенно экспериментальны.

P.S. Это я просто так, язык показать, можно не комментировать :-P

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

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

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

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

Судя по тому, что я читала, комитету очень не нравится, что программисту приходится выбирать из зоопарка разных библиотек для поддержки многопоточности. Поэтому комитет хочет стандартизовать нечто единое и к тому же еще и кроссплатформенное. То есть цель комитета - облегчить жизнь программисту. Удастся ли им это - время покажет.

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

То есть цель комитета - облегчить жизнь программисту. Удастся ли им это - время покажет.
Угу..эти мастдаи из комитета уже облегчили .. жизнь .. приняв С99 несовместимый с С++ (свой булевый тип + элементы ООП, если не ошибаюсь).
Страуструп пишет, что deprecated будут постепенно выводиться из языка.
Интересно, как ему это удастся не нарушая совместимости с С++98
Более того, я не люблю Си, я фанат C++.
Такое впечатление, что комитет имеет "тайную цель"- каждая возможность которой небыло в Си должна содержать баг (а лучше несколько) и конфликтовать с другими фичами.
Будет время, надо будет покопать в сторону языка D, как потенциальной альтернативы, наиболее близкой к C++
ИМХО, стоит покопать в сторону "нового Си" от Ритчи - Limbo - нормальные объекты (т.е. с возможностью безопасно перебрать содержимое объекта в рантайме), сборка мусора и что-то из функционального программирования
описание на www.vitanuova.com/inferno/papers/limbo.html (полсотни страниц). На первый взгляд штука куда более продуманная и гибкая чем С++ (98, 09, 20, ..).
ИМХО комитет сам "хорошо" делает только неповоротливых монстров какими были Алгол68 ПЛ/1 и стал Си98++ (типа "всё в одном и больше вам не надо никаких библиотек")