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

  1. Используйте язык программирования, подходящий для вашего приложения.
  2. Используйте тот язык программирования, в котором у вас больше всего опыта.

В моем случае я уже работаю в веб-разработке 12 лет. После того, как я решил, каким проектом буду заниматься дальше, мне стало ясно, что я останусь в веб-разработке. По рекомендациям опытных разработчиков, мне и в этом случае следует остановиться на PHP. Зачем мне переключаться на другой язык, если я знаю, что это займет гораздо больше времени?

Что делает PHP хорошим?

Я по-прежнему считаю PHP хорошим выбором для программирования серверных веб-приложений. Когда появился PHP, динамическая доставка HTML-страниц была довольно громоздкой. PHP хорошо решил эту задачу. Он прост в освоении и упрощает разработку простых веб-приложений.

Но время шло. Хотя раньше речь шла о доставке веб-контента в виде HTML и небольшого количества CSS + JavaScript, варианты использования сильно изменились.

Современные приложения больше похожи на сеть различных программных пакетов, сервисов и фреймворков. Доставка динамического HTML обеспечивается уже существующими программными пакетами, такими как системы магазинов, CMS, ERP или что-то еще. Кроме того, сегодня веб-сайты стали намного более интерактивными, поэтому JavaScript берет на себя большую часть генерации HTML.

Основные задачи, которые еще необходимо выполнить в бэкенде (т.е. на стороне сервера), по сути следующие:

  • Разрешить маршруты
  • Аутентифицируйте пользователей и проверяйте права
  • Проверка данных запроса и форм
  • Запись и чтение базы данных
  • Делайте вызовы API тут и там
  • Возврат результатов HTML или JSON.

Эти задачи сегодня стали настолько элементарными, что реализуются по нескольку раз в каждом достойном упоминания языке программирования с помощью фреймворков и готовых программных пакетов, в некоторых случаях без каких-либо усилий по программированию. Это означает, что то, для чего первоначально использовался PHP, может быть реализовано бесчисленным количеством эквивалентных или лучших решений.

Чего PHP не может?

Из-за возраста и распространенности PHP на PHP действительно можно реализовать очень много вещей. Кроме того, нельзя отрицать, что сообщество PHP, начиная с версии 7, добилось больших успехов в очистке и улучшении языка. PHP не очень инновационный, но он хорошо адаптирует концепции других языков. Фактически, большинство веб-разработчиков PHP не видят необходимости использовать какой-либо другой язык программирования. (Кроме JavaScript для интерфейса, конечно).

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

Если вы в основном хотите разрабатывать веб-приложения, я бы предпочел JavaScript/TypeScript. Потому что ни один веб-сервис не может обойтись без JavaScript. Это означает, что вам так или иначе придется коснуться JavaScript. Практически нет смысла изучать дополнительный серверный язык, хотя все задачи можно реализовать и на стороне сервера с помощью JavaScript и Nodejs.

Единственный аргумент, который я приведу в пользу PHP, это тот факт, что многие компании используют PHP. Это означает, что спрос на разработчиков PHP всегда высок, и вам не нужно долго искать работу, если вы этого хотите.

Так почему Python, а не JavaScript?

Исходя из предыдущих соображений, я тоже начал полностью сосредотачиваться на JavaScript. Но мы должны взглянуть на то, какие приложения все еще разрабатываются сегодня. Потому что, как я уже упоминал, уже есть полностью готовое и часто бесплатное ПО для всех возможных вариантов использования, которое можно интегрировать. Когда вы разрабатываете сегодня, вы создаете своего рода клей между отдельными компонентами и пользовательским интерфейсом для пользователя. JavaScript — очень хороший выбор для этого.

Другим случаем является разработка приложений, для которых до сих пор нет альтернатив, либо их очень мало, либо они плохие. В этом случае часто придется работать с нишевыми решениями. Чтобы показать, какие варианты использования я имею в виду, попробуйте реализовать следующие варианты использования в PHP или JavaScript:

  • Откройте презентацию PowerPoint в качестве шаблона и обменяйтесь отдельным содержимым.
  • Преобразование HTML в доступный PDF.
  • Анализ данных
  • Отрисовка диаграмм для отчетов на стороне сервера
  • Применять модели машинного обучения

Это всего лишь несколько примеров, с которыми я столкнулся в последнее время, и со всеми этими вариантами использования часто приходится искать очень долго. В большинстве случаев решения больше не реализуются на PHP, а работают как независимое программное обеспечение. Затем помогает себе дополнительный сервер, к которому нужно обращаться через дополнительный API. Или вы вызываете оболочку из PHP. Оба всегда неприятны. Потому что это раздувает все приложение дополнительными необходимыми программами, которые работают вместе.

Однако на этом этапе вы также закончили с JavaScript. Поскольку JavaScript стал популярен намного позже, экзотические темы иногда вообще не затрагиваются. Именно это показало мне, что я не могу реализовать свои приложения только на JavaScript.

Когда я смотрю на свои варианты использования и подход, который я использовал до сих пор, я остаюсь с Python и Java.

Первый проект с Python

Python для меня не совсем новая территория, поэтому я знал, на что иду. Однако я никогда раньше не реализовывал веб-приложение на Python. После моего первого небольшого проекта с Dojo я полностью увлекся.

Для меня Python — бесспорный номер 1, когда дело доходит до быстрого получения результатов. В то время как Java, в частности, является невероятно мощным языком со всевозможными вариантами использования, в сравнении с этим вам нужно написать тонны кода, чтобы реализовать то же самое, что и в Python, с помощью нескольких строк кода.

Конечно, есть всевозможные фреймворки, облегчающие вашу работу. В PHP Laravel и Symfony — очень популярные и широко используемые фреймворки для веб-приложений. Но ни с одной из этих сред вы не сможете получить результат с такими же минимальными усилиями, как с Dojo.

Помимо эффективности во времени разработки, меня особенно радуют следующие небольшие особенности Python.

  • Код относительно небольшой.
  • Отладчик работает «из коробки» (в отличие от Xdebug в PHP).
  • Профилирование производительности работает из коробки
  • Синтаксис минималистичный (без символов $, -› и {}).
  • Большинство вещей просто работает. Никакого адского конфигурирования, как в Node.js
  • Есть готовые реализации для всех видов использования (даже экзотических).
  • В Python вы не ограничены серверными приложениями. (Настольные приложения также возможны без особых дополнительных усилий).

А вы? Могли бы вы сегодня порекомендовать PHP в качестве отправной точки для начинающего программиста? Если да, то почему? Если нет, то какой язык вы бы порекомендовали?