Уходящий 2015-й год выдался достаточно насыщенным для языка программирования Go и его сообщества. Всё больше людей открывают для себя мощь, скрывающуюся за простотой языка, сообщество растёт, развивается и играет всё более значимую роль в настоящем и будущем Go. Этот — шестой по счёту год существования языка — ознаменовался несколькими важными изменениями внутренностей языка, фантастическим улучшением сборщика мусора, первым шагом к стандартизации работы с зависимостями и многими другими событиями.
Давайте пройдемся вкратце по важным событиями 2015-го года в мире Go.
Начать, пожалуй, стоит с благодарностей аудитории Хабрахабра, которая своими бурными и не очень дискуссиями, создаёт особый интерес к языку Go. Количество плюсов и минусов, которые получают статьи и переводы про Go, явно показывает, как неравнодушны читатели к успеху языка. Конструктивную критику Go вы всегда можете послушать в русскоязычном подкасте Golangshow, а неконструктивная критика, которая зачастую возникает в комментариях и вызывает бурные дискуссии, заставляет всё больше и больше людей выяснить, кто же прав собственноручно.
Так или иначе, 2015-й год отметился тем, что об активном использовании Go скромно и мимоходом заявили такие компании, как SpaceX, Dropbox, Basecamp, MongoDB, ВКонтакте, Baidu и многие другие.
Основными нишами Go по прежнему остаются серверные системы и инфраструктуры — весь спектр, от маленьких микросервисов до экзабайтных распределённых систем хранения данных. REST/Web-бекенды, всевозможные прокси, базы данных, планировщики контейнеров и прочий серверный софт — это те сферы, для которых Go и создавался.
В этом году Go также показал, что на нём можно писать «опердень» (привет, Антон!)) — компания Mondo создаёт электронный банк на Go. Также важный прорыв в этом году был в развитии gomobile — в AppStore появилось первое приложение на Go, а для Android некоторые компании уже давно используют Go с выгодой для себя.
С десктопным софтом на Go в этом году не сложилось: UI-библиотеку gxui забросили, и новых серьезных альтернатив вроде как и нет. Полагаю, что это связано с медленным, но верным отмиранием ценности десктопного софта как класса.
Чтобы дать читателю большее понимание областей Go, приведу вот такую диаграмму, составленную по субьективному пониманию применимости и реального использования Go:
Ну а теперь предлагаю вкратце пройтись по основным событиям Go уходящего года. И, чтобы не гадать, какие же события или материалы были за этот год, попросим Go сделать это за нас и выбрать топ постов из сабреддита golang:
package main
import (
"fmt"
"github.com/jzelinskie/geddit"
"time"
)
func main() {
session := geddit.NewSession("")
opts := geddit.ListingOptions{
Time: geddit.ThisYear,
}
posts, err := session.SubredditSubmissions("golang", geddit.TopSubmissions, opts)
if err != nil {
fmt.Println("Failed to get posts:", err)
}
for _, post := range posts {
date := time.Unix(int64(post.DateCreated), 0)
fmt.Printf("%s: %sn", date.Format("02 Jan 2006"), post.Title)
}
}
Результатом будет следующий список:
- 19 Aug 2015: Go 1.5 is released
Анонс релиза 1.5, в котором компилятор и рантайм Go был переписан с С на Go, что позволяет авторам более смело продвигаться вперёд в своих планах по улучшению сборщика мусора и рантайма Go в целом. Небольшим шагом назад стало замедление времени компиляции примерно в полтора раза. Теперь вместо 2 секунд нужно ждать 3, и это немного напрягает. Но новый сборщик мусора в Go 1.5 теперь имеет предсказуемые паузы, которые в 99% случаев не превышают 10мс. - 24 Feb 2015: The Go compilers are now written in Go
Собственно, анонс вышеописанных изменений за пол-года до выхода Go 1.5 - 05 Mar 2015: The Go Programming Language by Brian W. Kernighan, Alan Donovan
Анонс книги Брайана Кернигана и Алана Донована, которая обещает стать почти такой же культовой, как книга Кернигана по C. Книга была издана в конце октября, и многие уже её получили и прочли! - 12 Jul 2015: Ivy — First Android App in 100% Golang on Google Play (written by the Go Team)
Первое приложение на Go + GoMobile в AppStore. - 13 Aug 2015: Go 1.6 GC improvements plan
Детальный документ с планируемыми изменениями сборщика мусора в Go 1.6. Поскольку язык не меняется, то основная работа и силы брошены на улучшение инструментария, компилятора, и рантайма. Этот документ для тех, кто интересуется внутренностями Go. - 08 Aug 2015: Dropbox's infrastructure is Go at a huge scale
Скромный твит инженера Dropbox, признающегося в том, что в Dropbox не только кухня получила Мишленовскую звезду, но и что их распределенная система хранения данных, которая обрабатывает экзабайты данных и гоняет их по терабитным каналам, полностью написана на Go. - 30 Jun 2015: Go 1.5 will be able to build iOS apps.
Ещё один анонс возможностей GoMobile в предверии релиза Go 1.5. - 14 Dec 2015: How to complain about Go
А это моя статья на английском языке в стиле сатиры, высмеивающая разработчиков, критикующих Go за то, что тот не похож на их любимый язык. На Хабр перевод не делал, потому что сатиру тут вряд ли оценят. - 29 May 2015: rsc on why go does not have generics: it's technical, not political
Спокойный и внятный ответ Расса Кокса — одного из авторов Go о том, что отсутствие дженериков в Go — это не политическое, а техническое решение. Авторы не видят красивого решения, которое даст пользователям возможность совать дженерики по поводу и без повода и не превратит язык в унылое Г. - 10 Nov 2015: Six years of Go — The Go Blog
6-й день рождения Go! - 10 Jun 2015: [Parse.com] How We Moved Our API From Ruby to Go and Saved Our Sanity
Блог компании Parse, описывающий их переезд с Ruby на Go. - 15 Dec 2015: Git Appraise, written by Google in Go, distributed code review
Анонс проекта от Google — распределённая система code review, написанная на Go. - 14 Nov 2015: For Better or For Worse
Отличная статья об оценке приоритетов подходов в языках. Перевод был тут на Хабре. - 08 Oct 2015: gologin: Login handlers for Google, Github, Facebook, Twitter, SMS, OAuth1/2, etc.
Анонс пакета для работы с основными OAuth-провайдерами. - 15 Feb 2015: The State of Go
Статья из официального блога Go о текущем состоянии дел в Go (на момент февраля 2015) - 08 Apr 2015: Stack Overflow developer survey: Go is in the top five most loved languages
Go в топе самых обожаемых языков программирования. Бесполезный критерий, конечно, но всё-равно мимими. - 20 Aug 2015: Billions of request per day meet Go 1.5
Статья о том, как компания, чей софт на Go обрабатывает миллиарды запросов в день, перешла на Go 1.5 и колоссально уменьшила паузы GC и общее время отклика. Перевод на хабре.
В этот топ много чего не попало, поэтому вкратце из того, что вспоминается: была написана реализация HTTP2, которая будет в стандартной библиотеке в Go 1.6 (да, сервера на Go 1.6 будут поддерживать HTTP2 из коробки), ребята из JetBrains провели (и продолжают проводить) колоссальную работу по развитию плагина для Go для IntelliJ IDEA, равно как и Fatih Arsian, автор плагина vim-go, который теперь отлично работает с NeoVim. Также появилась (не особо нужная) поддержка shared libraries.
Важным этапом можно назвать первый шаг в стандартизации решения для управления зависимостями в Go. Подход монорепозитория в Google не очень хорошо работает с «классической» схемой, где все зависимости нужно вендорить под проект, и в Go 1.5 появилась экспериментальная поддержка специального соглашения брать зависимости из папки vendor/, если таковая есть в проекте. В Go 1.6 это поведение не будет больше экспериментальным, но всё ещё опциональным, и в Go 1.7 планируется быть уже по-умолчанию. В тоже время, сообществу ещё предстоит прийти к консенсусу как лучше автоматизировать работу с зависимостями, так так есть несколько решений.
Говоря о прошедших событиях, нельзя обойти стороной конференции по Go. В этом году прошло 13 (!) конференций разного масштаба, и в следующем году планируется ещё больше. Из новых — это конференции в Китае, Индии и Дубаи! Основными же конференциями остаются международная GopherCon, которая традиционно проходит в Денвере, и европейская dotGo в Париже.
Также в этом году был запущен уже упомянутый выше русскоязычный еженедельный подкаст по Go — Golangshow. В подкасте ведущие не только обсуждают свежие новости из мира Go, но и приглашают интересных гостей. Уже записано 35 выпусков, так что смело подписывайтесь в iTunes или на сайте — https://golangshow.com.
Ну а в следующем, 2016-м году, нас ждёт Go 1.6 и Go 1.7, ещё больше интересных проектов и продуктов на Go, новых компаний и вакансий.
С Новым Годом и счастливого кодинга!
Автор: divan0