Хэллоуин прошел, а страх остался. Страх и ненависть в 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. Говорят, если сделать свой прогноз про будущее языка в комментах к этому посту, на митапе будут ждать ништяки.

Комментарии (47)


  1. rjhdby
    06.11.2019 17:52

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


    1. spasibo_kep Автор
      06.11.2019 18:29

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


    1. symbix
      07.11.2019 07:56
      +1

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


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


      1. EvgeniiR
        07.11.2019 10:31

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


        1. symbix
          07.11.2019 11:40

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


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


          1. EvgeniiR
            07.11.2019 12:01

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

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

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


            1. spasibo_kep Автор
              07.11.2019 12:32

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


            1. symbix
              07.11.2019 12:49

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


              1. EvgeniiR
                07.11.2019 13:55

                Все 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;
                    }

                }


                1. symbix
                  07.11.2019 19:05

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


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


  1. alatushkin
    06.11.2019 19:38
    +2

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


    1. spasibo_kep Автор
      06.11.2019 19:48
      +1

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


      1. alatushkin
        06.11.2019 21:34
        +4

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


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


        1. spasibo_kep Автор
          06.11.2019 21:35

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


    1. symbix
      06.11.2019 20:53
      -3

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


      1. VolCh
        07.11.2019 05:44

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


      1. zhulan0v
        07.11.2019 08:20

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


        1. symbix
          07.11.2019 11:41

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


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


          1. zhulan0v
            07.11.2019 11:54

            ну такое…


  1. VolCh
    07.11.2019 05:42
    +1

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


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


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


  1. Shady1010
    07.11.2019 10:28

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


    1. EvgeniiR
      07.11.2019 10:41

      «Уйдут сильные специалисты» — придут другие. Хайп приходит и уходит, жизнь в IT не раз это показало.

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

      Как там нынче у Ruby дела, с которого все «за хайпом» на Эликсир бежали?


      1. zhulan0v
        07.11.2019 11:59

        Всё зависит от задач. Есть круг задач для которых php и его инфраструктура топ — например небольшие и средней величины проекты в вебе. JS с гошечкой еще долго не смогут конкурировать в этой нише по разным причинам.


        1. EvgeniiR
          07.11.2019 12:20

          Всё зависит от задач. Есть круг задач для которых php и его инфраструктура топ — например небольшие и средней величины проекты в вебе. JS с гошечкой еще долго не смогут конкурировать в этой нише по разным причинам.

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

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


          1. zhulan0v
            07.11.2019 12:25

            Есть доля правды в ваших словах.

            Или берётся PHP потому что на кратосрочной дистанции разработчики дешевле, а что там после будет — неважно.

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


            1. EvgeniiR
              07.11.2019 12:28

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

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


              1. zhulan0v
                07.11.2019 12:34

                Да взять хотя бы нормальные фреймворки для бэка, что есть? Несчастный полусырой nestjs и всё.


                1. symbix
                  07.11.2019 12:46
                  +1

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


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


              1. VolCh
                07.11.2019 13:01

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


                1. symbix
                  07.11.2019 13:09
                  +1

                  https://mikro-orm.io/


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


                  1. VolCh
                    07.11.2019 19:27
                    +1

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


  1. afagorn
    07.11.2019 10:28
    +1

    Не ну если PHP активно развивается и стремится к лучшему, то видимо у разработчиков есть какие-то планы, а значит будущее языка не такое пессимистичное, а может даже позитивное


    1. spasibo_kep Автор
      07.11.2019 12:33

      Олег, приходите на митап, дадим вам ништяков за оптимизм)


      1. afagorn
        07.11.2019 13:24

        Обязательно приду :)


  1. Eskov
    07.11.2019 12:46

    А когда подвезут функцию «Сделать за… сь»?


    1. spasibo_kep Автор
      07.11.2019 12:47

      Вы имели в виду «зависимость» же, да?


      1. Eskov
        07.11.2019 12:49

        Хм, тоже интересный вариант, но в момент написания я об этом не думал :)
        А вообще я только начинаю свой путь в PHP, хоть его и хают, однако посмотрев на то сколько вакансий с ним связанно, решил что лучше синица в руках чем известно что в небе :)


  1. dbelka
    07.11.2019 14:07

    Учитывая, что всё больше новых проектов пишутся на go, а не на php, то через 5 лет пхп-кам останется только адовый легаси. Держитесь там… пхп-ик, который уже ушёл в go :-)


    1. zhulan0v
      07.11.2019 14:12

      поделитесь источником статистики


      1. dbelka
        07.11.2019 14:18

        Источник я, который прошёлся по собеседованиям по крупным компаниям на позицию senior php developer и собрал информацию кто на чём пишет и на чём собирается писать дальше.


        1. zhulan0v
          07.11.2019 14:20

          сколько компаний было в списке если не секрет


  1. iparfeon
    07.11.2019 16:16

    Двое из 3-х опрошенных, назвали PHP 7 лучшим что было с языком. Не могу не согласится. По моему в подкасте у Вадима Макеева слышал очень хорошую фразу от одного из гостей «PHP очень хороший язык, с очень тяжелым детством». ИМХО PHP будет популярен и востребован если будет развиваться в ногу со временем, а все разговоры что вот вот умрет, все уйдут на GO, Python и прочие Фортраны они будут всегда, нужно людям холиварить.


    1. VolCh
      07.11.2019 19:29

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


      1. iparfeon
        07.11.2019 19:36

        Согласен, неймспейсы, closures, позднее статическое связывание, я бы сказал что стало интереснее


      1. spasibo_kep Автор
        07.11.2019 20:40

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


      1. symbix
        08.11.2019 08:15
        +1

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


        1. rjhdby
          09.11.2019 12:33

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