- PVSM.RU - https://www.pvsm.ru -
Возможно, я скажу банальную вещь, но прошедший год был хорошим годом для С++!
Просто факты:
А теперь об этом и другом немного подробнее
Компиляторы Clang, GCC и Intel Compiler имеют полную поддержку C++11.
В Visual Studio не хватает двух вещей: Expression SFINAE — N2634 [1] и C99 preprocessor — N1653 [2]
Clang и GCC полностью поддерживают C++14. А в общем дела обстоят так:

Изменения с прошлого года отмечены звёздочкой (*)
В Visual Studio 2015 компилятор С++ стал заметно ближе к полному соответствию стандарту, были реализованы Sized deallocation, атрибут [[deprecated]] и поддержка одинарной кавычки в качестве разделителя разрядов в числах.
Хороший прогресс показал и компилятор Intel — они добавили поддержку обобщённых лямбда-функций, инициализацию членов класса (включая агрегатную), плюс всё те же аттрибут [[deprecated]] и поддержку одинарной кавычки в качестве разделителя разрядов в числах.
Очевидно, большинство из нас ждёт этого грандиозного события, которое должно уже вот-вот произойти: стандартизации С++17! Да, компиляторам нужно ещё поработать над поддержкой С++11/14, но большинство фич уже реализованы или находятся на последних этапах реализации. Команды разработчиков всех основных компиляторов уже активно экспериментируют с некоторыми новыми фичами будущего стандарта С++17.
Но что включает в себя С++17?
Для полного понимания предмета лучше всего будет прочитать "Мысли по поводу С++17 [3]" от Страуструпа. Он выделил три основных приоритета:
Кроме того, С++17 запланирован быть мажорным релизом языка, т.е. кроме мелких апдейтов мы получим и нечто более крупное:
Вот отличный обзор [28] всех потенциальных возможностей С++17.
Те фичи, которые не успеют войти в С++17, войдут в следующий стандарт С++20, который планируется как минорный. С++20 отполирует С++17, как С++14 отполировал С++11.
На конференции CppCon в ключевой презентации Бьёрн Страуструп сделал важный анонс: Core Guidelines!
Полная версия гайдлайнов находится на GitHub [29], вот выдержка из вступления:
«С++ Core Guidelines являются результатом совместной работы группы авторов под руководством Бьёрна Страуструпа, как, собственно, и сам язык С++. В разработку этих рекомендаций вложено много человеко-лет труда людей из множества организаций. Дизайн данных гайдлайнов предполагает их общее применение и широкое распространение, что однако, не исключает ваше право скопировать и изменить их под нужды вашей организации.
Целью разработки данных инструкций является помочь людям использовать современный С++ эффективно. Под „современным С++“ мы подразумеваем С++11 и С++14 (а вскоре и С++17). Мы поможем представить вам как ваш код, который вы начнёте писать сегодня, будет выглядеть через 5 (или 10) лет.»
Поскольку язык становится богаче, современнеее (но в то же время и проще) будет очень полезно иметь такой справочник. Некоторые хорошо известные правила заменены новыми подходами — например, RAII. Переход на них не так прост, особенно, если вы поддерживаете старую кодовую базу и хотите добавить что-нибудь современное в свой код. Core Guidelines разрабатываются коллективно, а значит, должны стать достаточно практичным инструментом.
Речь Бьёрна Страуструпа:
Дополнение к ней от Херба Саттера:
В прошлом году прошли две встречи комитета по стандартизации С++: Кона в Октябре и Ленекса в Апреле.
Пару слов о весенней встрече:
И об осенней:
Намечены следующие встречи комитета по стандартизации в 2016-ом году: во Флориде в феврале и в Финляндии в июне (на этой встрече планируется голосование за стандарт С++17).
В прошлом году прошло две важных конференции: CppCon и MettingCpp
Первый доклад:
и второй:
Как мы видим, комитет по стандартизации С++ прилагает серьёзные усилия по работе над стандартом С++17. К концу года мы можем рассчитывать на принятие черновика этого стандарта. Разработчики чувствуют новую атмосферу перемен и это отражается в рейтингах популярности языка (в Tiobe Rank С++ набрал 8% [53]). Термин «ренессанс С++» уже не миф…
Что ещё лучше — у нас есть множество экспериментальных фич в компиляторах. Мы уже можем экспериментировать с модулями, концептами, корутинами… Это, конечно, пока не безопасно и не может быть применено в продакшн-коде, но в плане обучения и тестирования очень интересно. Кроме того, это даёт возможность получить некоторый фидбек, который может повлиять на финальную спецификацию всех этих вещей.
Команда разработчиков VisualStudio становится намного более открытой, это заметно начиная с VS2015. Вы не только можете создавать мультиплатформенные приложения, но и весьма оперативно получать обновления с новыми интересными фичами.
Все компиляторы поддерживают С++11/14 на достаточно хорошем уровне, так что больше нет оправданий не переходить на использование этих стандартов. С помощью Core Guidelines данная задача становится ещё проще.
Грустные новости
Буквально пару часов назад Скотт Майерс опубликовал статью-прощание [54] с миром С++. Обсуждение на reddit [55]
А что вы думаете?
Ну и опросничек.
Автор: Инфопульс Украина
Источник [56]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/108126
Ссылки в тексте:
[1] N2634: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html
[2] N1653: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
[3] Мысли по поводу С++17: https://isocpp.org/files/papers/D4492.pdf
[4] n4465: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4465.pdf
[5] n4466: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4466.pdf
[6] n4415: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4415.pdf
[7] n4478: http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4478.html
[8] n4454: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4454.pdf
[9] n3857: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3857.pdf
[10] n3865: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3865.pdf
[11] N4402: https://isocpp.org/files/papers/N4402.pdf
[12] n4398: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4398.pdf
[13] n4302: http://open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4302.pdf
[14] n4409: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4409.pdf
[15] n3701: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3701.pdf
[16] n4361: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4361.pdf
[17] n4263: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4263.pdf
[18] n4128: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4128.html
[19] n4382: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4382.pdf
[20] n4474: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4474.pdf
[21] n4477: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4477.pdf
[22] n4480: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4480.html#string.view
[23] n4294: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4294.pdf
[24] n4480 — optional: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4480.html#optional
[25] N4295: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4295.html
[26] P0061R1: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0061.html
[27] n4099: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4099.html
[28] отличный обзор: https://botondballo.wordpress.com/2015/11/09/trip-report-c-standards-meeting-in-kona-october-2015/
[29] находится на GitHub: https://github.com/isocpp/cppcoreguidelines
[30] обзорно от Херба Саттера: https://isocpp.org/blog/2015/06/trip-report-spring-iso-cpp-meeting
[31] очень детально от Botond Ballo: https://botondballo.wordpress.com/2015/06/05/trip-report-c-standards-meeting-in-lenexa-may-2015/
[32] обзорно от Херба Саттера: http://herbsutter.com/2015/10/25/2568/
[33] Поддержка С++11/14/17 в VS 2015 RTM: http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx
[34] MSDN о С++11/14/17: https://msdn.microsoft.com/en-us/library/hh567368.aspx
[35] Ссылка на последнюю версию поддерживаемого стандарта: http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
[36] Омоложение компилятора С++ от Microsoft: http://blogs.msdn.com/b/vcblog/archive/2015/09/25/rejuvenating-the-microsoft-c-c-compiler.aspx
[37] модули: http://blogs.msdn.com/b/vcblog/archive/2015/12/03/c-modules-in-vs-2015-update-1.aspx
[38] проверка на соответствие Core Language Guidelines: http://blogs.msdn.com/b/vcblog/archive/2015/12/03/c-core-guidelines-checkers-available-for-vs-2015-update-1.aspx
[39] корутины : https://msdn.microsoft.com/en-us/magazine/mt573711.aspx
[40] Лайт-концепты добавлены в основную ветку GCC: https://www.reddit.com/r/cpp/comments/3g3lsy/c_concepts_support_merged_into_gcc_trunk/
[41] список изменений: https://gcc.gnu.org/gcc-5/changes.html
[42] Текущая поддержка стандартов С++1y/C++14 в GCC: https://gcc.gnu.org/projects/cxx1y.html
[43] Текущий статус поддержки новых стандартов: http://clang.llvm.org/cxx_status.html
[44] можно использовать под Windows: http://blogs.msdn.com/b/vcblog/archive/2015/05/01/bringing-clang-to-windows.aspx
[45] презентация: https://software.intel.com/sites/default/files/New-C-C%2B%2B-Language-Features-in-Intel-C-C%2B%2B-Compiler-16.0.pdf
[46] видео: http://goparallel.sourceforge.net/inside-new-intel-c-compiler-16-0/
[47] Текущий статус поддержки С++11: https://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
[48] Текущий статус поддержки С++14: https://software.intel.com/en-us/articles/c14-features-supported-by-intel-c-compiler
[49] Официальная страница: http://cppcon.org/
[50] И все видео: https://www.youtube.com/user/CppCon/videos
[51] Лейтмотив: https://meetingcpp.com/index.php/newsreader/items/both-keynotes-from-meeting-c-2015-are-online.html
[52] Мини-доклады: https://meetingcpp.com/index.php/newsreader/items/meeting-c-2015-all-lightning-talks-are-now-online-at-youtube.html
[53] набрал 8%: http://www.infoworld.com/article/2947536/application-development/javascript-rules-the-school-but-c-climbs-in-popularity.html
[54] статью-прощание: http://scottmeyers.blogspot.com/2015/12/good-to-go.html
[55] Обсуждение на reddit: https://www.reddit.com/r/programming/comments/3yyenk/scott_meyers_to_retire_from_the_world_of_c/
[56] Источник: http://habrahabr.ru/post/274549/
Нажмите здесь для печати.