Re[11]: Полухин - что там с С++26
От: so5team https://stiffstream.com
Дата: 19.12.25 11:19
Оценка:
Здравствуйте, Олег К., Вы писали:

ОК>И C++ и современная разработка софта переусложнены.


Принципиально повлиять на это я не могу. Так что из этого тезиса сделать какие-то полезные выводы не представляется возможным.

ОК>Я знаю, что ты знаешь последний стандарт плюсов


Как раз не знаю.

ОК>но разработка софта это не про запихивание последних фич стандарта в код.


Это да.

ОК>Как пример, сравни дизайн своего кода ниже с аналогичным кодом из .NET. В .NET-е и дизайн более высокоуровневый и клиентский код чище.


Не вижу смысла. В .NET-е есть свои возможности, под .NET следовало бы писать в стиле .NET.

В C++ есть свои возможности (и нет многого, что есть в .NET). Мы делали свой дизайн под a) возможности тогдашнего C++ (это был C++14) и b) под свои представления о прекрасном.

ОК>Вообще просто сравни свой стиль программирования со стилем из QT, например.


В Qt свой стиль, который отлично подходит под некоторые типы GUI-приложений.
Однако применительно к другим вещам, типа работы с сетью, могут возникать вопросы.

Но если смотреть примеры из Qt, то там, в принципе, ведь почти тоже самое:
    QHttpServer httpServer;
    httpServer.route("/", []() {
        return "Hello world";
    });

    httpServer.route("/query", [] (const QHttpServerRequest &request) {
        return host(request) + u"/query/"_s;
    });

    httpServer.route("/query/", [] (qint32 id, const QHttpServerRequest &request) {
        return u"%1/query/%2"_s.arg(host(request)).arg(id);
    });

    httpServer.route("/query/<arg>/log", [] (qint32 id, const QHttpServerRequest &request) {
        return u"%1/query/%2/log"_s.arg(host(request)).arg(id);
    });

    httpServer.route("/query/<arg>/log/", [] (qint32 id, float threshold,
                                              const QHttpServerRequest &request) {
        return u"%1/query/%2/log/%3"_s.arg(host(request)).arg(id).arg(threshold);
    });

    httpServer.route("/user/", [] (const qint32 id) {
        return u"User "_s + QString::number(id);
    });
    ...

Только еще и с дополнительными телодвижениями со стороны пользователя:
    auto tcpserver = std::make_unique<QTcpServer>();
    if (!tcpserver->listen() || !httpServer.bind(tcpserver.get())) {
        qWarning() << QCoreApplication::translate("QHttpServerExample",
                                                  "Server failed to listen on a port.");
        return -1;
    }
    quint16 port = tcpserver->serverPort();
    tcpserver.release();


Не вижу принципиальных различий с чем-то вот таким:
    // GET request to homepage.
    router->http_get( "/", []( auto req, auto ){
        return
            init_resp( req->create_response() )
                .set_body( "GET request to the homepage.")
                .done();
    } );

    // POST request to homepage.
    router->http_post( "/", []( auto req, auto ){
        return
            init_resp( req->create_response() )
                .set_body( "POST request to the homepage.\nbody: " + req->body() )
                .done();
    } );

    // GET request with single parameter.
    router->http_get( "/single/:param", []( auto req, auto params ){
        return
            init_resp( req->create_response() )
                .set_body(
                    fmt::format(
                        RESTINIO_FMT_FORMAT_STRING(
                            "GET request with single parameter: '{}'" ),
                        restinio::fmtlib_tools::streamed( params[ "param" ] ) ) )
                .done();
    } );


ОК>Только не надо говорить, что на современном C++ так не пишут.


На современном C++ иногда пишут так, что лучше бы я этого никогда не видел.

S>>Upd. Нашлось вот это: https://www.govnokod.ru/23374

S>>Но пример взят не с сайта, а из комментария на Хабре, да еще и с измененным пространством имен.

ОК>Этот пример на сайте и был. Вроде внизу были у вас несколько примеров кода для разных библиотек. Посмотри в своей системе контроля версий.


У нас в системе контроля версий сохранилась информация только с 2018-го года. И ничего подобного не видно. Скорее всего подобные сравнения были не на сайте, а в каких-то публикациях. Помнится, мы даже отдельно делали сравнение с тогдашней версией Beast-а.

Посредством web.archive тоже ничего подобного не находится.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.