Почему PHP разработчики, должны изучать Golang
Go или Golang, это быстрый, масштабируемый и довольно производительный язык программирования с открытым исходным кодом, разработанный Google и поддерживаемый сообществом. Все больше и больше приложений используют его в различных реализациях. Хотя Роб Пайк сказал, что «… мы ожидали, что программисты на C ++ увидят в Go альтернативу…», но я действительно думаю, что вы, ребята, Пхпешники, должны изучать Golang! Давайте я обьясню ПОЧЕМУ.
Легок для изучения
PHP прост в изучении. Golang так же прост, как PHP!
Синтаксис PHP похож на языки программирования семейства C (C / C ++ / Java и т. Д.). Если вы уже работали с этими языками, вам будет не так уж сложно написать немного строк кода, так же, как вы когда впервые начинали писать на PHP.
Golang является языком программирования семейства си C. Эм ... с небольшой разницей в синтаксисе. К примеру, ключевое слово «for» аналогично такому же ключевому слову в PHP, но без пары круглых скобок. И ключевое слово «if» также без пары скобок. Советую прочитать Effective Go для того, чтобы узнать об этом больше.
Golang имеет только 25 ключевых слов и 47 операторов, разделителей или других специальных токенов. Не нужно пытаться запомнить все литералы наизусть. А система типов вообще красива и проста в использовании. Конечно не огромная обьектно-ориентированная инфраструктура, но структурные типы с методами свободно практикуются. По-праву, дизайн интерфейса - одна из моих любимых частей Го. По окончанию вашего «Тура по Го», основываясь на опыте работы с PHP, некоторые задания можно попробовать написать на нем.
Легок в использовании
PHP-скрипты будут оцениваются компонентами SAPI: модулем веб-сервера, PHP-fpm или CLI. Все, что нужно для развертывания PHP, - это среда SAPI. А как раз таки самая сложная для понимания часть PHP для начинающего - развертывание среды.
Любой код на Го будет скомпилирован и связан с нативным кодом. Поэтому нам не нужно развертывать среду для его выполнения, кроме среды сборки. И, кстати, по сравнению с развертыванием среды PHP, она не так сложна. Вы правда считаете, что развернуть среду для PHP действительно сложно? Я так не думаю. В самом деле!
Для развертывания среды сборки достаточно проделать всего 3 шага:
- Загрузите исходный код Голанга
- Настройте переменные среды. Вот ссылка на пост в блоге, хорошо обьясняющий все детали: настройка среды Go
- Запустите «all.bash» в каталоге «src».
А можно пойти другим путем: используем бинарный пакет для настройки.
Затем можно использовать набор инструментов под названием «go». Использовать инструмент go не сложнее чем, тот же инструмент CLI в PHP. «The Go Tool» - здесь вы найдете подробное объяснение использования.
Миф о PHP
Если язык программирования довольно прост в изучении и использовании, должны ли мы изучать и использовать его? Многие языки программирования просты в изучении и использовании. Должны ли мы поэтому изучить и использовать их все? Ответ прост: НЕТ!
Так почему же вы, ребята, Пхпешники, должны изучать Голанг? Да просто потому что кодить на нем круто! Я конечно шучу, но это правда. В любом случае, для начала давайте обсудим сам PHP.
PHP - это «скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений, являющийся одним из лидеров среди языков, применяющихся для создания динамических веб-сайтов. (Википедия)». Важная особенность PHP в том, что он встраивается в код вместе с HTML. PHP код пишется в теге «<? Php…?>»; HTML пишется снаружи от тега. Язык, кроме того, имеет мощную систему расширения. Расширение можно написать даже на C с помощью Zend API. Фактически, обработку данных реализовали благодаря этим расширениям. ИМХО, PHP должен быть лучшим шаблонным языком программирования.
Но, представим, что вы имеете большой опыт в PHP и столкнулись с каким-то сложным веб-приложением. Должно быть вы ощущали, как PHP связывает руки и вы становитесь бессильным в решение проблемы средствами языка. Он не имеет ни встроенного механизма параллельных операций, ни потоков, ни многопроцессорной поддержки, ни X-подпрограмм (X-routines).
Медленный источник данных будет блокировать обработку всей страницы. Вам всегда нужен мощный веб-сервер для PHP. Для обработки данных пишут Бэкенд-программы на других языках.
Очередь сообщений, кэш, прокси… Система, включающая в себя не только PHP, но и множество сервисов и системных компонентов. В этой архитектуре PHP действительно будет языком шаблонов с некоторой логикой.
Пхпешники всегда ищут решения, вроде «многопоточность PHP» или параллельная среда RPC для PHP. Я не могу сказать, какая из них лучше. Но, я уверен, что для бэкэнда вам следует воспользоваться другим языком программирования. Я сам пробовал C (борьба с malloc / free) / Java (оступился и попал в ад jar) / Python (никогда не поддерживал его и терял типы ). Получаю больше производительности, должен бороться с управлением памятью; Если я использую GC, я должен развернуть и запустить виртуальную машину; Если мне станет удобно, неусидчивость меня погубит… У каждого языка есть свои преимущества и недостатки.
Ну да ладно! Давайте пока вернемся к Го!
Golang имеет GC, тем самым у нас нет необходимости заботиться об управлении памятью (или этому нужно уделять меньше внимания). И код компилируется в машинный код. Поэтому, «cp» и «mv» необходимы для развертывания приложения, написанного Golang. И как я только что говорил, Golang - это компилируемый язык со статической системой типов. Так что у вас нет шансов перепутать типы переменных. Конечно, одна из самых важных вещей - это PHPer, который переезжает и в Голанг, «не так уж выразительно, но можно улучшить производительность и играть с параллелизмом (Роб Пайк)». «Почему бы не использовать GO?» серьезно заявлял он.
Давайте я расскажу немного о собственном опыте в моей команде: мы используем Gearman для обработки данных бэкэнда. Мы подключили и настроили PHP через Gearman Job Server с помощью Gearman API. Оригинальный обьект worker был написан на python. С этой версией довольно много проблем (проблемы то наши, но из-за питона).
Но у нас работало и ладно . А потом мы решили переписать обьект worker на Го. И это было прекрасно. Я написал Gearman API для Golang и пакет Golang с использованием Zend API (cgo - еще одна удивительная вещь) для оценки PHP-скрипта в Golang. Затем объединили их вместе - обьект worker Gearman, который может выполнять сценарии PHP. Он уже около 3 месяцев у нас в продакшене и выглядит великолепно! И я также написал RPC-комбинатор для объединения вызовов RPC в PHP-скрипте. Будем использовать его в нашем следующем продукте.
Все идет по-плану, без споев! Спасибо Golang!
В любом случае, большинству PHP-разработчикам всегда нужно повышать свой уровень и изучать другие языки бэкэнд-разработки. Если вы начали для себя поиски нового языка или уже рьяно запрограммировали что то, почему бы вам не попробовать Голанг? Он сделает вашу жизнь немного легче и счастливее, и вы сможете больше времени проводить с семьей и друзьями, кушать любимую еду и посещать места, которые вы любите.
Вот почему вы, ребята, Пхпешники, должны изучать Голанг! Достаточно этих фактов? Я думаю, да!