Cheerp - компилятор C++ для веб-разработки

November 9, 2015

Страница проекта: http://leaningtech.com/cheerp/

Разрабатывать веб-приложения можно и на С++. Для этого код на С++ нужно скомпилировать компилятором Cheerp. В результате на выходе будет получен код на “чистом” JavaScript. На первый взгляд, это может показаться безумной идеей. Однако, у такого подхода есть несколько преимуществ перед написанием кода непосредственно на JavaScript.

1. Представьте, что Вам нужно разработать клиентский код для веб-приложения. А Ваша основная специализация - это С++, и тонкости программирования на JavaScript Вам совершенно не интересны. Вы признаёте только статическую типизацию, имеете опыт использования большого количества библиотек на С++, и вообще отлично знаете именно С++. Тогда Cheerp поможет использовать весь Ваш опыт, и не прибегать к непосредственному программированию на JavaScript. JavaScript код компилятор Cheerp ”напишет” сам, за Вас. И этот код будет работать в любом браузере, на любой платформе. Cheerp позаботится и об оптимизации итогового кода.

2. Вам нужно разработать также и серверный код для веб-приложения. И он должен взаимодействовать с клиентским кодом. Не проблема! Пишите всё на С++. Можете даже разместить клиентский код и код сервера в одном модуле. Но забудьте о сериализации и десериализации данных, забудьте про реализацию RPC. Cheerp всё сделает автоматически за Вас! Это выглядит примерно так:

int GetAnswerToLifeTheUniverseAndEverything() [[server]]
{
    return 42;
}

void webMain() [[client]]
{
    const std::string str(
        "Hello Server! The answer to life, the universe and everything is ");
    
    int answer = GetAnswerToLifeTheUniverseAndEverything();
    console.log(str.c_str(), answer);
}

Пишите и клиенстский, и сервервный код в одном месте на одном языке - С++. Кстати, Cheerp полностью совместим с С++11.

3. Есть необходимость предоставить коду на JavaScript доступ к С++ классам? Без проблем. Создавайте объекты, вызывайте методы прямо из JavaScript. (На самом деле никакого С++ кода на клиенте не будет - это просто “прозрачный” экспорт).

Кстати, Cheerp не единственный проект в своём роде. Есть и другие, например, Emscripten. И если Вы по-прежнему скептически настроены к затеи писать код на С++, и компилировать его в JavaScript, то вот Вам неплохой результат такого труда: целая “куча” игр, которые можно запускать прямо в браузере. Лично я выбрал Quake 3 :) WebGL must have!