Microsoft C ++ / WinRT


У Microsoft возникла проблема с тем, как упростить создание универсальных приложений Windows на C ++. Первоначальный подход заключался в изменении языка, но теперь от него отказались в пользу добавления библиотеки в стандартный C ++.

Microsoft действительно не может решить, как лучше поступить. Когда-то у нас были такие смелые инициативы, как .NET, которые многие считали революцией, но в конце концов все обернулось удачно. Однако в последнее время было слишком много отступлений от позиций, которые казались неизменными. Так и с C ++ / CX.

Когда WinRT был представлен в Windows 8, потребовался какой-то способ, позволяющий программистам на C ++ создавать то, что мы тогда назвали приложениями Metro. Они трансформировались в приложения Магазина Windows, и теперь мы называем их универсальными приложениями Windows (UWA) — несмотря на то, что они работают только в Windows 10. На такие языки, как C #, можно было добавить дополнительные библиотеки без каких-либо серьезных изменений, но C ++ — это язык, более разнообразная среда, в которой она работает, и она стандартизирована.

Однако это не помешало Microsoft изменить C ++, поддерживаемый в Visual Studio, для создания C ++ / CX:

«Расширения компонентов Visual C ++ (C ++ / CX) — это набор расширений для языка C ++, которые позволяют создавать приложения Windows и компоненты среды выполнения Windows на языке, максимально приближенном к современному C ++. Используйте C ++ / CX для написания Windows приложения и компоненты в собственном коде, которые легко взаимодействуют с Visual C #, Visual Basic и JavaScript, а также с другими языками, поддерживающими среду выполнения Windows. В тех редких случаях, когда требуется прямой доступ к необработанным интерфейсам COM или неисключительный код, вы можете использовать библиотеку шаблонов C ++ среды выполнения Windows (WRL) «.

Многие программисты на C ++ не согласились с фразой «максимально приближенной к современному C ++». Теперь кажется, что CX отсутствует, а C ++ вернулся. C ++ / WinRT — это библиотека, которая позволяет писать UWA с использованием совершенно стандартного C ++.

Как говорится в сообщении блога Modern C ++ для среды выполнения Windows:

«C ++ / WinRT — это будущее современного проекта и первая публичная предварительная версия, официально выпущенная Microsoft».

Другими словами, забудьте о C ++ / CX и начните использовать его.

GitHub Read Me объясняет:

«C ++ / WinRT — это стандартная языковая проекция C ++ для среды выполнения Windows, реализованная исключительно в файлах заголовков. Она позволяет как создавать, так и использовать API среды выполнения Windows с помощью любого совместимого со стандартами компилятора C ++».

Но нигде не ясно, почему Microsoft и, что более важно, мы потратили время на C ++ / CX. В новом выпуске значительно улучшено:

«Значительные улучшения были внесены практически во все части базовой библиотеки, включая средства метапрограммирования, обработку строк и ошибок. Мы также добавили поддержку различных недостающих функций, включая массивы, коллекции и слабые ссылки. Делегаты теперь более эффективны, и это возможно реализовать любой интерфейс WinRT в пределах проекции. Это обновление также включает нашу полную модель асинхронного программирования, основанную на сопрограммах ».

Все хорошие новости, но есть еще небольшой шок в формулировке будущего направления:

«Сейчас мы переключаемся, чтобы сосредоточиться, среди прочего, на поддержке Xaml и компонентов».

Другие языки, использующие WinRT, воспринимают поддержку Xaml как должное; не так C ++.

Библиотека с открытым исходным кодом под лицензией MIT. В настоящее время, похоже, наблюдается большая активность на фронте C ++ WinRT. Если вы ищете в Google статьи с практическими рекомендациями, вы в основном найдете результаты C ++ / CX.

Что это значит?

Возможно, не так много программистов на C ++ заинтересованы в создании приложений WinRT.

В целом переход на стандартный C ++ должен быть хорошей идеей, но почему нам пришлось пойти в обход?


Добавить комментарий