- PVSM.RU - https://www.pvsm.ru -
Для кого я пишу? Для тех кто пишет на php (возможно также python, ruby) и слышал про Go, но ещё не решился его изучить детальнее. Я приведу доводы почему стоит изучать этот язык программирования и почему за ним будущее в веб-разработке.
Я пишу на php около 12 лет и это превосходный язык программирования, на нем написано 90% сайтов всего интернета. Почти каждая популярная CMS написана на PHP.
Почему же я перешел (вернее перехожу) на Go?
В принципе здесь всё понятно. Многопоточность даёт колоссальные преимущества языку программирования. В Go многопоточность реализована очень просто и выразительно. В следующем пункте раскрою преимущества затрагивающие разработку сайта.
Что мне нужно чтобы поднять обычный сайт на php?
Сервер на Linux, установить Nginx, иногда и Apache, поставить PHP, расширения, базу данных, Memcache, настроить Cron. Чтобы не было мучительно больно обслуживать сервер ставлю все в Docker. Вот так выглядит мой обычный Docker проект на PHP.
Знакомо?
Что нужно чтобы поднять обычный сайт на Go?
Сервер на Linux и установить Go. Всё. Круто? Так происходит потому что Go многопоточный и любой функционал можно вынести в отдельный поток, например веб-сервер, микро-сервисы, очереди, крон и т.п. Многие вещи уже реализованы в базовых пакетах.
Как же у меня выглядит Docker проект для Go? По сути его вообще нету. Я кладу Docker файлы прямо в папку с кодом сайта или сервиса. Если сайт имеет дополнительные микро-сервисы (например для работы с очередями) то в папку с этим сервисом кладется свой Dockerfile.
Выучить язык Go очень просто. Всю документацию можно пролистать за пару часов и понять принцип работы языка без углублений. Я думаю у Go самая короткая документация из популярных компилируемых языков.
На официальном сайте можно пройти тур по изучению [1], который раскроет все аспекты языка.
Углубить свои теоретические знания до профи можно за очень короткое время. Рекомендую курсы от Mail.ru на YouTube [2].
Было ли у вас такое, что вы открываете чужой код, модуль, плагин и т.п. и понимаете, что ничего не понимаете. И чтобы разобраться в тонкостях нужно как минимум с дебагом пройтись по основному коду.
В Go в большинстве случаев открывая какой-нибудь лютый код на 200 файлов и каждый файл полотенце кода, удивляешься тому что ты его способен понять слёту.
Писать в 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/
Нажмите здесь для печати.