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
Еще по книге D&E видно как Страуструп тщательно подходит к разработке языка. Чтобы ни в коем случае не сломать ничей код. Чтобы обеспечить обратную совместимость, старается не вводить новые ключевые слова.
ОтветитьУдалитьЭто, имхо, спорная позиция. Смысл её, в принципе, понятен, в том же D&E доступно разжёван. Мне очень приятно за Си-программистов и Си-style C++-программистов, что Страуструп и Комитет о них заботятся. Но получается, что они не заботяться обо мне! :) Я ведь не прораммирую на Си и не поддерживаю очень старый код! (Более того, я не люблю Си, я фанат C++.) Но из-за всего этого груза "обратных совместимостей", язык захламляется всякими устаревшими deprecated-возможностями. Куча книг по C++ учат не программированию, а обходным манёврам при борьбе с C++. Сколько там страниц в Стандарте? Тысяча? Это нездоровая канитель, что язык так сложен. Что в нём так много исключений из правил, и всяких тёмных углов. Но у Комитета на первом месте обратная совместимость :( Будет время, надо будет покопать в сторону языка D, как потенциальной альтернативы, наиболее близкой к C++.
Мне очень приятно за Си-программистов и Си-style C++-программистов, что Страуструп и Комитет о них заботятся. Но получается, что они не заботяться обо мне! :)
ОтветитьУдалитьТут я писала об обратной совместимости с C++98 скорее. Но с С тоже есть, да.
Но из-за всего этого груза "обратных совместимостей", язык захламляется всякими устаревшими deprecated-возможностями.
Страуструп пишет, что deprecated будут постепенно выводиться из языка.
Сколько там страниц в Стандарте? Тысяча?
748 в моем экземпляре. :-)
Это нездоровая канитель, что язык так сложен. Что в нём так много исключений из правил, и всяких тёмных углов.
Меня все же это до такой степени не напрягает. Думаю, что С++ не сохранил бы свою популярность так долго, если бы не борьба Страуструпа за обратную совместимость.
Думаю, что С++ не сохранил бы свою популярность так долго, если бы не борьба Страуструпа за обратную совместимость.
ОтветитьУдалитьНа мой взгляд проблема не в том, обеспечивать ее или нет. Конечно надо обеспечивать. И конечно не навсегда, когда-нибудь неудачные решения таки надо исключать. Но проблема в том, что это измеряется десятилетиями, а не годами. У отдельно взятого поколения программистов почти не шансов дожить до улучшенного языка.
Более того, я не люблю Си, я фанат C++
ОтветитьУдалитьНе все такие фанаты по С++. Я пишу смешанно на С и С++ и собираюсь продолжать в том же духе.
Куча книг по C++ учат не программированию, а обходным манёврам при борьбе с C++. Сколько там страниц в Стандарте? Тысяча? Это нездоровая канитель, что язык так сложен. Что в нём так много исключений из правил, и всяких тёмных углов.
Согласен, но ничего лучше не придумали. Вообще здесь нужна хорошая среда программирования, для отслеживания этих углов. Такой пока нет :(
Но проблема в том, что это измеряется десятилетиями, а не годами. У отдельно взятого поколения программистов почти не шансов дожить до улучшенного языка.
Это все из-за коктейлей :) Любят они не спешно их потягивая о чем то рассуждать. А вообще чего ждать от бюрократической организации? Досадно что после того как Торвальд показал что бюрократы для разработки не нужны, они попрежнему правят нами.
Это все из-за коктейлей :) Любят они не спешно их потягивая о чем то рассуждать.
ОтветитьУдалитьЯ более-менее слежу за разработкой C++09 и у меня не сложилось впечатление, что комитет работает неэффективно. Просто там действительно _очень_ много работы. Поскольку люди, принимающие там решения - это люди вроде Страуструпа и Саттера, я не думаю, что они умышленно или случайно затягивают процесс.
C++010 уже не получается из C++0x заменой икса на цифру.
ОтветитьУдалитьС++ 0А
С++ 0А
ОтветитьУдалить:-)))
Муж мне тоже уже ядовито предложил такой вариант.
Great minds think alike(комментарий от анонима про 0А был мой).
ОтветитьУдалитьУ отдельно взятого поколения программистов почти не шансов дожить до улучшенного языка.
Как-то в джава-мире все проще: все же можно дождаться изменений... В джаве есть такая фича - jcp - java community process program: http://jcp.org . Люди выдвигают фичи, которые они хотят, потом они как-то обсуждаются, за них голосуют - и в итоге они принимаются/отклоняются. Как-то так, в общих чертах: подробностей я точно не знаю, мне все же пока еще рано выдвигать новые фичи:-) Ну, там на сайте все должно быть написано, как можно подать заявку. В фичах может быть и новое API, и изменения языка, типа некоего аналога шаблонов... И как-то обычно не так уж и долго все это. Ну, относительно, конечно. А как делают в С++? Что-то 11 лет - это как-то скучновато(если 98 - это год принятия предыдущего стандарта)...
Люди выдвигают фичи, которые они хотят, потом они как-то обсуждаются, за них голосуют - и в итоге они принимаются/отклоняются... А как делают в С++?
ОтветитьУдалитьГоворят, можно отправить свои предложения/реализации на boost.org, там они стописят лет рассматриваются и отклоняются, потому что автор допустил в реализации Самую Страшную Ошибку — забыл в одном месте const :) А ежели библиотека понравится, и на Бусте приживётся, то там глядишь — и в tr1 попадёт, а там и в Стандарт, и пол-века не пройдёт :)
А ежели библиотека понравится, и на Бусте приживётся, то там глядишь — и в tr1 попадёт, а там и в Стандарт, и пол-века не пройдёт :)
ОтветитьУдалить:-)
Во злыдни ядовитые, а...
А у нас в Питоне новые версии языка выходят раз в 2-3 года. Причем как-то и с обратной совместимостью все хорошо, и с миграцией вперед тоже.
ОтветитьУдалитьХотя конечно нам проще в том, что нет зоопарка реализаций. Сам язык выпускается именно в виде продукта (интерпретатора), а не стандарта. А всякие ответвления откровенно экспериментальны.
P.S. Это я просто так, язык показать, можно не комментировать :-P
Обьясните пожалуйста,так ли уж важна поддержка многопоточности в языке программирования.
ОтветитьУдалитьОбьясните пожалуйста,так ли уж важна поддержка многопоточности в языке программирования.
ОтветитьУдалитьСудя по тому, что я читала, комитету очень не нравится, что программисту приходится выбирать из зоопарка разных библиотек для поддержки многопоточности. Поэтому комитет хочет стандартизовать нечто единое и к тому же еще и кроссплатформенное. То есть цель комитета - облегчить жизнь программисту. Удастся ли им это - время покажет.
То есть цель комитета - облегчить жизнь программисту. Удастся ли им это - время покажет.
ОтветитьУдалитьУгу..эти мастдаи из комитета уже облегчили .. жизнь .. приняв С99 несовместимый с С++ (свой булевый тип + элементы ООП, если не ошибаюсь).
Страуструп пишет, что deprecated будут постепенно выводиться из языка.
Интересно, как ему это удастся не нарушая совместимости с С++98
Более того, я не люблю Си, я фанат C++.
Такое впечатление, что комитет имеет "тайную цель"- каждая возможность которой небыло в Си должна содержать баг (а лучше несколько) и конфликтовать с другими фичами.
Будет время, надо будет покопать в сторону языка D, как потенциальной альтернативы, наиболее близкой к C++
ИМХО, стоит покопать в сторону "нового Си" от Ритчи - Limbo - нормальные объекты (т.е. с возможностью безопасно перебрать содержимое объекта в рантайме), сборка мусора и что-то из функционального программирования
описание на www.vitanuova.com/inferno/papers/limbo.html (полсотни страниц). На первый взгляд штука куда более продуманная и гибкая чем С++ (98, 09, 20, ..).
ИМХО комитет сам "хорошо" делает только неповоротливых монстров какими были Алгол68 ПЛ/1 и стал Си98++ (типа "всё в одном и больше вам не надо никаких библиотек")