[Разработка веб-сайтов, PHP, Программирование] Ловушки для современного PHP
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Выход новой мажорной версии языка — это всегда возможность как оглянуться назад и оценить уже пройденный путь, так и попробовать посмотреть далеко вперед и предсказать, что нас ждёт в будущем, поэтому ничего удивительного, что в последнее время в сообществе происходит много дискуссий на эту тему.
После множества обсуждений этого вопроса, я хотел бы поделиться с вами выводами, к которым пришёл: под катом вы узнаете, с какими трудностями PHP предстоит столкнуться в перспективе самых ближайших лет.
Сам язык прошёл долгий путь от сомнительного качества набора скриптов до современного, полноценного и производительного языка, способного действительно хорошо решать множество задач, стоящих перед бизнесами разного размера и основная сложность для языка, как по мне, состоит в том, что он пытается усидеть на нескольких стульях сразу.
Примечание
Далее я буду использовать слово "квалификация" не в ругательном смысле, а как набор необходимых знаний и навыков, необходимых как для работы вообще, так и для работы с некой технологией Х в частности. То есть, разработчик на Symfony квалифицированнее разработчика на Wordpress, потому что ему нужно уметь писать код и работать с БД, а разработчик на Wordpress в целом может во время своей работы из админки и не вылазить.
PHP для "простых" решений и малого бизнеса
Первое очевидное применение языка лежит в написании на нём всевозможных сайтов-визиток, интернет-магазинов, форумов и даже немного стартапов. PHP долгое время был крайне прост и не имел множества фич, присущих более строгим языкам.
Также язык был крайне нетребователен к инфраструктуре, так как можно было просто поправить нужный файлик на своей VPSке прямо через FTP, без сборок и релизов.
К квалификации разработчиков он, впрочем, тоже был нетребователен, так как интерпретируемый, типизация слабая, а архитектура вообще уникальна: php "обречен на смерть" и каждый запрос обрабатывается в новом процессе, можно не бояться ни утечек памяти, ни манипуляций общим состоянием программы, ни прочих способов одному запросу помешать другому.
Также из-за своей динамической структуры PHP стал отличным движком для создания CMS, позволяя очень легко расширить и отладить программу, методом подкладывания на сервер файликов с исходниками, для чего даже не нужно быть программистом.
Итого, был язык, простой, как палка, прощающий множество ошибок, легкий для изучения и в целом нетребовательный. Логично, такой привлекает множество разработчиков не самой высокой квалификации, просто за счёт того, что более высокая квалификация для работы им и не требуется. А это порождает следующее: низкая квалификация означает низкие рейты, низкие рейты означают привлекательность для малого бизнеса, а это создаёт множество рабочих место и своеобразную популярность, привлекая ещё больше новичков и тд и тп.
Где-то здесь находятся и стартапы: имея в начале мало денег и вынужденные выживать среди бесконечных MVP и перестроек, им проще взять что-то максимально простое и дешевое. Большинство стартапов, конечно, умирает, но самые удачливые "выстреливают", стремительно обрастая деньгами и более развитыми технологиями, при этом продолжая нести в себе ядро из всем знакомого PHP. Привет, Facebook, VK, Slack, Такси и тд и тп.
Область понятна, как понятно и то, что нужно сделать для того, чтобы оставаться "королём CMSок": ничего не испортить. Нужно просто быть таким же простым и, может, даже примитивным, чтобы за счёт этого выигрывать популярность среди новичков и малого бизнеса у более навороченных технологий.
PHP для энтерпрайза
Крупные компании обычно сильнее пекутся о качестве, над их продуктами работает намного больше человек, а пользовательская база превосходит стартаповскую на порядки. Естественно, "старый добрый" PHP им не очень нравится и они стараются сделать его архитектурно правильнее, удобнее, производительнее. Они делают сложные фреймворки, абстрагируют компоненты, прикручивают или компиляцию, дженерики, аннотации и делают много чего ещё, пытаясь довести PHP до приемлемого уровня.
К крупным же компаниям приходят и разработчики, склонные к саморазвитию и которым вместе с их ростом в какой-то момент становится тесно в мирке "простого PHP".
И всё кажется прекрасным, потому что "энтерпрайзный PHP" действительно даёт возможность нормально писать сложные продукты и даже не сильно при этом страдать, но здесь есть одно большое НО и имя ему Java (либо C#).
В виртуальную машину Java вложены десятки тысяч человеко-лет, которые делают её лучшей на текущий момент виртуальной машиной в мире. Тулчейн и экосистема джавы развивались годами сразу для “серьезного” языка и тоже множеством людей и компаний, в итоге предоставив огромную и крайне проработанную экосистему (от IDE до стандартов и библиотек), равной которой найти сложно и равной которой экосистема PHP при всех её плюсах не является. На Java пишет намного больше квалифицированных разработчиков, а также намного больше серьёзных энтерпрайз решений, что означает большие рейты, что означает больше квалифицированных разработчиков и тд и тп.
И здесь же кроется своего рода ловушка, PHP успешно копирует множество удачных решений из Java-мира, увеличивая собственную сложность и строгость. Но сможет ли он побить одного из "королей энтерпрайза" на его собственном поле? Я несколько сомневаюсь.
А это означает, что PHP имеет шансы остаться энтерпрайзом второго эшелона, некой “второй Java”. Для меня это вызывает вопрос: зачем в таком случае нужна “вторая” джава, если уже есть первая?
При этом всё было бы не так плохо, если бы стремление к совершенству не противоречило предыдущему направлению: в погоне за тем, чтобы стать "правильным", PHP легко может потерять свою простоту и скорость разработки, а вместе с тем множество дешевых разработчиков, а вместе с ними и привлекательность для бизнеса.
PHP для микросервисов и современных фич
Оставаясь простым, интерпретируемым и однопоточным, php не то, чтобы успевает за своими более шустрыми и современными конкурентами:
- PHP быстр, но и golang/nodejs/{any modern lang} далеко не медленнее, а при этом ещё умеют в ассинхронность/многозадачность "из коробки", без внешних расширений языка, велосипедов и воркеров на супервизорах.
- PHP много чего умеет, но и golang/nodejs/{any modern lang} могут работать через сокеты "из коробки", а вот "слоник" — нет.
- PHP как бы умеет в функиональщину, но довольно ограниченно, в отличие от современных typescript/scala/kotlin/*.
- PHP скоро научится в дженерики и аннотации, но эти вещи существуют в той же Java и прочих "современных" языках уже давно, вместе с целым рядом других фич.
- Ну и уж конечно, в области микросервисов, low latency, выбора и тюнинга сборщиков мусора, замеров аллокаций и прочих элементов разработки действительно высокопроизводительных приложений, php чувствует себя не очень уверенно, будучи изначально не тем (ну не контейнер с nginx, phpfpm и сотней воркеров микросервисом-то называть, в самом-то деле) и не про то.
Чтобы доминировать здесь, PHP было бы необходимо в корне измениться, от синтаксиса до архитектуры своей виртуальной машины и принципов её работы, а также основательно обрасти фичами, что в итоге сделает "слоника" совсем другим языком.
Это опять возвращает нас к вопросу: а нужен ли сообществу тот, новый PHP? И возможно ли стать новым “крутым” языком с гринтредами, встроенным сервером, монадами и черт знает чем ещё, сохранив свою фирменную нетребовательность?
Выводы
Кажется, что PHP пытается усидеть на нескольких стульях сразу: быть и удобным для быстрокодеров на CMS за 10$ в час, и изучаться за две недели вчерашним студентом чтобы завтра же найти работу, и чтобы уважаемые люди серьёзные проекты для других уважаемых и серьезных людей могли делать, и чтобы всё было современно и красиво. Не порвутся ли эти штаны? Не потеряет ли "слоник" старых пользователей, не снискав при этом достаточного внимания новых?
Непонятно.
Конечно, даже самый негативный вариант не означает неминуемой гибели: легаси написано уже очень много, а разработчиков, знающих и любящих именно PHP тоже порядочно. Языки программирования способны умирать очень долго и крестражей у них значительно больше семи.
Но, с другой стороны, ada, smalltalk, delphi и прочие всё же умерли, а тот же ruby, похоже, завис где-то в чистилище, при наличии и множества программистов, и кодовой базы.
С третьей стороны, пора бы уже включить “похороны PHP” в список спортивных дисциплин, двадцать лет хоронят уже, да всё не умирает никак вот ведь какая ирония.
Разумеется, даже при самом удачном течении событий, даже успешно совместивший и “старое” и “новое” PHP вряд ли станет языком #1.
И уж конечно, никто не заставляет писать на одном только PHP, все будут выносить нагруженные места в приложения на golang, работать с сокетами на ноде и крутить это всё в кубернетесе, но это уже совсем другая история.
===========
Источник:
habr.com
===========
Похожие новости:
- [Искусственный интеллект] Конкурс про ИИ на форуме Huawei Enterprise
- [Программирование, Функциональное программирование, TypeScript] Функциональное программирование на TypeScript: паттерн «класс типов»
- [Программирование, Git, Лайфхаки для гиков] Git, я хочу все отменить! Команды исправления допущенных ошибок (перевод)
- [Хостинг, Программирование, DevOps, Микросервисы] Технология Serverless: снова привет, 1970-е (перевод)
- [Системное администрирование, DIY или Сделай сам] Hotspot для бизнеса своими руками
- [Open source, Программирование, C++] Интерпретатор скрипта на С++
- [Программирование] Асинхронное взаимодействие. Брокеры сообщений. Apache Kafka
- [Разработка веб-сайтов, PHP, Drupal, Программирование] #lazy_builder (не путать с lazy load) в Drupal 8/9
- [Информационная безопасность, Разработка веб-сайтов, Расширения для браузеров, Браузеры] Яндекс отключил расширения с аудиторией в 8 млн пользователей. Объясняем, почему мы пошли на такой шаг
- [PHP, Программирование] События в OpenCart
Теги для поиска: #_razrabotka_vebsajtov (Разработка веб-сайтов), #_php, #_programmirovanie (Программирование), #_php, #_php_8, #_enterprajz (энтерпрайз), #_enterprise, #_razrabotka_vebsajtov (
Разработка веб-сайтов
), #_php, #_programmirovanie (
Программирование
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:08
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Выход новой мажорной версии языка — это всегда возможность как оглянуться назад и оценить уже пройденный путь, так и попробовать посмотреть далеко вперед и предсказать, что нас ждёт в будущем, поэтому ничего удивительного, что в последнее время в сообществе происходит много дискуссий на эту тему. После множества обсуждений этого вопроса, я хотел бы поделиться с вами выводами, к которым пришёл: под катом вы узнаете, с какими трудностями PHP предстоит столкнуться в перспективе самых ближайших лет. Сам язык прошёл долгий путь от сомнительного качества набора скриптов до современного, полноценного и производительного языка, способного действительно хорошо решать множество задач, стоящих перед бизнесами разного размера и основная сложность для языка, как по мне, состоит в том, что он пытается усидеть на нескольких стульях сразу. Примечание Далее я буду использовать слово "квалификация" не в ругательном смысле, а как набор необходимых знаний и навыков, необходимых как для работы вообще, так и для работы с некой технологией Х в частности. То есть, разработчик на Symfony квалифицированнее разработчика на Wordpress, потому что ему нужно уметь писать код и работать с БД, а разработчик на Wordpress в целом может во время своей работы из админки и не вылазить. PHP для "простых" решений и малого бизнеса Первое очевидное применение языка лежит в написании на нём всевозможных сайтов-визиток, интернет-магазинов, форумов и даже немного стартапов. PHP долгое время был крайне прост и не имел множества фич, присущих более строгим языкам. Также язык был крайне нетребователен к инфраструктуре, так как можно было просто поправить нужный файлик на своей VPSке прямо через FTP, без сборок и релизов. К квалификации разработчиков он, впрочем, тоже был нетребователен, так как интерпретируемый, типизация слабая, а архитектура вообще уникальна: php "обречен на смерть" и каждый запрос обрабатывается в новом процессе, можно не бояться ни утечек памяти, ни манипуляций общим состоянием программы, ни прочих способов одному запросу помешать другому. Также из-за своей динамической структуры PHP стал отличным движком для создания CMS, позволяя очень легко расширить и отладить программу, методом подкладывания на сервер файликов с исходниками, для чего даже не нужно быть программистом. Итого, был язык, простой, как палка, прощающий множество ошибок, легкий для изучения и в целом нетребовательный. Логично, такой привлекает множество разработчиков не самой высокой квалификации, просто за счёт того, что более высокая квалификация для работы им и не требуется. А это порождает следующее: низкая квалификация означает низкие рейты, низкие рейты означают привлекательность для малого бизнеса, а это создаёт множество рабочих место и своеобразную популярность, привлекая ещё больше новичков и тд и тп. Где-то здесь находятся и стартапы: имея в начале мало денег и вынужденные выживать среди бесконечных MVP и перестроек, им проще взять что-то максимально простое и дешевое. Большинство стартапов, конечно, умирает, но самые удачливые "выстреливают", стремительно обрастая деньгами и более развитыми технологиями, при этом продолжая нести в себе ядро из всем знакомого PHP. Привет, Facebook, VK, Slack, Такси и тд и тп. Область понятна, как понятно и то, что нужно сделать для того, чтобы оставаться "королём CMSок": ничего не испортить. Нужно просто быть таким же простым и, может, даже примитивным, чтобы за счёт этого выигрывать популярность среди новичков и малого бизнеса у более навороченных технологий. PHP для энтерпрайза Крупные компании обычно сильнее пекутся о качестве, над их продуктами работает намного больше человек, а пользовательская база превосходит стартаповскую на порядки. Естественно, "старый добрый" PHP им не очень нравится и они стараются сделать его архитектурно правильнее, удобнее, производительнее. Они делают сложные фреймворки, абстрагируют компоненты, прикручивают или компиляцию, дженерики, аннотации и делают много чего ещё, пытаясь довести PHP до приемлемого уровня. К крупным же компаниям приходят и разработчики, склонные к саморазвитию и которым вместе с их ростом в какой-то момент становится тесно в мирке "простого PHP". И всё кажется прекрасным, потому что "энтерпрайзный PHP" действительно даёт возможность нормально писать сложные продукты и даже не сильно при этом страдать, но здесь есть одно большое НО и имя ему Java (либо C#). В виртуальную машину Java вложены десятки тысяч человеко-лет, которые делают её лучшей на текущий момент виртуальной машиной в мире. Тулчейн и экосистема джавы развивались годами сразу для “серьезного” языка и тоже множеством людей и компаний, в итоге предоставив огромную и крайне проработанную экосистему (от IDE до стандартов и библиотек), равной которой найти сложно и равной которой экосистема PHP при всех её плюсах не является. На Java пишет намного больше квалифицированных разработчиков, а также намного больше серьёзных энтерпрайз решений, что означает большие рейты, что означает больше квалифицированных разработчиков и тд и тп. И здесь же кроется своего рода ловушка, PHP успешно копирует множество удачных решений из Java-мира, увеличивая собственную сложность и строгость. Но сможет ли он побить одного из "королей энтерпрайза" на его собственном поле? Я несколько сомневаюсь. А это означает, что PHP имеет шансы остаться энтерпрайзом второго эшелона, некой “второй Java”. Для меня это вызывает вопрос: зачем в таком случае нужна “вторая” джава, если уже есть первая? При этом всё было бы не так плохо, если бы стремление к совершенству не противоречило предыдущему направлению: в погоне за тем, чтобы стать "правильным", PHP легко может потерять свою простоту и скорость разработки, а вместе с тем множество дешевых разработчиков, а вместе с ними и привлекательность для бизнеса. PHP для микросервисов и современных фич Оставаясь простым, интерпретируемым и однопоточным, php не то, чтобы успевает за своими более шустрыми и современными конкурентами:
Чтобы доминировать здесь, PHP было бы необходимо в корне измениться, от синтаксиса до архитектуры своей виртуальной машины и принципов её работы, а также основательно обрасти фичами, что в итоге сделает "слоника" совсем другим языком. Это опять возвращает нас к вопросу: а нужен ли сообществу тот, новый PHP? И возможно ли стать новым “крутым” языком с гринтредами, встроенным сервером, монадами и черт знает чем ещё, сохранив свою фирменную нетребовательность? Выводы Кажется, что PHP пытается усидеть на нескольких стульях сразу: быть и удобным для быстрокодеров на CMS за 10$ в час, и изучаться за две недели вчерашним студентом чтобы завтра же найти работу, и чтобы уважаемые люди серьёзные проекты для других уважаемых и серьезных людей могли делать, и чтобы всё было современно и красиво. Не порвутся ли эти штаны? Не потеряет ли "слоник" старых пользователей, не снискав при этом достаточного внимания новых? Непонятно. Конечно, даже самый негативный вариант не означает неминуемой гибели: легаси написано уже очень много, а разработчиков, знающих и любящих именно PHP тоже порядочно. Языки программирования способны умирать очень долго и крестражей у них значительно больше семи. Но, с другой стороны, ada, smalltalk, delphi и прочие всё же умерли, а тот же ruby, похоже, завис где-то в чистилище, при наличии и множества программистов, и кодовой базы. С третьей стороны, пора бы уже включить “похороны PHP” в список спортивных дисциплин, двадцать лет хоронят уже, да всё не умирает никак вот ведь какая ирония. Разумеется, даже при самом удачном течении событий, даже успешно совместивший и “старое” и “новое” PHP вряд ли станет языком #1. И уж конечно, никто не заставляет писать на одном только PHP, все будут выносить нагруженные места в приложения на golang, работать с сокетами на ноде и крутить это всё в кубернетесе, но это уже совсем другая история. =========== Источник: habr.com =========== Похожие новости:
Разработка веб-сайтов ), #_php, #_programmirovanie ( Программирование ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:08
Часовой пояс: UTC + 5