Что будет с PHP через 5 лет: мы спросили докладчиков ближайшего московского митапа

    Хэллоуин прошел, а страх остался. Страх и ненависть в pcntl_fork(). Боязнь CSQR. И опасения насчет удаленной работы. Если тоже хотите поговорить об этом, встречаемся вечером 21 ноября на Таганке или на этом ютуб-канале (ссылка на эфир появится за 2 дня до ивента).



    А пока — есть время познакомиться. Мы попросили докладчиков рассказать про самое страшное событие в их карьерах разработчиков, а также включить нострадамус-mode и дать свой прогноз о развитии языка. У одного докладчика вышла Java. Детали и остальные ответы — под катом.


    Влад Сидорин, тимлид в Работа.ру


    О чем расскажешь на митапе?

    Про форки в PHP, в частности, о pcntl_fork() — как и где стоит применять, какие подводные камни вас ждут и как их обойти.

    А о чем с тобой можно поговорить на митапе помимо темы доклада?

    Кухни мира, история (особенно Мезоамерика), танки, фантастика — вот это всё.

    Расскажи самую страшную историю из своего опыта.

    Снес боевую БД игрового проекта. Напрочь. Пришлось восстанавливать из бэкапа. Несколько часов даунтайма было.

    Самое лучшее и худшее, что было с языком за то время, что ты на нем пишешь?

    Лучшее — выход 7-ой версии. Худшее — JIT никак не докатят :(

    Что будет с PHP через 5 лет?

    Я уже перешел на Go, но надеюсь, будет JIT, вложенные классы, сопрограммы или модель акторов, нормальный сервер приложений. Хотя стойте, это уже какая-то Java получается ;)


    Антон Губарев, тимлид в Skyeng


    О чем расскажешь на митапе?

    Поделюсь выводами из 5 лет опыта работы на удаленке: с разными командами и на разные компании. Какие проблемы бывают, как их решать, какие инструменты помогают и так далее.

    А о чем с тобой можно поговорить на митапе помимо темы доклада?

    Автоматизация, CI, самообразование, баланс между работой и жизнью, SOA.

    Расскажи самую страшную историю из своего опыта.

    Как-то раз полтора месяца работал забесплатно — и, как назло, в тот период жизни, когда средства были очень нужны. Толком не проверил работодателя, через пару месяцев у него закончились деньги — ни самоокупаемости, ни инвестиций не было. Зарплату на том месте так и не получил :(

    Самое лучшее и худшее, что было с языком за то время, что ты на нем пишешь?

    Лучшее — выход 7-ой версии. Худшее — то, что нет развития в сторону асинхронности (но наш товарищ работает над этим — прим. ред.)

    Что будет с PHP через 5 лет?

    Появится строгая типизация, зачатки асинхронности, произойдет еще один скачок в производительности.


    Дмитрий Симушев, разработчик в РайффайзенБанке


    О чем расскажешь на митапе?

    Что делать, если Doctrine ORM не справляется с обработкой потока запросов на чтение, а хаки по оптимизации уже кончились.

    А о чем с тобой можно поговорить на митапе помимо темы доклада?

    С удовольствием пообщаюсь про unit-тестирование и TDD. Составлю компанию в обсуждении зубодробительных архитектурных вопросов, даже если они и не имеют ничего общего с реальными приложениями. С радостью наброшу про целеполагание внутри команды и командную ответственность.

    Самое лучшее и худшее, что было с языком за то время, что ты на нем пишешь?

    Худшее — трейты. Всегда воспринимал их как полукостыль для реализации подобия множественного наследования. Ну и многие PHP-разработчики ими часто злоупотребляют. Лучшее — постепенное появление приличной системы типов в языке. Глядишь, скоро Union-типы подвезут, будет вообще шикарно.

    Что будет с PHP через 5 лет?

    Давай попробуем пофантазировать. Вероятным направлением развития может быть функциональное программирование в PHP. Популярность асинхронных фреймворков ReactPHP и AMP растет, а в языке до сих пор нет нормальных методов для функциональной работы с массивами (array_map, array_reduce и подобные не предлагайте, очень уж они «специфические»).

    На первом этапе можно было бы протащить в язык какой-нибудь приличный класс-коллекцию (с нормальными map, fold, filter). Этот небольшой шаг потребует приличного времени, за которое система типов разовьется настолько, что можно будет описывать интерфейсы для функций (прямо как в TypeScript). А дальше можно уже тащить в язык сопоставление с образцом, частичное применение, каррирование, композицию и прочие веселые-до-безумия функциональные штуки.

    Возможно, кто-то даже пойдет по пути ES*/TypeScript и реализует надмножество языка PHP с кучей функциональных плюшек. А там и до клона Scala, компилируемого в опкод PHP, недалеко :)

    Расскажи самую страшную историю из своего опыта.

    Как то раз, в канун Нового года, когда действовал запрет на все изменения в проде, понадобилось выкатить обновления по одному из второстепенных сайтов компании.

    В то время у нас не было абсолютно никаких средств автоматизации процесса деплоя. Все руками, через SFTP, прямо на сервера. Ну и без плана отката, разумеется. Я, как самый бесстрашный, взял эту почетную обязанность на себя: надо же было порадовать клиентов свежими фичами под Новый год.

    Затем: белый экран, чистые логи, вот это всё. Те 30 минут, пока я пытался понять, что с ним не так, и восстанавливал работоспособность, были самыми страшными за всю карьеру.

    Еще не без стыда могу поведать о факапах в проектировании отдельных компонентов внутри одной системы и взаимодействия нескольких систем друг с другом. Но это — уже на митапе :)

    В общем, приходите 21-го числа, будет хорошо. Или смотрите нас онлайн и в записи.



    p.s. Если вы хотите выступать на митапах в Москве и за ее пределами, либо готовы как-то поддержать сообщества, добавляйтесь в открытый список на GitHub или ищите контакты там.

    p.p.s. Говорят, если сделать свой прогноз про будущее языка в комментах к этому посту, на митапе будут ждать ништяки.
    Skyeng
    290,71
    Компания
    Поделиться публикацией

    Комментарии 48

      +5

      Дженерики. Сразу за ними подтянутся типизированные коллекции.
      Движение в сторону асинхронности. Возможно путем выноса компилятора и VM в специализированные, доступные для запуска из самого PHP, "расширения". И обязательно обмен сообщениями между ними. Как минимум возможность запускать IO в отдельном потоке с возможностью дальше по коду дождаться результата. Вынос GC в отдельный поток(если он еще не там — не уверен)
      В совсем далеком будущем — переработка VM. Текущие опкоды довольно костыльны и слишком толсты.
      Спецификация на VM. Разные реализации, не прибитые гвоздями к структурам и макросам zend_*
      Расширения можно будет писать на самом PHP, компилить в промежуточный код и в таком виде подключать — дальше пусть JIT работает.

        0
        Привет, Андрей! Приходи на митап, лови человека в белом свитере с надписью «Лёша», ништяк будет твой)
          +1

          Да, дженериков больше всего не хватает.


          На втором месте отсутствие аналога public readonly или public final свойств: очень утомляет писать эти дурацкие геттеры для банальных immutable data objects.

            0
            Если что, psalm (который github.com/vimeo/psalm ) умеет в аннотации immutable и readonly. Как вариант.
              0

              Со статическим анализом и PhpStorm неплохо справляется, но это все… такое.


              Я лучше геттеров нагенерю, надёжнее.

                0
                Со статическим анализом и PhpStorm неплохо справляется

                Ну как сказать… Psalm далёк от идеала и вообще языков в которых это из коробки, но PhpStorm даже с ним с равнение не идёт.
                Шторм даже за типами свойств не следит, и не подсветит такую простую штуку как запись в свойство значение неверного типа, или обращение в свойству которое может быть null(и EA extended тоже, по крайней мере в бесплатной версии). Object-like arrays им никак не покрыть, да и дженерики в psalm ± есть.
                И билд зафейлить не поможет если кто-нибудь сделает что-то нехорошее.

                А вообще неплохо если JB возьмутся таки впилить нормальную поддержку language-server-protocol в IDE( LSP Support plugin работает так себе, впрочем, и пилится одним человеком в свободное время ).

                  0
                  Привет! А мы как раз один из следующих митапов планируем с Кириллом Смеловым, разработчик из команды PhpStorm в JetBrains: он готов приехать в Мск. Так что, думаю, в декабре-январе можно будет лично фидбек дать)
                    0

                    Это у вас че-то плохо настроено, у меня и за типами свойств следит, а уж за null-ами тем более. Может, инспекции отключены, или версия php в настройках проекта не та?

                      0
                      Все inspections в PHP > Type Compatibility включены, шторм последний. На код
                      Код
                      <?php
                      
                      declare(strict_types=1);
                      
                      class SomeClass {
                          /**
                           * @var int|null
                           */
                          private $someVal;
                      
                          public function __construct(?int $someVal)
                          {
                              $this->someVal = $someVal;
                          }
                      
                          public function doSomethingUseful(): int {
                              return $this->someVal + $this->someVal;
                          }

                      }

                      Ошибок типов не показывает.

                      P.s. И да, с фидбеком там всё уже нормально(тык тык тык)
                        0

                        А, я думал, вы про ситуации типа NPE. С примитивными типами, да, вижу. Не замечал, правда, наверное, потому что стараюсь сразу на входе избавиться от null каким-нибудь default value.


                        Что касается @template: да, без поддержки в IDE от подобных конструкций никакого толку. :(

            +4

            Отток сильных инженеров из php в более востребованные/хайповые языки, снижение популярности.

              +2
              Привет, пессимистичненько( Были тут на выходных в Нижнем на митапе, многие опасаются того же — в том числе потому, что в вузах мало программ от компаний.

                +4

                Думаю, тут дело не столько Вузах и программа от компаний (в конце концов этого и раньше не было и это не помешало php стать массовым), сколько в том, что да — сильные инженеры переходят на другие стеки, роль языка с быстрым стартом для новичков перехватил js (чтобы начать что-то писать на js и базовая алгоритмика -достаточно браузера) +фактор размера рынка и зарплат + "суть" проектов на рынке.


                Но возможно, загляну на митап — вдруг тоже ништяк дадут

                  0
                  Ловите меня (человек в белом свитере с надписью «Лёша») — и все будет
                –4

                Так и есть. PHP — это либо суппорт уже давно понаписанного, либо когда заказчик требует. Добровольно на PHP новые проекты уже мало кто знающий другие языки начинает. :-)

                  0

                  Я вот начну. Вернее PHP будет один из языков в MSA. Основным языком для бизнес-логики

                    0
                    Да ладно, а на чём начинают?)
                      0

                      От задачи зависит, ну и от личных предпочтений наверное.


                      Из того, что вот под рукой: Typescript, golang, ну и вот Kotlin ещё.

                        0
                        ну такое…
                  +1

                  Больше оптимизаций и статанализа в компайлтайме, после этого типизированные переменные и дженерики. Вероятно появление понятия пакета/модуля/приложения на уровне языка.


                  Паралельно нормальная поддержка многопоточности и серверы из коробки.


                  Основные конкуренты TypeScript и Go.

                    +1
                    «Уйдут сильные специалисты» — придут другие. Хайп приходит и уходит, жизнь в IT не раз это показало. Ждём от PHP нормальную многопоточность, коллекции, JIT, переработку колхозных функций таких как: file_get_contents, heredoc.
                      0
                      «Уйдут сильные специалисты» — придут другие. Хайп приходит и уходит, жизнь в IT не раз это показало.

                      Аргумент так аргумент. Если кто-то говорит что есть технология лучше чем используемая, нужно сказать что это лишь хайп и поставить собеседника в неудобное положение.
                      Ссылаться при этом на некий опыт — обязательно. Примеры — не нужны.

                      Как там нынче у Ruby дела, с которого все «за хайпом» на Эликсир бежали?
                        0
                        Всё зависит от задач. Есть круг задач для которых php и его инфраструктура топ — например небольшие и средней величины проекты в вебе. JS с гошечкой еще долго не смогут конкурировать в этой нише по разным причинам.
                          –1
                          Всё зависит от задач. Есть круг задач для которых php и его инфраструктура топ — например небольшие и средней величины проекты в вебе. JS с гошечкой еще долго не смогут конкурировать в этой нише по разным причинам.

                          Доказывать тут лучше PHP или хуже не очень хочется, холивар таки.
                          Но мой субъективный опыт и наблюдение за происходящим в мире говорит о том, что от задач ничего не зависит в процентах так 99 случаев, и берётся то, во что умеют разработчики, или что там нравится нынче самому авторитетному человеку(читай человеку с самой высокой должностью по технической части). Никакого анализа конечно же не происходит.
                          Или берётся PHP потому что на краткосрочной дистанции разработчики дешевле, а что там после будет — неважно.
                          И ещё «небольшие и средней величины» это растяжимое понятие, генерировать backend-CRUDы сегодня очень много вариантов.

                          Вообще, мне Kotlin весьма нравится. Не монструозный как Java и все фичи которых мне в php не хватает, присутствуют. Ещё C# неплох хоть и с особенностями.
                          А то что Go подходит для описания бизнес логики приложения — есть сомнения, не берусь утверждать.
                            +1
                            Есть доля правды в ваших словах.
                            Или берётся PHP потому что на кратосрочной дистанции разработчики дешевле, а что там после будет — неважно.

                            В этом плане JS вообще ничем не лучше. Большой проект на JS/TS имеет не меньше шансов стать тем еще адком, а возможно и больше, учитывая кол-во велосипедов, которые придется написать, так как инфраструктура в целом хуже.
                              0
                              Большой проект на JS/TS имеет не меньше шансов стать тем еще адком, а возможно и больше, учитывая кол-во велосипедов, которые придется написать, так как инфраструктура в целом хуже.

                              А с чем там проблемы?
                              Мне кажется небольшому проекту много не нужно, а для крупных — PHP, скажем так, тоже не блещет обилием всевозможных инструментов/интеграций etc.
                                0
                                Да взять хотя бы нормальные фреймворки для бэка, что есть? Несчастный полусырой nestjs и всё.
                                  +1

                                  Еще как минимум FoalTS и Stix.


                                  А что не так с NestJS?

                                  0

                                  Аналог Hibernate/Doctrine появился какой-то?

                                    +2

                                    https://mikro-orm.io/


                                    Еще есть typeorm, но он сделан через… В общем, странный.

                                      +1

                                      О, появился, спасибо, надо покрутить

                        +3
                        Не ну если PHP активно развивается и стремится к лучшему, то видимо у разработчиков есть какие-то планы, а значит будущее языка не такое пессимистичное, а может даже позитивное
                          0
                          Олег, приходите на митап, дадим вам ништяков за оптимизм)
                            0
                            Обязательно приду :)
                          –1
                          А когда подвезут функцию «Сделать за… сь»?
                            0
                            Вы имели в виду «зависимость» же, да?
                              +1
                              Хм, тоже интересный вариант, но в момент написания я об этом не думал :)
                              А вообще я только начинаю свой путь в PHP, хоть его и хают, однако посмотрев на то сколько вакансий с ним связанно, решил что лучше синица в руках чем известно что в небе :)
                            –2
                            Учитывая, что всё больше новых проектов пишутся на go, а не на php, то через 5 лет пхп-кам останется только адовый легаси. Держитесь там… пхп-ик, который уже ушёл в go :-)
                              +1
                              поделитесь источником статистики
                                –1
                                Источник я, который прошёлся по собеседованиям по крупным компаниям на позицию senior php developer и собрал информацию кто на чём пишет и на чём собирается писать дальше.
                                  +1
                                  сколько компаний было в списке если не секрет
                              +1
                              Двое из 3-х опрошенных, назвали PHP 7 лучшим что было с языком. Не могу не согласится. По моему в подкасте у Вадима Макеева слышал очень хорошую фразу от одного из гостей «PHP очень хороший язык, с очень тяжелым детством». ИМХО PHP будет популярен и востребован если будет развиваться в ногу со временем, а все разговоры что вот вот умрет, все уйдут на GO, Python и прочие Фортраны они будут всегда, нужно людям холиварить.
                                0

                                5.3 мне больше запомнился. Можно сказать как раз тогда детство закончилось у него.

                                  +1
                                  Согласен, неймспейсы, closures, позднее статическое связывание, я бы сказал что стало интереснее
                                    +1
                                    Круто, что есть разные версии — мы будем делать полушуточную PHP-викторину в перерыве, спросим людей, что они считают более лучшим. Спасибо, что благодаря вам родилась идея!
                                      +1

                                      Детство закончилось, когда выпилили register global и magic quotes. Дальше уже юность с подростковыми комплексами ;)

                                        +1

                                        register global и magic quotes — это на горшок ходить научился и питаться не из мамы, а не детство закончилось :)

                                    +3
                                    Все жду когда сделают поддержку штук типа \MyClass@myMethod.
                                    По аналогии с \MyClass::class.

                                    Очень поможет при рефакторинге и переходе в IDE из файлов роутинга.

                                    т.е. сейчас я могу сделать rename у класса, и все упоминания \MyClass::class поменяются на \MyNewClass::class. Было бы круто уметь такое для методов класса, т.к. все еще в некоторых местах названия методов содержатся в строках (роутинг яркий пример).

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое