LINUX.ORG.RU

История изменений

Исправление dimuska139, (текущая версия) :

Моя история

Пишу на php с 2012 примерно года. Плевался с него долго и перестал плеваться году, наверное в 2015, когда научился нормально писать код, используя шаблоны проектирования и покрывая код тестами. Иногда я в работе использую сейчас и Go, но не могу сказать, что это альтернатива php - это разные языки для разных задач. Кратко напишу по поводу того, с чем имел дело (речь, подчеркну, идёт о веб-разработке).

Python

Если брать Django или Flask, то это абсолютно то же самое, что писать на Laravel или Php Slim - серьёзно, разницы никакой. Ну, может быть, субъективные различия: например, что кому-то Python больше нравится, чем Php. Если брать что-то из асинхронщины (например, FastAPI), то выясняется внезапно, что использовать нормально ORM не получится, т.к. та же SqlAlchemy пока что синхронная. В итоге оказывается, что ORM юзать нормально не получится - и тогда задаёшься вопросом, а нафиг вообще питон, если скорость разработки не сильно выше получается, чем на Go?

Go

Очень многие вещи надо писать руками. Инфраструктура до конца не допилена. Например, если захочешь сделать миграции и вшивать их в бинарь, то столкнёшься с кучей геморроя. Более-менее большие API (хотя бы от 100 эндпоинтов) писать на Go задолбаешься, а проект превратится в парашу. Частично какой-нибудь Google Wire тебе поможет всё в порядок привести, но это не точно. А уж работа с json в Go - это просто сказка. Если ад существует, то выглядит он именно так. Есть и плюсы, безусловно, но эти минусы прямо реально раздражают. Особено бесконечное повторение одних и тех же конструкций в коде и излишняя многословность языка.

Java Script

Я для себя сделал вывод: если JS брать, то лучше не надо, потому что язык такой себе. Лучше использовать Type Script. Что мы имеем из фреймворков? NestJS. И всё. Всё, что вокруг - параша. И чуть в сторону от NestJS (ставишь стороннюю либу) - получаешь нетипизированную парашу. Зато есть хорошая ORM - TypeORM. Но постоянно при разработке испытываешь ощущение, что ты стоишь в болоте на кочках, а под тобой несколько метров трясины в виде JS.

Если говорить о производительности всего этого дела в рамках какого-нибудь API, то разницы вообще никакой. Даже если ты возьмёшь Go, потому что большую часть времени ответа сервера занимает время выполнения запроса к базе данных и сетевые расходы, а остальное - копейки.

На фоне всего этого PHP выглядит не столь паршиво, на самом деле. Symfony или php slim - классные фреймворки, а Doctrine ORM - классная ORMка. Можно из неё юзать только квери-билдер и маппер (я так юзаю), если ORM не любишь - Doctrine Dbal.

Исходная версия dimuska139, :

Моя история

Пишу на php с 2012 примерно года. Плевался с него долго и перестал плеваться году, наверное в 2015, когда научился нормально писать код, используя шаблоны проектирования и покрывая код тестами. Иногда я в работе использую сейчас и Go, но не могу сказать, что это альтернатива php - это разные языки для разных задач. Кратко напишу по поводу того, с чем имел дело (речь, подчеркну, идёт о веб-разработке).

Python

Если брать Django или Flask, то это абсолютно то же самое, что писать на Laravel или Php Slim - серьёзно, разницы никакой. Ну, может быть, субъективные различия: например, что кому-то Python больше нравится, чем Php. Если брать что-то из асинхронщины (например, FastAPI), то выясняется внезапно, что использовать нормально ORM не получится, т.к. та же SqlAlchemy пока что синхронная. В итоге оказывается, что ORM юзать нормально не получится - и тогда задаёшься вопросом, а нафиг вообще питон, если скорость разработки не сильно выше получается, чем на Go?

Go

Очень многие вещи надо писать руками. Инфраструктура до конца не допилена. Например, если захочешь сделать миграции и вшивать их в бинарь, то столкнёшься с кучей геморроя. Более-менее большие API (хотя бы от 100 эндпоинтов) писать на Go задолбаешься, а проект превратится в парашу. Частично какой-нибудь Google Wire тебе поможет всё в порядок привести, но это не точно. А уж работа с json в Go - это просто сказка. Если ад существует, то выглядит он именно так. Есть и плюсы, безусловно, но эти минусы прямо реально раздражают. Особено бесконечное повторение одних и тех же конструкций в коде и излишняя многословность языка.

Java Script

Я для себя сделал вывод: если JS брать, то лучше не надо, потому что язык такой себе. Лучше использовать Type Script. Что мы имеем из фреймворков? NestJS. И всё. Всё, что вокруг - параша. И чуть в сторону от NestJS (ставишь стороннюю либу) - получаешь нетипизированную парашу. Зато есть хорошая ORM - NestJS. Но постоянно при разработке испытываешь ощущение, что ты стоишь в болоте на кочках, а под тобой несколько метров трясины в виде JS.

Если говорить о производительности всего этого дела в рамках какого-нибудь API, то разницы вообще никакой. Даже если ты возьмёшь Go, потому что большую часть времени ответа сервера занимает время выполнения запроса к базе данных и сетевые расходы, а остальное - копейки.

На фоне всего этого PHP выглядит не столь паршиво, на самом деле. Symfony или php slim - классные фреймворки, а Doctrine ORM - классная ORMка. Можно из неё юзать только квери-билдер и маппер (я так юзаю), если ORM не любишь - Doctrine Dbal.