Максим Шамаев — DevOps в Skyeng, известный участник сообщества PHP-разработчиков. В интервью для блога Хекслета Максим рассказал о состоянии языка, рынке труда, инструментах для разработки на PHP, связи бизнеса и программирования. По словам Максима, у PHP отличные перспективы, этот язык подходит новичкам. Наш гость считает, что язык развивается в правильном направлении, WordPress будет доминировать в интернете много лет, а бизнесу всегда будут нужны PHP-программисты. Подробности ниже.
- PHP, конечно, жив, но Python пролезает в веб: Максим Шамаев о состоянии языка
- Если новичок не ленится, если с головой порядок, он через 2 или 3 или 4 года становится мидлом с большой зарплатой: о рынке труда
- Большинству продавцов машин, бутербродов или кошек с собаками всё равно, на чём у них сайт: о WordPress и других инструментах
- Считаю, что язык идёт в правильном направлении: о перспективах
PHP, конечно, жив, но Python пролезает в веб: Максим Шамаев о состоянии языка
— Максим, предлагаю разделить наш разговор на несколько блоков. Первый будет посвящён состоянию языка, потом поговорим о рынке труда, о CMS и фреймворках на PHP и о будущем разработки на PHP.
— Да, давайте.
— На PHP работает практически весь интернет, по разным данным, до 80 % сайтов работает на PHP. Только на WordPress работает около 30 % из всех сайтов и около 60 % из сайтов, которые используют CMS. Как вы считаете, почему в таком случае люди обсуждают, жив PHP или нет?
— Смотрите, всё начинается с цели. У любого языка есть цель, и есть люди и бизнесы, которые ведут язык за собой. Раньше, например, в 2010 году, когда программист начинал бизнес, он приходил в веб и работал на PHP. В то время этот язык был «супер-супер», его все изучали.
Сейчас появился класс бизнесов, которые пришли либо из искусственного интеллекта, либо из Data Science, а там Python. Плюс Python с точки зрения университетов — более стройный язык. К нему есть претензии, но в целом этот язык стройнее и богаче. В нём есть перегружаемые операторы, там можно складывать объекты. То есть это язык для математиков, он изумительно хорош для работы с математическими данными.
Python всё чаще преподают в институтах и университетах, потому что он нравится преподавателям, а также потому, что студент после освоения этого языка сможет хорошо кодить математику, какую-то Big Data или искусственный интеллект. Это близко институтам. Поэтому последние лет 5 формируется поколение программистов, которые знают Python. Они начинают бизнес, приходят в веб и делают что-то на Python.
Здесь есть нюанс: эти люди приходят на рынок, начинают искать питонистов, смотрят — а на рынке 80 % программистов на PHP. Здесь они попадают в неудобное положение. У них код уже написан на Python, поэтому они переучивают PHP-программистов. Получается новая прослойка программистов, которые делают какой-то бизнес, в нём часть, которая отвечает за искусственные интеллект, работает на Python, а веб-представление они тоже автоматически делают на Python — не использовать же два языка. Таким образом Python пролезает в веб.
Ведь любой предприниматель делает бизнес своими руками и своими мозгами. Какой язык программирования он знает, на том языке и будет написан его продукт. Раньше знали PHP, потому что другого языка не было. Действительно, все CMS сделаны на PHP. И поэтому PHP свои позиции не сдаёт.
Представьте, что бизнесмен собирается делать сайты-визитки. Он смотрит, на чём их делают на рынке, и видит, что почти все такие сайты делают на WordPress. Тогда он тоже выбирает WordPress. А WordPress написан на PHP. Поэтому всё идёт от бизнеса — какой бизнес, такой и язык.
— А сам язык PHP скорее жив или скорее мёртв?
— Жив конечно.
— А для чего в 2020 году используется PHP? Какая у него сфера применения или ниша?
— Это всё, что связано с вебом: от простейших сайтов до каких-то больших проектов. Например, тот же Skyeng сделан на PHP. Если вы не пишете большой коробочный продукт класса «1С», хотя веб-часть «1С» тоже на PHP написана, а вы пишете какой-то сайт, который предоставляет услуги, как Skyeng, то его тоже можно писать на PHP. Весь вопрос в том, что знал основатель бизнеса. В случае со Skyeng это был PHP, поэтому сайт написан на PHP. Если какая-то контора выходит на рынок веб-программирования, ей надо использовать PHP без вариантов, потому что под него больше серверов, под него больше услуг, под него больше программистов.
— То есть мы можем сказать, что ниша PHP — веб-разработка?
— Да, этот язык ведь начинался как шаблонизатор. Со временем потребовалось писать на PHP много бизнес-логики, поэтому в него добавили возможности хорошо описывать объекты, чтобы трейты, protected, private появились, чтобы можно было отобразить сложные взаимоотношения, например, на 200 акторов. Потому что когда начинаешь сравнивать языки, например, PHP vs. Python, в последнем что хорошо — можно определить, как объект будет складываться, делиться, вычитаться. В PHP этого нет. А вот, например, как определить protected и private? В Python, по-моему, protected вообще нет. Как определить private-свойства, как они визуально выглядят? Python здесь выглядит несерьёзно. В результате на PHP легче описывать какие-то сложные структуры объектов, они визуально лучше выглядят. Есть возможность работать с интерфейсами, наследованием, трейтами, типами. Бизнес-логику хорошо писать на PHP.
— Максим, вы уже несколько раз упомянули Python. Мы можем сказать, что этот язык конкурирует с PHP на его поле?
— Да, конечно.
— А какие ещё языки конкурируют с PHP?
— Ruby, серверный JavaScript в его реализации через TypeScript. Потому что сам по себе JavaScript — язык нестрогий. Что хорошо в современном PHP — появились типы для аргументов, появились типы для возвратов функций, появилась возможность очень сильно специфицировать код. Мы можем «запереть» код в каком-то слепке: определить, что эта функция возвращает целое число. В JavaScript такого нет, как и в старых версиях PHP. Там наша функция могла строку вернуть, могла число и так далее. TypeScript позволяет специфицировать все входы и выходы.
Кстати, возвращаясь к Ruby. Этот язык вообще создавался человеком, которому не понравился PHP. И он сделал новый язык. Но, поскольку PHP-программистов больше, сервисов для них больше, самого языка тоже больше. Да, Ruby откусил кусочек рынка, серверный JavaScript откусил кусочек рынка.
У JavaScript ещё есть важный плюс — серверные и фронтенд-программисты пишут на одном языке. Это большая и важная тема. Если, например, в компании серверный код пишут на PHP, а фронтенд на том же TypeScript, начальнику отдела не удастся быстро перебросить специалиста с фронта на бэк, если понадобится. А если в компании JavaScript и на сервере, и на фронтенде, вы можете это сделать.
— А Java не заходит на поле PHP?
— Нет. Это язык, конечно, присутствует в веб-разработке, но на таком же уровне, как C, C#, C++. У Java не очень большая доля рынка, и этот язык избыточен для веба. Да, приложения на Java будут быстрее и правильнее. Но на Java писать дольше, сложнее. А Java-программистов на рынке меньше.
Если вернуться к бизнесу — вы покупаете хостинг, на него можно поставить PHP и больше ничего. Возможно, вы кое-как найдёте хостинг для Python, для JavaScript, для Ruby. Для Ruby даже вряд ли найдёте. Захотите поставить Java, а на это надо потратить гораздо больше денег.
Java хороша для того, чтобы сайт «М.Видео» на ней написать. То есть этот язык подходит для чего-то большого и сложного. Что важно понимать: когда маленький стартап начинает работать, он толерантно относится к падениям. Ну, упал сайт — клиенты не могли им пользоваться 30 минут. А когда стартап вырос в большую корпорацию, для них эти 30 минут превращаются в миллионные потери. Они на рынок акций вышли, провели IPO. Сайт упал, цена акций снижается, акционеры ругаются. Для них стоимость падения многократно выше по сравнению с маленькими компаниями.
Поэтому у них культура другая. Они стараются 33 раза всё протестировать, выкатывать изменения на прод медленно. Здесь лучше подходит Java. PHP уместен в компаниях, где процесс построен так: «Сейчас выкатим... Ой, что-то упало... Сейчас пофиксим... 7 минут лежал сайт, ничего страшного». Или 7 часов, тоже ничего страшного. А Java лучше подходит для чего-то сложного, тяжёлого и дорогого.
— Максим, немного отвлечённый вопрос: если какой-то пользователь или какой-то бизнес делает свой сайт, на чём ему сегодня лучше его делать? Это будет какая-то CMS, например, WordPress? Возможно, фреймворк — Laravel или Yii2, может, SaaS-решение типа Tilda?
— Это зависит от бизнеса. А бизнес ориентируется на клиента. Я знаю американские бизнесы, у которых остаются телефонные интерфейсы, несмотря на развитие интернета. То есть к ним приходишь на сайт, видишь номер телефона, звонишь и решаешь свои задачи, например, покупаешь шины.
Прежде чем выйти в онлайн, они считают, принесёт ли этот шаг прибыль. Поначалу они стараются использовать что-то дешёвое. Возможно, какие-то SaaS-решения — тот же самый «Эквид». А может, им даже выгоднее на Amazon свои товары выставить на продажу. То есть бизнесы стараются минимально вкладываться, делать всё дёшево.
Если такому бизнесу нужна страница с каталогом, он идёт на WordPress, делает там поддомен, который стоит доллар в месяц. Если нагрузка растёт, они со временем куда-то перейдут. Может, это будет какое-то своё решение. Но в этом смысле предприниматели отталкиваются от того, что используют соседние бизнес-интеграторы.
Например, приходит в студию предприниматель и просит сайт. Студия смотрит — предпринимателю нужен редизайн, а денег от него много не придёт. Поэтому студия идёт на какой-нибудь Templatemonster, покупает готовый темплейт. А этот темплейт сделан под WordPress. В результате студия автоматически делает предпринимателю сайт на PHP. Устанавливают WordPress, сбоку WooCommerce и форум, сверху натягивают готовый шаблон.
WordPress все знают, с ним работает много программистов. Здесь всё уже известно, багов мало. То есть здесь мыслят не категориями языка, язык здесь вторичен. А если человек хочет сделать какой-то аналог «Яндекс.Такси», он будет думать, на чём писать. В первую очередь будет писать на том, что знает сам. Если ему лет 30, будет, скорее всего, на PHP писать. Если он помоложе, его в институте уже на Python учили — будет на этом языке писать.
На стороне PHP играет то, что уже есть сложившийся рынок. Это можно пояснить на примере СТО. Открывать СТО всегда выгодно, потому что есть сложившийся рынок машин. Владелец нового СТО просто откусит от этого рынка ещё один маленький кусочек. Так и в веб-разработке: открывать студию, которая обслуживает существующий рынок сайтов на WordPress и других решений на PHP, выгодно.
— То есть пока есть WordPress, Laravel и другие популярные решения, PHP остаётся востребованным. А может сложиться такая ситуация, что через 10 или 15 лет вместо WordPress на рынке будет доминировать что-то другое, условный Django и Python или что-то ещё?
— Теоретически такое может быть, новые сайты могут делать на чём угодно. Но существующие сайты никуда не денутся. Например, есть какая-то кузница, она делает решётки, у неё сайт с каталогом на WordPress, сайту уже лет 10. Какая цель у кузницы? Они как ковали решётки, так и будут это делать. Возможно, будут выпускать больше продукции.
Появится больше посетителей на сайте, потребуется каталог побольше. Но сайт останется тот же. Кузнице надо закрывать дыры в безопасности и обновлять дизайн раз в 10 лет. И всё — это вечная тема. Через 20, через 50, боюсь, даже через 100 лет они будут работать на WordPress.
Посмотрим на бум мобильников — люди стали через мобильные устройства заходить на сайты. Но появились скины, которые позволяют сайту нормально выглядеть на мобильном экране. Это уровень HTML, CSS и немного JavaScript, к CMS это отношения не имеет.
Если дальше смотреть в будущее — появятся какие-то носимые гаджеты, какие-то очки, которые позволяют пользоваться какими-то виджетами как в фантастических фильмах, например, в «Джонни Мнемоник», где перед персонажем появляется некая структура, с которой можно взаимодействовать. Но по сути это будут такие же шаблоны или отдельные мобильные приложения.
Вот мобильное приложение будет написано на мобильном языке — Swift, Objective-C, на той же Java. А данные это приложение будет получать из WordPress по API, которое есть уже сейчас. Этот сайт на WordPress будет жить, пока живёт стоящий за ним бизнес. И это касается тысяч и миллионов бизнесов: кузнецы, продавцы машин, запчастей, ремонтники, те же кафе. Может со временем бизнесы будут чаще пользоваться какими-то SaaS-решениями. Но здесь уже появляется противоречие между желанием иметь своё и необходимостью пользоваться кусочком в чём-то общем. Это можно сравнить с выбором между своим небольшим магазином и лоточком внутри большого супермаркета.
И ещё здесь появляется вопрос стоимости решения. Возможно, если бы кузнецы делали сайт сейчас, решение на Тильде обошлось бы им дешевле. Но им быстро перестало бы хватать возможностей Тильды. Понадобится какой-то каталог прикрутить — и вот мы снова на WordPress! То есть новые решения будут появляться на Python и на других языках. А старые решения останутся на PHP.
Читайте также Зачем изучать PHP: рейтинг, перспективы, сферы применения
Если новичок не ленится, если с головой порядок, он через 2 или 3 или 4 года становится мидлом с большой зарплатой: о рынке труда
— Мы определились, что PHP жив. Теперь можно плавно перейти к вопросу, который особенно сильно волнует наших студентов. Это рынок труда. И здесь первый вопрос: с одной стороны говорят, что на рынке очень много специалистов по PHP, а с другой стороны можно услышать, что таких специалистов не хватает. Где правда?
— Смотря о каком специалисте идёт речь. Если у вас маленькая контора, вы пишете сайты на WordPress, вам нужен дешёвый специалист. Он немного знает PHP, немного вёрстку, немного ещё что-то. Таких на рынке десятки тысяч.
А если взять тот же самый Skyeng, там высокие требования к специалистам. Надо знать Symfony, PosgreSQL и другие вещи. Кстати, PostgreSQL не совсем специфична для PHP, здесь роднее MySQL. Так вот, программистов, которые знают много и умеют много, не хватает. Они нужны Skyeng и ещё нескольким десяткам компаний. А остальным 20 тысячам компаний, которые пилят на WordPress маленькие магазинчики, специалисты с такой квалификацией не нужны.
Это копия реальной жизни. Есть сварщик Вася, который кое-как варит заборы по садам. А есть такой же Вася, который варит атомные подводные лодки на большом заводе. И таких специалистов, которые умеют варить подводные лодки, всего пять на всю страну.
— Правда ли, что PHP проще изучать по сравнению с другими языками?
— Я занимаюсь программированием уже 20 лет, и мне кажется, что сложность изучения PHP, Python, Ruby, JavaScript примерно одинаковая. Нельзя сказать, что PHP проще других. Просто из-за его шаблонной природы проще писать первые приложения. Не надо что-то объявлять, не нужен какой-то сервис. Разработчик написал в файле код на PHP, у него уже какой-то сервер установлен, и если к нему обратиться, он в браузере уже что-то выдаёт. То есть первые шаги на PHP действительно делать легче, и в этом плане другие языки не сравнятся с PHP. Но эти шаги длятся два дня, а обучение год. А дальше — у PHP есть проблемы с именованием функций, с порядком аргументов. В других языках тоже есть проблемы — к любому можно придраться.
— Максим, а если бы вы сегодня начали изучать программирования, вы бы начали снова с PHP?
— Я изучал язык под контору. Хотел работать в X-Cart, а в этой конторе требовались PHP-программисты. Купил книгу, месяц почитал, пошёл на собеседование — всё нормально, меня приняли. Человек никогда не изучает языки «абы куда», он всегда изучает языки «почему-то». У него есть целевая контора, которая программирует, например, на Erlang. И он будет изучать этот язык.
Ещё один вариант — человек зашёл на «Хедхантер» и посмотрел, а каких программистов хотят видеть работодатели? Увидел, что нужны специалисты по PHP, Python, C и так далее. Почитал отзывы и выбрал, например, Python. То есть это зависит в том числе от личных предпочтений, потому что, например, не все любят веб.
Возвращаясь к вопросу — мне тяжело судить. Скорее всего, выбрал бы PHP. Просто сейчас я уже хорошо знаю этот язык. И поэтому мне интересно изучать Python или, например, Go. Но я понимаю, что сегодня мной движет любопытство. Это даже не вопрос денег. Зарплаты плюс-минус одни и те же у специалистов по этим языкам.
— Если взять гипотетического новичка, который прилежно изучал PHP, у него голова на месте, руки на месте. Этот человек найдёт работу?
— Конечно.
— А где сейчас работают PHP-программисты? Это аутсорс, продуктовые компании, энтерпрайз, что-то ещё?
— В целом это веб-разработка. Это и маленькие студии, которые делают маленькие сайты, и средние студии, которые делают сайты каким-то заводам, и большие студии, которые делают проекты масштабов «М.Видео». Это и аутсорс на Запад, там тоже много работы для PHP-программистов. Аутсорсеры пишут для Европы, для США и Канады, даже для Аргентины и Бразилии. Есть конторы, которые делают коробочные продукты. Есть аутсорс для коробочных команд. Есть команды, которые делают сайт как продукт или как сервис. Например, Skyeng. Даже Facebook на PHP работает. Понятно, что сейчас его там мало осталось, но тем не менее. То есть это весь спектр веба — буквально всё.
— Максим, вы уже упоминали о требованиях Skyeng. А если абстрагироваться и попробовать дать рекомендации новичкам: что нужно знать начинающим PHP-программистам, чтобы уверенно выйти на рынок труда?
— Сейчас много онлайн-курсов. Новичок приходит на курс, его учат основам языка. Потом учат работать с веб-сервером, с фреймворками типа Laravel или Symfony. Также на курсах новичок пишет какие-то учебные приложения. И после этого приходит на «Хедхантер», говорит, что он джуниор, готовый работать за 35 000. Его берут на работу, дают его условные 32 000. Там он набирается опыта. И здесь появляется вопрос мотивации и головы. Если новичок не ленится, если с головой порядок, он через 2 или 3 или 4 года становится мидлом. Он переходит в другую контору на другую зарплату. Здесь ему уже платят 80 000 или 100 000. Проходит ещё 2-3 года — он становится синьором с зарплатой от 120 000. То есть в начале пути надо набраться опыта: научиться работать с базой, с API и так далее. Есть такой нюанс: заранее углубляться в какие-то темы — это не всегда хорошо. Может, за исключением каких-то абстрактных вещей, например, архитектурных паттернов. Нельзя заранее знать, с чем придётся работать.
Большинству продавцов машин, бутербродов или кошек с собаками всё равно, на чём у них сайт: о WordPress и других инструментах
— От рынка труда предлагаю плавно или не очень перейти к фреймворкам и CMS, которые есть в экосистеме PHP. WordPress — явный лидер на рынке CMS и вообще в вебе. А за счёт чего ему это удаётся?
— Это совокупность факторов: усилия маркетинга, партнёров, программистов. Это работа со сторонними авторами модулей. Это создание инфраструктуры для этих авторов модулей. Например, важную роль играет удобный маркетплейс, где авторы модулей могут продавать свои продукты. Это усилия тысяч людей. В целом на успех влияет и профессионализм программистов, которые писали ядро, и визионерские качества CEO, который выбрал правильное направление развития.
— Но это ведь опенсорсный проект, там нет централизованной разработки, насколько я понимаю?
— Рядом с любым опенсорсным проектом всегда есть какие-то конторы, которые на нём зарабатывают деньги. Здесь можно передать привет, например, Red Hat. Сам проект может быть опенсорсным, а коммерческие конторы, которые находятся рядом с ним, адаптируют продукт так, чтобы его могли использовать люди и сторонние бизнесы. Это фактически сегмент B2B. Например, бизнесу надо сделать сайт. Он смотрит — вот хороший партнёр! Большинству продавцов машин, бутербродов или кошек с собаками всё равно, на чём у них сайт, они этого могут даже не знать. Зато они знают, что у них есть хороший партнёр, которому можно доверить сайт.
— Максим, на профессиональных ресурсах можно найти скептические комментарии насчёт WordPress. Можно заметить, что профессионалы его не любят. Так ли это, и если да, то почему?
— Это старый разговор про продукт, у которого очень много пользователей. Когда продуктом пользуется много людей, ему сложно идти вперёд в технологическом плане. То есть он без багов, но он построен по-старому. Старый код тянет за собой старые технологии. С одной стороны, людям хочется использовать что-то новое. А с другой стороны, они хотят преемственности и совместимости — чтобы на новый WordPress без проблем становились их модули. Если выйдет обновлённый WordPress, который будет сделан строго под PHP 7.4, и на него не встанут модули, программисты об этом узнают постфактум, когда их уволят. Потому что гипотетическая контора, которая делает модули под WooCommerce, вдруг понимает, что ей придётся переписывать все модули, у неё просто денег на это не хватит. Она закроется. И вот тут радостные программисты, которые получили WordPress с новыми фишками и фреймворками, вдруг оказались уволенными. Поэтому в реальности программисты будут вечно недовольными из-за использования старых технологий, но у них будут зарплаты.
— Вы вспомнили фреймворки. Скажите пожалуйста, в каких ситуациях они подходят лучше, чем CMS?
— CMS подходит, когда нужен простой сайт, на котором будет информационная часть, небольшой каталог или магазин и всё. Фреймворк нужен, если вы делаете «сходу неведомо чего». Это может быть какой-то сервис, например, конкурент «Яндекс.Такси», систему доставки, у которой не будет пересечений с CMS. То есть CMS предоставляет много готового кода, а при использовании фреймворков нужно писать код самим. Это можно сравнить с такой ситуацией: нужно перевести пять коробок с футболками из Ульяновска в Москву, вы заказываете услуги СДЭК и решаете задачу. А если нужно перевезти по этому же маршруту дом, СДЭК не поможет.
— Немного подробнее о фреймворках в PHP: у нас есть Laravel, Zend, Yii2, Symfony и другие решения. За какими из них настоящее и будущее?
— У Yii2 есть свои апологеты. Это нормальный фреймворк, он не слишком тяжёлый, как Symfony. Под Symfony есть много бандлов, но он тяжеловатый и слишком энтерпрайзный. Laravel полегче. Но, опять-таки, всё зависит от цели. Если нужно строить что-то большое, и вы знаете Symfony, вы будете использовать этот фреймворк. Если нужно что-то не очень большое, какой-то интернет-магазин, можно выбрать Laravel. Все фреймворки похожи, в них используется модель MVC. Надо знать хотя бы один. Фактически бизнес выбирает то, что знает. А разработчик не выбирает. Он приходит в компанию, где пишут на Laravel. Что делать? Придётся выучить. На это уйдёт 3-4 дня.
— В Ruby есть «рельсы», в Python есть Django — фреймворки-лидеры, вокруг них всё крутится. А в PHP несколько лидирующих фремворков. Это хорошо или плохо для разработчиков, для сообщества?
— Я не вижу больших проблем в переходе с одного фреймворка на другой. В целом, разнообразие — это хорошо. Организация обычно выбирает какой-то один фреймворк, с которым всё время работает. А разработчик приходит в новую организацию, тратит неделю на изучение нового фремворка — и всё, он уже может на нём работать.
Большое количество фреймворков — следствие того, что самого языка PHP много. Его использует огромное количество людей, у них свои мысли и идеи. Здесь крутятся миллиарды долларов. Какая-нибудь контора выпускает свой фреймворк. А эта контора — второй по размерам интегратор в США. Этот фреймворк будет использоваться на десятках тысяч сайтов.
На Python и Ruby меньше сайтов. Там есть один фреймворк — и хорошо. А чтобы появились новые фреймворки, нужны десятки тысяч контор, которые зарабатывают миллионы и миллиарды. Тогда появятся люди, которые скажут, условно, что Ruby on Rails нам не нравится, мы сделаем свой новый фреймворк.
Все эти фреймворки — «рельсы», Django, Flask и так далее, их разработчики отталкивались от фреймворков, которые написаны на PHP и Java.
Большое количество фреймворков в PHP — это ещё и следствие его эволюции. Люди выясняли, каким будет веб. Была статика, были шаблоны, потом появился AJAX, что-то стало на фронтенд перетекать... Это следствие эволюции — старый фрейморк попадал в ловушку, как WordPress. Люди ждут фреймворк с новым кодом, в котором работают старые методы. А такого не бывает.
Так, например, ушёл Zend — его съела Symfony. Zend ушёл, но не умер. Он остался на старых сайтах, которые нужно поддерживать. И программисты вынуждены его знать. Появился сложный Symfony, потом появился Yii, который проще — это эволюция.
Если ты строишь свой Ruby на чём-то уже готовом, например, на PHP — все ошибки до тебя уже сделаны. Поэтому и фреймворков будет меньше.
Считаю, что язык идёт в правильном направлении: о перспективах
— Максим, предлагаю поговорить о самом языке. Как вы думаете, PHP в правильном направлении развивается? Версии 7.4, 8 — они улучшают язык?
— У меня непопулярное мнение. Да, я считаю, что язык идёт в правильном направлении. Просто у PHP есть один нюанс, который люди не любят. Это то, что PHP должен умирать, то, что PHP-поток, каждый рантайм — его внешний сервис должен умереть. Это решает проблему с «подтиранием» за собой данных в памяти.
Это позволяет, с одной стороны, программистам быть расхлябанными и дешёвыми. И, с другой стороны, позволяет создателям языка не так сильно заморачиваться с подчисткой памяти. Это специалистам не нравится, потому что такой фокус-покус остался, наверное, только в PHP. У всех остальных это уже полноценные сервера приложений, где ваше приложение запущено, инициализировано. А потом внутри него идут вызовы — вот тут было обращение с веб-сервера. То есть они не умирают. И народ ждёт: «Эй, ребята, ну где же ваш application server?» А его нет и не будет. Да, есть сторонние решения. Но они не пользуются спросом.
А разработчики языка думают о другом. Для них, например, поддержка UTF-8 важнее. Для них важнее решить старые споры вокруг того, что функции называются неоднотипно, что разный порядок аргументов в однотипных функциях. Это решать выгоднее, так как это позволяет легче учить язык. Выгоднее поднимать скорость: они добавили JIT. Благодаря последним изменениям PHP может работать, например, с искусственным интеллектом. То есть он влезает на территорию Python.
Да, есть ожидания от языка, которые не будут выполнены в ближайшие лет пять. Это разочаровывает людей. Но они не всегда понимают, зачем нужны те или иные функции. Например, зачем нужен сервер приложений, особенно в разрезе того, что PHP — язык для веба, причём всё-таки для веба, который серединка и ближе к низу. То есть делать «М.Видео» на PHP — наверное, плохая мысль. А вот какие-то средние и маленькие сайты — да, конечно. На больших сайтах нужны эти сервера приложений. А на маленьких — зачем?
— Максим, а есть что-то в PHP, чего вам не хватает, что бы вы добавили туда?
— Что бы прямо чего-то не хватало — нет такого. Всего хватает, всё есть. Можно сказать, что всё-таки неплохо было бы иметь сервер приложений. Но это сущность программиста — он стремится к идеалу. А по факту — нет, всего хватает.
— То есть PHP можно назвать целостным рабочим инструментом?
— В целом, да. Может быть, после появления типов хотелось бы иметь мультитипы, оверрайд для методов, чтобы можно было объявить в объекте два метода с разной фасадной подписью. Чтобы было два метода add
, один из которых принимает строку, а второй число. Может быть, какие-то шаблоны нужны. Но, опять-таки, всё это нужно в энтерпрайзных решениях. Вот в Skyeng они нужны. А в каком-то магазине шин они не нужны.
— Максим, а как вы думаете, почему у PHP много хейтеров? Чем он хуже других языков? Или это снова проблема инструмента, который много используют?
— Это проблема людей. Представьте маленькую конторку, которая пишет маленькие сайты, в которой работают дешёвые программисты. Они пишут плохо, потому что они молодые. Никто не рождается гением. А другие люди смотрят в код и говорят: «О, говнокодище!» Да, этот говнокодище на своём месте. Бюджет на создание этого сайта — 3000 рублей, а срок был до 12 часов сегодня. Да, это говнокод, всё верно. Но никому не хочется быть крайним, поэтому начинаются разговоры о плохом языке. Я помню, как люди писали на Perl в 90-е. Там был такой говнокодище, что PHP просто встал и ушёл за пивом. Я видел говнокод на C, на Java, на C++. Это вопрос людей и ресурсов: есть ресурсы только на это — так вам и сделают.
— Вы согласны с тем, что языки программирования влияют на мышление разработчиков? Если да, то как влияет на мышление PHP? И подходит ли он в качестве первого языка программирования?
— Да, согласен. Современный PHP сформирует хорошее мышление в стиле ООП. Он не построит функциональное мышление, что не очень хорошо, но и не очень плохо. Также он обеспечит быстрый скачок к результату: человек что-то написал и получил осязаемый результат. Есть старая проблема, когда вы что-то долго учите, а применить на практике не можете. PHP решает эту проблему. Здесь можно написать одну строчку и увидеть результат. Для начинающего это отлично.
— То есть в качестве первого языка он подходит?
— Безусловно. Он, может быть, не такой строгий, как Python, он может не даст какие-то ООП-шные штуки вроде перегрузки операндов. Но в реальности это и не надо. Если человек пришёл в PHP, значит он пришёл в веб. Здесь нет Big Data и искусственного интеллекта. Здесь надо вывести HTML. PHP что делает: в MySQL собирает данные, как-то их меняет, форматирует и выплёвывает на экран. Для новичка это хороший язык.
— Максим, давайте представим ситуацию: есть программист, он пишет на PHP какое-то время, работает, не поднимая головы. И вдруг он решает, что надо как-то развиваться, выделяет на это время. Вы можете назвать какие-то инструменты, которые ему надо срочно учить? Что-то достойное внимания в PHP появилось за последние полгода или год?
— Я не помню, когда появилась версия 7.4. Основное, что бы я выделил — появилась типизация. Типизация для аргументов, возвратов функций и методов, типы свойств. Это то, что влияет на разработку сильно. Остальные вещи, например, та же самая короткая запись функций, это влияет не так сильно.
Код PHP — он в основном ООП-шный. Если хотите функциональщину, меняйте язык, идите в Erlang. Тогда придётся менять сферу — уходить из веба в сторону каких-то сервисных продуктов. Это уже миграция другого уровня: человек работал на PHP, ему взгрустнулось, и он думает, а что бы такое выучить? Можно пойти в функциональщину, в Erlang или что там сейчас модно. Можно пойти в Python и в Big Data. Можно пойти в Go, в какие-то сервисные многопоточные вещи. Это вопрос интересов.
Обычно люди так рассуждают: они работали с ecommerce, а теперь им интересен умный дом. Они идут и пишут на Go. Но сначала они идут работать в фирму, которая этим занимается. Язык программирования в данном случае вторичен. Эта фирма могла кодить и на C, и на Go, и на Python, и на Java. Люди чаще идут решать интересные задачи. Смена языка здесь вторична. Если человек 10 лет на PHP кодил, ему просто выучить Go.
— Максим, большое спасибо за интересную беседу. Нашим читателям будет интересно узнать о состоянии и перспективах PHP, рынке труда и инструментах. Ваши комментарии вдохновляют, хочется идти и изучать PHP.
— И вам спасибо за беседу, желаю успехов читателям!
Станьте PHP-программистом с Хекслетом Научитесь разрабатывать бэкенд веб-приложений под руководством наставника, станьте программистом за 8 месяцев!