Обзор конференции Going Native'2012.Источник: habrahabr
Герб Саттер во вступительном слове посвятил конференцию Деннису Ритчи, создателю языка C, и ключевому разработчику операционной системы UNIX. Это очень важное событие для сообщества С++, где выступали и отвечали на вопросы люди, ставшие легендами в мире C++, во многом определяющие его развитие. Доклады очень интересные, и я вынес для себя много нового. Дальше идёт обзор всех докладов и сессий вопросов и ответов. Список докладчиков: Всем интересующимся современным состоянием языка я рекомендую посмотреть эти 3 выступления: Остальные доклады тоже достойны внимания, но посвящены более узким темам (параллельное программирование, компилятор Clang, шаблоны, концепции). Украсили мероприятие две сессии вопросов и ответов. Все видео и слайды с конференции доступны для скачивания и просмотра online на channel 9. День 1 - C++11 Today - 2 февраля 2012. Bjarne Stroustrup: C++11 Style. Бьярне говорит о сильных сторонах C++, хорошем стиле программирования, приводит много примеров. Иинтересно сравнение производительности вектора и списка: результат кажется неожиданным, и даёт пищу для размышлений. Hans Boehm: Threads and Shared Variables in C++11. Наконец в C++ многопоточность попала в стандарт языка. Дизайн потоков во многом повторяет дизайн хорошо известной библиотеки boost.thread. Вскользь упоминается поддержка async/future для асинхронных вызовов. Есть примеры использованию мьютексов/локов. Основная часть выступления посвещена Data Races. Дано точное определение, что это такое в программе на C++, и что следует ожидать в случае возникновения Data Race. Много говорится о появившихся atomic типах, делается сравнение с volatile из Java, C#. Stephan T. Lavavej: STL11 - Magic && Secrets. STL рассказывает о многочисленных нововведениях в стандартной библиотеке C++: Emplacement: конструирование объекта непосредственно в контейнере Как новый стандарт чуть не "поломал" std::pair, или почему стоит использовать nullptr вместо NULL Futures/async, а также зачем иногда лучше передавать тяжеловесные объекты по значению, а не по ссылке Andrei Alexandrescu: Variadic Templates are Funadic. "… After all, He-Who-Must-Not-Be-Named did great things-terrible, yes, but great." В выступлении гуру шаблонного метапрограммирования речь идёт о Variadic Templates: новой фиче стандарта C++11, позволяющей создавать шаблонные классы/функции параметризованные переменным числом параметров. Например, теперь можно написать типобезопасный аналог функции printf/scanf из C. Скорее всего, у большинства C++ программистов никогда не возникнет потребность самим писать что-либо, пользуясь Variadic Templates, но для создателей библиотек эта возможность очень важна. Выступление будет интересно тем, кто хочет посмотреть на используемый синтаксис, и понять, как можно пользоваться Variadic Templates. Выступление содержит 3 части: Реализована простая надстройка над функцией printf из C, которая проверяет соответствие переданных типов строке формата. Показана возможная реализация класса std::tuple (из стандарта C++11) Panel: The Importance of Being Native (Bjarne, Andrei, Herb, Hans, Stephan) Сессия вопросов ответов: Пара интересных цитат: "...the most frequent category of email I get about C++ training and information is from people saying, where can I go to find a good white paper on how to use modern C++11 for Java and C# developers…" Herb Sutter. День 2 - C++11 Today and Tomorrow - 3 февраля 2012. Herb Sutter: C++11, VC++11 and Beyond. Саттер обещает полную поддержку стандартной библиотеки C++11 в следующей версии студии VC11, а также (приятная неожиданность), в beta-версии, которая должна выйти в этом месяце, появится поддержка range-for и final/override. Планируется выпустить несколько "Out-of-band" релизов (не привязанных к релизам Visual Studio) вскоре после выхода VС11 с последовательно улучшающейся поддержкой нового стандарта: initializer lists, template aliases, variadic templates, constexpr, noexcept, =default/delete, … Есть возможность поучаствовать в опросе, какие фичи нового стандарта наиболее важны, и хотелось бы увидеть по возможности скорее: bit.ly/mscpp11. Вторая часть посвящена новому стилю, идиомам и рекомендованным способам программирования на C++. Саттер утверждает, что все книги по C++ устарели с выходом стандарта, что каждый пример из книги может и должен быть переписан в новом стиле: We broke every single book on the planet, and we broke every single programmer on the planet. Как минимум одна книга по C++11 уже есть: bit.ly/meyers11. Ожидаемые сроки обновления других известных книг по C++: В третьей части говорится о возможных планах развития стандарта C++. По его мнению, такое кардинальное изменение стиля, и идиом как в C++11, нежелательно в ближайшее время. В конце выступления Герб эффектно описал самую слабую сторону C++, и рассказал, что планируется сделать, чтобы исправить ситуацию. Chandler Carruth: Clang - Defending C++ from Murphy's Million Monkeys. Разработчик Clang рассказывает о том, зачем понадобилось писать ещё один компилятор C++ при живом gcc: Политические ограничения gcc, делающие его непригодным для построения средств анализа кода. Последняя версия полностью поддерживает стандарт C++98, и частично C++11. Работает на Linux, Mac. Поддержки Windows нет, так как среди разработчиков не хватает Windows-разработчиков. Приведено много примеров проблемного кода на C++, и какие при этом сообщения об ошибках, и предупреждения выдаёт компилятор. Похоже, получился интересный статический анализатор кода, но есть и возможности анализа поведения в run-time. На базе компилятора разрабатываются очень интересные средства рефакторинга и анализа C++ кода. Например, средство для удаление ненужных include. Andrei Alexandrescu: Static If I Had a Hammer. Речь идёт о предложении добавить в стандарт языка конструкцию static_if, которая хорошо себя зарекомендовала в языке D. Она позволило бы серъёзно упростить некоторый шаблонный код, на который сейчас нельзя смотреть без содрогания. Вот как могло бы выглядеть его использование: // В зависимости от параметра WithParent хранить или нет ссылку на родителя. Bjarne Stroustrup and Andrew Sutton: A Concept Design for C++ Концепции - многострадальная фича, которая не вошла в стандарт языка C++11, и серъёзно задержала его принятие. Страуструп рассказывает, как он понимает концепции в языке, а Саттон останавливается на технических деталях. Как я понял, есть желание всё-таки добавить концепции в язык, и предложение будет внесено в комитет по стандартизации. Предложение серъёзно переработано в сторону упрощения по сравнению с первоначальным. Вот так может выглядеть код, использующий концепции: template<InputIterator I> Panel: Ask Us Anything! (all speakers) ессия вопросов и ответов. Затронуто очень много тем: |