2013 год только начинается. Чего же мы можем ожидать в нём для языка С++?
Ещё в прошлом году стало заметно значительное оживление в мире С++. Язык становится более динамичным, это заметно. С++03 правил много лет, без нового cтандарта С++ почти целое десятилетие мы наблюдали за развитием библиотек, статического программирования, вещей типа мета-программирования на шаблонах — и всё это неплохо эволюционировало. Но вот сам язык при этом никуда не двигался.
В 2013 году это изменится. Во-первых, начиная с этого года новый стандарт С++11 наконец станет доступен широкой аудитории, в виду полноценной его поддержке в Visual Studio 2012, Clang 3.2 и GCC 4.8. Влияние нового стандарта на библиотеки и фреймворки ощущается уже сейчас, к примеру многое из него нашло своё применение в Qt5. Но стандарту С++11 не суждено стать фундаментом разработки на следующее десятилетие. Скорее, его можно воспринимать как хороший промежуточный этап, шаг в сторону эволюции языка, которая продолжится в 2013-ом году и позже.
Это одна из причин почему я думаю, что 2013 год станет особенным для С++. В этом году начнется работа над новым стандартом — С++14. В апреле пройдет встреча комитета по стандартизации С++ в Бристоне (Великобритания) и мы уже сможем представить себе наброски будущего стандарта. В октябре пройдет встреча в Чикаго, где должен быть уже сформирован более или менее чёткий черновик, который в начале 2014-го станет новым ISO-стандартом.
Что же нам предложит С++14?
Возможно, работа с файловой системой станет частью стандартной библиотеки. Абсолютно точно в стандарт войдут багфиксы для С++11, такие, к примеру, как вот этот. Возможно, изменения коснуться std::future, поскольку нынешняя реализация с блокировками вызывает некоторые нарекания. Несколько минорных изменений могут коснуться многопоточности. Точнее мы будет знать лишь после апрельской встречи, так что утверждать что-либо пока не имеет смысла.
Как я уже писал в моей статье "Острова С++", сообщество разработчиков С++ весьма разделено, так что на разных «островах» в этом году произойдут разные вещи. С++ станет более важной часть в среде мобильной разработки. Microsoft представила WinRT и Windows Phone 8, под которые вполне можно писать на С++. BlackBerry 10 от RIM предполагает программирование под эту платформу как на чистом С/С++, так и использование Qt для более высокоуровневой разработки. И хотя Nokia отошла от поддержки Qt, на других платформах влияние этого фреймворка только усиливается, так что этот год будет вполне неплохим для Qt. Qt5 гибок, поддерживает С++11 и уже широко распространён в индустрии. Qt5 и QML приходят на Android, iOS, BlackBerry 10, Jolla, Ubuntu Phone а может быть, и на WinPhone 8. Экосистема Qt продолжает расти, развиваемая такими компаниями как Digia, KDAB и ICS.
Говоря о достоинствах Qt и QML, нельзя молчать и об их проблемах: QML страдает от фрагментации в его API, в первую очередь касающейся кросcплатформенности. Это то, работа над чем должна начаться уже прямо сейчас. Программист на Qt должен знать, что написав код единожды, он может рассчитывать на его компиляцию и запуск под любой платформой. В моих глазах это очень большая проблема — я могу сделать элемент Rectangle, который будет выглядеть как прямоугольник на всех платформах, но не могу сделать элемент Button, который будет выглядеть и вести себя как кнопка на всех платформах. На сегодняшний день для этого нужно писать реализацию UI для каждой платформы. К счастью, сообщество уже начало работу над объединённым стандартом, который должен решить проблему фрагментации и я надеюсь, что в результате мы получим надежное и стабильное решение для виджетов QML на всех платформах.
Ещё одним важным направлением развития языка оказался компилятор clang. В конце 2012 года мы стали свидетелями того, как LLVM и clang проникли в индустрию. Embarcadero построили свою новую IDE вокруг clang, Apple также решила его использовать, а Nvidia даже перешла с собственных решений на clang для GPU-вычислений. С выходом версии 3.2 clang стал более стабилен, и вполне возможно, что вскоре он первым сможет похвастаться 100%-ой поддержкой стандарта С++11.
Ещё одним событием, которое способствует развитию С++ и Qt случайно стали проблемы с уязвимостями в Java, которых недавно было найдено сразу несколько. Одним из важных факторов выбора Java раньше была его «безопасность», в сравнении с С++. Прошлый год показал, что столь уж явного и безоговорочного преимущества в безопасности эта платформа не имеет. Некоторые организации даже пришли к решению полностью удалить Java со своих компьютеров. Я не говорю, что С++ в этом плане лучше или безопаснее, но в силу разделения по платформам, библиотекам и компилятором в мире С++ не может быть глобальной проблемы, которая затронет сразу всех.
В 2012 году прошло много хороших С++ конференций по С++. Я думаю, они продолжатся. На подходе ADC++ и Meeting C++, несколько конференций в Америке (С++Now в мае и C++ and Beyond в декабре), также пройдут QtDevDays в Берлине и Калифорнии. Прямо перед встречей комитета по стандартизации С++ пройдет ACCU, где выступит Бьёрн Страуструп и еще несколько докладчиков по С++.
Год обещает быть интересным. Я желают всем вам успехов в нём.
Автор: tangro