Golang — умирающий язык. Так ли это? -11
Программирование, Go, Блог компании OTUS. Онлайн-образование
Рекомендация: подборка платных и бесплатных курсов PR-менеджеров - https://katalog-kursov.ru/
В преддверии запуска нового потока по курсу «Разработчик Golang» делимся небольшой авторской статьей с нашими читателями.
В последнее время в инфопотоке IT высказывается мнение, что Golang — умирающий язык, и совсем скоро пополнит обширное кладбище технологий Google. Однако, никто не знает, что будет в будущем, а отмирание любого языка программирования — процесс иногда невероятно длительный (ведь если честно, Perl уже давно пора отмереть хотя бы от бэкенда, но нет). Однако давайте по порядку: почему у детища компании Добра нет популярности, свойственной PHP или Python?
Для начала нужно сказать, что сравнивать Go с двумя последними языками немного нечестно — это фрукт другой породы. Golang — это компилируемый многопоточный язык программирования, который был создан не так давно для работы на современных распределенных системах и машинах с многоядерными процессорами. Иными словами, главное качество Go — это скорость его работы, которая может быть важна (например, на микросервисах, или на любом высоконагруженном ресурсе с быстрым откликом, таком как, к примеру, онлайн-трансляции) и может быть неважна — к примеру, написать форум на PHP несколько проще. Хотя есть
варианты и на Go.
История возникновения
Язык был разработан в 2007 году и вышел в open-source в 2009 году. Изначально он был разработан что бы заменить другие компилируемые языки — С, С++ и Java. Последние языки не были специально разработаны как backend — языки, и компания Google попыталась заменить их своим языком, который был создан специально для этого. Если вкратце, то это все. Сейчас язык развивается и дополняется, но не так быстро, как хотелось — к примеру, кроссплатфоренное родное GUI так и не было разработано.
Почему он хорош
Golang обладает скоростью компилируемого языка, но ощущается как интерпретируемый язык. Это означает, что при разработке у вас есть быстрая скорость компиляции (Swift, как дела?) и быстрая система обратной связи, позволяющая понять, что в вашем коде пошло не так.
Документация Golang достаточно разнообразна и часто обновляется. Несмотря на все заявления хейтеров языка, пакеты можно найти практически под любую проблему. Например, можно попробовать написать небольшую
2D игру. Почему бы и нет? Она кстати получится кроссплатформенная).
Лаконичность языка
Go весьма лаконичен. Маловероятно, что ваша программа примет такой вид:
Ладно, ладно. Такое в реальной разработке непросто наверное встретить, но все возможно).
Если вы ещё никогда не видели код на GO, то посмотрите пример небольшого сервера:
package main
//возьмем два пакета. Один выдает наши сообщения, другой работает с http
import (
"fmt"
"net/http"
)
//если вы писали любой простой сервер, например под Node.js
// то тут для вас ничего нового не будет
func hello(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "<h1> Привет я Go </h1> <br /> <h2>Я хочу что бы ты почувствовал мою скорость </h2>\n")
}
func headers(w http.ResponseWriter, req *http.Request) {
for name, headers := range req.Header {
for _, h := range headers {
fmt.Fprintf(w, "%v: %v\n", name, h)
}
}
}
func main() {
http.HandleFunc("/hello", hello)
http.HandleFunc("/headers", headers)
http.ListenAndServe(":8090", nil)
}
Чем он может быть нелюбим
Вакансий по Go к сожалению, не так много, как по PHP или Python. Кроме того, проблема в том, что по Gо словно нет вакансий для junior — разработчика — все словно хотят что бы им сразу как минимум миддла подавали. Однако вакансии junior-разработчика постепенно начинают появляться, хоть и не в таком массовом порядке (22 вакансии стажера разработчика в Москве на ноябрь 2019 года), компании готовы выращивать специалистов внутри. Кроме того, в Go — разработчике заинтересованы те компании, которые владеют большими высоконагруженными сервисами — Yandex, Сбербанк, Mail.ru — иными словами, большие компании, а не «шарашкины конторы» (не будем показывать пальцем, но я надеюсь, вы поняли, о чем я).
Насильное форматирование и прочее
На нескольких конференциях по Go, на которых мне довелось бывать, множество разработчиков высказывали недовольство данным моментом: в Golang нет каких-то проблем со
style-guide: изначально он определен прямо в компиляторе языка. Этот момент можно рассматривать по разному: c одной стороны, вас ограничивают в творческой свободе ставить отступы и пробелы как вам нравится, и оставлять неиспользованные переменные где вы только захотите. С другой стороны, когда вы зайдете в код другого разработчика, вы знаете, какой код-стайл ожидать, и без сюрпризов. Примерно к такому же роду проблем я бы отнес, то, о чем все просят, но до сих пор нет в Golang: дженерики, GUI, локальное хранилище потока и т.д.
Кому стоит начать учить Go, и почему
В первую очередь на Golang смотрят
Ruby on Rails разработчики. Вакансий становятся меньше, и если менять свой основной язык, то тогда уж на что-то перспективное. Кроме того, никто не заставляет уходить с «рельсов» прямо сейчас, ведь можно мигрировать постепенно, чем сейчас и занимаются множество компаний.
Python разработчики. Не потому что на Python сейчас мало вакансий или он неприятен — вовсе нет. Но Golang при создании испытал влияние Python, поэтому если вы всегда хотели начать писать на компилируемом языке, но как-то не получалось — Golang вы выучите быстро.
C++ разработчики. Люди, которые писали на плюсах бэк, осваивают Golang в среднем за 3 — 4 недели (опять же, все со слов докладчиков на Go в продакшене). Здесь вы получаете современный язык программирования, с учетом ошибок предыдущих, без радости стрельбы в ногу.
PHP — разработчик. В конце-концов, почему бы не быть открытым новому? Если вам надоело мутное болото, в которое иногда скатываются сервисы на PHP, посмотрите в сторону Go.
По традиции, несколько полезных ссылок:
Тур по Go — интерактивное введение в программирование на Go
Небольшое введение на русском
Небольшой playground чтобы попробовать что-нить на практике
К сожалению, не доступен сервер mySQL