Pull to refresh

Comments 12

Что-то подобное показывал SerafimArts на своих стримах про PHP + Vulcan.

Стримы — это в основном болтология. Не советовал кому-либо тратить время на просмотр их записей. Тем более они на середине обрываются (всего 2 серии), т.к. покопавишь в VK — понял, что эта штука требует дофига опыта, которого у меня просто нет, так что не могу гарантировать качество материала. В качестве альтернативы могу предложить более сжатый и щадащий вариант с введением в OpenGL на PHP: https://www.youtube.com/watch?v=1ZO1wR4rCCQ


Если же мы говорим про демку от Искандера, то она использует SDL. Если кратко, то это набор из функций-утилит для работы с окнами, событиями и 2d примитивами, которая в значительной степени облегчает работу с графикой и не требует глубоких познаний устройств видеокарты. Так что для знакомства с этим миром я бы рекомендовал начать именно с неё (с библиотеки SDL), а не лезть сразу в дебри из OpenGL и уж тем более (тьфу-тьфу) Vulkan.

Что там учить-то, уже 5-10 лет назад все выучили в разных других языках. Я бы сказал, что PHP даже запаздывает с сахаром (где async-await? или ставка на файберы? - что, в принципе, интересный ход).

где async-await? или ставка на файберы?

Ставка на файберы.

UFO just landed and posted this here

Так одно другому не мешает. В смысле, это разные вещи. Файберы — это просто небольшое улучшение корутин.

А для async/await нужен асинхронный движок. В чем проблема делать сейчас на Amp/Swoole?

Проблема в том, что как правило уже есть проект не на Amp/Swoole, но хочется внедрить для некоторых операций параллельщину. И вот тут начинаются проблемы с сериализацией. Т.к. огромное кол-во кода просто нельзя пропустить через тот же amphp/parallel, т.к. он не сериализуем (doctrine, symfony/http-client, ...).

Что-то все в кучу. Давайте разбираться.

асинхронность != параллельность

>хочется внедрить для некоторых операций параллельщину

Можно какой-нибудь конкретный пример из жизни? Попробуем разобраться.

Синхронность/одноточность PHP — преимущество, которое очень упрощает код и отладку.

Вот допустим смержат https://github.com/swow/swow в ядро PHP. Что изменится для вашего проекта "не на Amp/Swoole"?

Также, symfony/http-client — вполне поддерживает асинхронность https://symfony.com/doc/current/http_client.html#http-client-streaming-responses И вообще делать непблокирующие HTTP-вызовы — тривиальная задача, которую умели делать еще со времен curl multi.

где async-await?

Блин, пхпшники уже совсем разленились (ирония)


function await(\Generator $coroutine): mixed
{
    while ($coroutine->valid()) {
        $current = $coroutine->current();

        if ($current instanceof \Generator) {
            $current = await($current);
        }

        $coroutine->send($current);
    }

    return $coroutine->getReturn();
}

Для файберов примерно тоже самое будет, только ещё шаг со start добавится.


Так что всё что надо — это определиться с тем что именно будет считаться "единицей авейта". В питоне, например, это корутинки и есть.

А циклический сдвиг вправо >>> собираются добавить когда нибудь?

По моему PHP единственный из распространенных языков где его нет

А разве есть такой оператор в Python, Ruby, Golang, C#, например?

Only those users with full accounts are able to leave comments. Log in, please.