Зачем я начал программировать на Golang?

Зачем я начал программировать на Golang?

Согласно Википедии, Go (или Golang) - это язык программирования, который был разработан командой Google и впервые он появился в 2009 году. Он был разработан специально для бэкенд-разработки и инфраструктурных проектов.

Go - это язык программирования с открытым исходным кодом, который позволяет производить простой, эффективный и масштабируемое ПО.

В голову приходят следующие проекты, которые полностью написаны на GO:

  • Docker - движок по управлению контейнерами.
  • Kubernetes - система кластеризации для контейнеров. Разработана Google и является системой с открытым кодом.
  • Traefik - балансировщик нагрузки, разработанный Traefik Labs.
  • Consul, Terraform - инструменты по управлению инфраструктурой, разработанные Hashicorp.

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

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

Моими личными предпочтениями в пользу языка программирования GO являются следующие преимущества:

  • портативность - скомпилировали исполняемый файл, который можно спокойно использовать на других компьютерах. Для этого не требуется устанавливать какое-то дополнительное ПО;
  • кросс-платформенность - можно скомпилировать бинарники для различных операционных систем: Linux, Windows, MacOs. При этом генерируются они достаточно просто - командой go build. По умолчанию в Go используется статическая компоновка. Это значит, что создаваемые двоичные файлы легко переносятся на другие компьютеры с той же ОС. Как следствие, после успешной компиляции GO-программы и создания исполняемого файла не нужно беспокоиться о библиотеках, зависимостях и прочих вещах;
  • параллелизм - Go обладает встроенным механизмом параллелизма, который делает его очень удобным инструментом для разработки проектов, где присутствуют задачи, которые надо выполнять в фоне;
  • экосистема - в наличии уже разработано большое количество библиотек и интересных проектов. Часть из них приведены ниже.
  • удобная разработка - Go включает в себя встроенную систему юнит-тестирования и профайлер, при этом они очень простые в использовании;
  • стандартизированная разработка - Go автоматически форматирует написанный код, поэтому читать чужой код и разбираться с существующими проектами очень просто.

Как уже было сказано, для Go существует большое количество готовых инструментов и пакетов, доступных сразу после установки. Они называются stdlib. Все они значительно упрощают жизнь разработчика. Функции, входящие в стандартную библиотеку, предварительно тестируются и отлаживаются разработчиками. В основном они работают без ошибок. Существует также большое количество пакетов, доступных отдельно для установки. Есть и множество готовых интересных проектов, мой самый любимый - https://github.com/cortezaproject/corteza. Приведу перечень наиболее популярных пакетов:

  • crypto - готовые библиотеки для работы с криптографией
  • compress - для работы с архивами.
  • http - очень мощный и простой http-клиент. Благодаря ему можно создавать веб-приложения и поднять свой веб-сервер.
  • net - работает напрямую с сокетами, url-адресами и dns.
  • encoding/json - работает напрямую с файлами json.
  • text/templates - позволяет генерировать html-страницы.
  • os - позволяет работать с примитивами операционной системы.

Полный список готовых пакетов можно найти здесь: https://golang.org/pkg/

Означает ли для меня это, что отныне я перестану программировать на php и переключусь только на GO? Конечно же нет. Как и любой другой язык программирования, go обладает рядом недостатков.

  1. Go не для быстрого старта. На нём нельзя быстро поднять какой-нибудь простой проект для тестирования рынка. Если к вам пришёл заказчик, которому надо быстро, дёшево и максимально просто, то go здесь точно не применим.
  2. В GO нет встроенной поддержки объектно-ориентированного программирования. Это является небольшой проблемой, потому что я привык структурировать проект по DDD. В GO это тоже можно реализовать, но выглядит не так наглядно, как в PHP. Тем не менее в GO можно имитировать наследование, используя композицию.
  3. Разработка на нём всегда дольше и дороже. Это связано в первую очередь со слабой документацей. По языку есть только одна очень полезная книга, о которой мало кто знает - «Learning Go» Miek Gieben. В официальной документации по модулям чаще всего перечислены только методы, без какого-либо описания. Это сильно повышает порог вхождения, что неблагоприятно сказывается на размере сообщества языка.

Несмотря на всё это, я вижу GO как вполне достойный язык программирования. Во время изучения он меня пока не разочаровал. Я уже написал на нём несколько проектов, сам синтаксис мне по душе. Если мне нужно написать какой-нибудь простой микросервис, консольное приложение, проект, который будет работать под большой нагрузкой, то мой выбор обязательно упадёт на GO.

Популярное

Самые популярные посты

Как быть максимально продуктивным на удалённой работе?
Business

Как быть максимально продуктивным на удалённой работе?

Я запустил собственный бизнес и намеренно сделал всё возможное, чтобы работать из любой точки мира. Иногда я сижу с своём кабинете с большим 27-дюймовым монитором в своей квартире в г. Чебоксары. Иногда я нахожусь в офисе или в каком-нибудь кафе в другом городе.

Привет! Меня зовут Сергей Емельянов и я трудоголик
Business PHP

Привет! Меня зовут Сергей Емельянов и я трудоголик

Я программист. В душе я предприниматель. Я начал зарабатывать деньги с 11 лет, в суровые 90-е годы, сдавая стеклотару в местный магазин и обменивая её на сладости. Я зарабатывал столько, что хватало на разные вкусняшки.

Акция! Профессиональный разработчик CRM за 2000 руб. в час

Выделю время под ваш проект. Знания технологий Vtiger CRM, SuiteCRM, Laravel, Vue.js, Golang, React.js. Предлагаю варианты сотрудничества, которые помогут вам воспользоваться преимуществами внешнего опыта, оптимизировать затраты и снизить риски. Полная прозрачность всех этапов работы и учёт временных затрат. Оплачивайте только рабочие часы разработки после приемки задачи. Экономьте на платежах по его содержанию разработчика в штате. Возможно заключение договора по ИП. С чего начать, чтобы нанять профессионального разработчика на full-time? Просто заполните форму!

Telegram
@sergeyem
Telephone
+4915211100235