- PVSM.RU - https://www.pvsm.ru -

Почему веб-разработка на Go приятнее чем на PHP

Для кого я пишу? Для тех кто пишет на php (возможно также python, ruby) и слышал про Go, но ещё не решился его изучить детальнее. Я приведу доводы почему стоит изучать этот язык программирования и почему за ним будущее в веб-разработке.

Я пишу на php около 12 лет и это превосходный язык программирования, на нем написано 90% сайтов всего интернета. Почти каждая популярная CMS написана на PHP.
Почему же я перешел (вернее перехожу) на Go?

Многопоточность

В принципе здесь всё понятно. Многопоточность даёт колоссальные преимущества языку программирования. В Go многопоточность реализована очень просто и выразительно. В следующем пункте раскрою преимущества затрагивающие разработку сайта.

Окружение

Что мне нужно чтобы поднять обычный сайт на php?

Сервер на Linux, установить Nginx, иногда и Apache, поставить PHP, расширения, базу данных, Memcache, настроить Cron. Чтобы не было мучительно больно обслуживать сервер ставлю все в Docker. Вот так выглядит мой обычный Docker проект на PHP.

Почему веб-разработка на Go приятнее чем на PHP - 1

Знакомо?

Что нужно чтобы поднять обычный сайт на Go?

Сервер на Linux и установить Go. Всё. Круто? Так происходит потому что Go многопоточный и любой функционал можно вынести в отдельный поток, например веб-сервер, микро-сервисы, очереди, крон и т.п. Многие вещи уже реализованы в базовых пакетах.

Как же у меня выглядит Docker проект для Go? По сути его вообще нету. Я кладу Docker файлы прямо в папку с кодом сайта или сервиса. Если сайт имеет дополнительные микро-сервисы (например для работы с очередями) то в папку с этим сервисом кладется свой Dockerfile.

Почему веб-разработка на Go приятнее чем на PHP - 2

Порог вхождения

Выучить язык Go очень просто. Всю документацию можно пролистать за пару часов и понять принцип работы языка без углублений. Я думаю у Go самая короткая документация из популярных компилируемых языков.

На официальном сайте можно пройти тур по изучению [1], который раскроет все аспекты языка.

Углубить свои теоретические знания до профи можно за очень короткое время. Рекомендую курсы от Mail.ru на YouTube [2].

Читаемость кода

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

В Go в большинстве случаев открывая какой-нибудь лютый код на 200 файлов и каждый файл полотенце кода, удивляешься тому что ты его способен понять слёту.

IDE

Писать в IDE JetBrains под PHP и под Go — это совершенно разные вещи. Автодополнение работает всегда и везде (99% случаев). Провалится можно в любой метод, в любой!

Тормозов нет совсем. Словами в общем это трудно описать, нужно попробовать. Когда вы начинаете полноценно писать в Goland то понимаете, что назад в PhpStorm уже не хотите возвращаться.

В позапрошлом году на хайлод я спрашивал у Дмитрия Стогова о планах по внедрению в PHP «нативной» многопоточности и похоже, что мы её не увидим, а жаль.

Отладка и тестирование

Многие разработчики PHP вообще не пользуются отладкой из-за того, что его нужно отдельно ставить как расширение, также нужно правильно настроить и многие просто не заморачиваются и пользуются выводом на страницу. В Go же дебаг встроен, по сути можно и не разбираться как он работает внутри, если вы пользуетесь IDE просто ставите точку остановки и запускаете программу.

С тестированием дела обстоят примерно также, не нужно подключать целый фреймворк к проекту, оно уже встроено в базовые пакеты и IDE.

Производительность

Go по скорости исполнения и потребления памяти намного превосходит PHP. Конечно их сравнивать не правильно, так как Go компилируемый язык. Хорошая статья по сравнению производительности есть на Хабре [3]. К примеру у меня миркосервис в полном Docker окружении, который раньше занимал 100-200 мб оперативной памяти, перейдя на Go занимает 1-2 мб. Прирост скорости в 2-5 раз.

Итог

Я люблю PHP и буду продолжать на нем писать по мере необходимости, но Go стал для меня продолжением развития и если бы я переписал PHP с нуля, он бы стал языком Go.

Автор: крепыш

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/285342

Ссылки в тексте:

[1] тур по изучению: https://tour.golang.org/

[2] курсы от Mail.ru на YouTube: https://www.youtube.com/channel/UCmqEpAsQMcsYaeef4qgECvQ

[3] есть на Хабре: https://habr.com/company/mailru/blog/329258/

[4] Источник: http://habrahabr.ru/sandbox/122437/