Golang — умирающий язык. Так ли это? -11


В преддверии запуска нового потока по курсу «Разработчик 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