- PVSM.RU - https://www.pvsm.ru -

Go в 2015 году

Уходящий 2015-й год выдался достаточно насыщенным для языка программирования Go и его сообщества. Всё больше людей открывают для себя мощь, скрывающуюся за простотой языка, сообщество растёт, развивается и играет всё более значимую роль в настоящем и будущем Go. Этот — шестой по счёту год существования языка — ознаменовался несколькими важными изменениями внутренностей языка, фантастическим улучшением сборщика мусора, первым шагом к стандартизации работы с зависимостями и многими другими событиями.
Давайте пройдемся вкратце по важным событиями 2015-го года в мире Go.

Go в 2015 году - 1

Начать, пожалуй, стоит с благодарностей аудитории Хабрахабра, которая своими бурными и не очень дискуссиями, создаёт особый интерес к языку Go. Количество плюсов и минусов, которые получают статьи и переводы про Go, явно показывает, как неравнодушны читатели к успеху языка. Конструктивную критику Go вы всегда можете послушать в русскоязычном подкасте Golangshow [1], а неконструктивная критика, которая зачастую возникает в комментариях и вызывает бурные дискуссии, заставляет всё больше и больше людей выяснить, кто же прав собственноручно.

Так или иначе, 2015-й год отметился тем, что об активном использовании Go скромно и мимоходом заявили такие компании, как SpaceX [2], Dropbox [3], Basecamp [4], MongoDB [5], ВКонтакте [6], Baidu [7] и многие другие.
Go в 2015 году - 2

Основными нишами Go по прежнему остаются серверные системы и инфраструктуры — весь спектр, от маленьких микросервисов до экзабайтных распределённых систем хранения данных. REST/Web-бекенды, всевозможные прокси, базы данных, планировщики контейнеров и прочий серверный софт — это те сферы, для которых Go и создавался.

В этом году Go также показал, что на нём можно писать «опердень» (привет, Антон [8]!)) — компания Mondo создаёт [9] электронный банк на Go. Также важный прорыв в этом году был в развитии gomobile — в AppStore появилось первое приложение [10] на Go, а для Android некоторые компании уже давно используют [11] Go с выгодой для себя.

С десктопным софтом на Go в этом году не сложилось: UI-библиотеку gxui [12] забросили, и новых серьезных альтернатив вроде как и нет. Полагаю, что это связано с медленным, но верным отмиранием ценности десктопного софта как класса.

Чтобы дать читателю большее понимание областей Go, приведу вот такую диаграмму, составленную по субьективному пониманию применимости и реального использования Go:

Go в 2015 году - 3

Ну а теперь предлагаю вкратце пройтись по основным событиям Go уходящего года. И, чтобы не гадать, какие же события или материалы были за этот год, попросим Go сделать это за нас и выбрать топ постов из сабреддита [13] golang:
Go в 2015 году - 4

Код с картинки

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 [14]
    Анонс релиза 1.5, в котором компилятор и рантайм Go был переписан с С на Go, что позволяет авторам более смело продвигаться вперёд в своих планах по улучшению сборщика мусора и рантайма Go в целом. Небольшим шагом назад стало замедление времени компиляции примерно в полтора раза. Теперь вместо 2 секунд нужно ждать 3, и это немного напрягает. Но новый сборщик мусора в Go 1.5 теперь имеет предсказуемые паузы, которые в 99% случаев не превышают 10мс.
  • 24 Feb 2015: The Go compilers are now written in Go [15]
    Собственно, анонс вышеописанных изменений за пол-года до выхода Go 1.5
  • 05 Mar 2015: The Go Programming Language by Brian W. Kernighan, Alan Donovan [16]
    Анонс книги Брайана Кернигана и Алана Донована, которая обещает стать почти такой же культовой, как книга Кернигана по C. Книга была издана в конце октября, и многие уже её получили и прочли!
  • 12 Jul 2015: Ivy — First Android App in 100% Golang on Google Play (written by the Go Team) [17]
    Первое приложение на Go + GoMobile в AppStore.
  • 13 Aug 2015: Go 1.6 GC improvements plan [18]
    Детальный документ с планируемыми изменениями сборщика мусора в Go 1.6. Поскольку язык не меняется, то основная работа и силы брошены на улучшение инструментария, компилятора, и рантайма. Этот документ для тех, кто интересуется внутренностями Go.
  • 08 Aug 2015: Dropbox's infrastructure is Go at a huge scale [19]
    Скромный твит инженера Dropbox, признающегося в том, что в Dropbox не только кухня получила Мишленовскую звезду, но и что их распределенная система хранения данных, которая обрабатывает экзабайты данных и гоняет их по терабитным каналам, полностью написана на Go.
  • 30 Jun 2015: Go 1.5 will be able to build iOS apps. [20]
    Ещё один анонс возможностей GoMobile в предверии релиза Go 1.5.
  • 14 Dec 2015: How to complain about Go [21]
    А это моя статья на английском языке в стиле сатиры, высмеивающая разработчиков, критикующих Go за то, что тот не похож на их любимый язык. На Хабр перевод не делал, потому что сатиру тут вряд ли оценят.
  • 29 May 2015: rsc on why go does not have generics: it's technical, not political [22]
    Спокойный и внятный ответ Расса Кокса — одного из авторов Go о том, что отсутствие дженериков в Go — это не политическое, а техническое решение. Авторы не видят красивого решения, которое даст пользователям возможность совать дженерики по поводу и без повода и не превратит язык в унылое Г.
  • 10 Nov 2015: Six years of Go — The Go Blog [23]
    6-й день рождения Go!
  • 10 Jun 2015: [Parse.com] How We Moved Our API From Ruby to Go and Saved Our Sanity [24]
    Блог компании Parse, описывающий их переезд с Ruby на Go.
  • 15 Dec 2015: Git Appraise, written by Google in Go, distributed code review [25]
    Анонс проекта от Google — распределённая система code review, написанная на Go.
  • 14 Nov 2015: For Better or For Worse [26]
    Отличная статья об оценке приоритетов подходов в языках. Перевод был тут [27] на Хабре.
  • 08 Oct 2015: gologin: Login handlers for Google, Github, Facebook, Twitter, SMS, OAuth1/2, etc. [28]
    Анонс пакета для работы с основными OAuth-провайдерами.
  • 15 Feb 2015: The State of Go [29]
    Статья из официального блога Go о текущем состоянии дел в Go (на момент февраля 2015)
  • 08 Apr 2015: Stack Overflow developer survey: Go is in the top five most loved languages [30]
    Go в топе самых обожаемых языков программирования. Бесполезный критерий, конечно, но всё-равно мимими.
  • 20 Aug 2015: Billions of request per day meet Go 1.5 [31]
    Статья о том, как компания, чей софт на Go обрабатывает миллиарды запросов в день, перешла на Go 1.5 и колоссально уменьшила паузы GC и общее время отклика. Перевод на хабре. [32]

В этот топ много чего не попало, поэтому вкратце из того, что вспоминается: была написана реализация HTTP2 [33], которая будет в стандартной библиотеке в Go 1.6 (да, сервера на Go 1.6 будут поддерживать HTTP2 из коробки), ребята из JetBrains провели (и продолжают проводить) колоссальную работу по развитию плагина для Go [34] для IntelliJ IDEA, равно как и Fatih Arsian, автор плагина vim-go [35], который теперь отлично работает с NeoVim. Также появилась [36] (не особо нужная) поддержка shared libraries.

Важным этапом можно назвать первый шаг в стандартизации решения для управления зависимостями в Go. Подход монорепозитория в Google не очень хорошо работает с «классической» схемой, где все зависимости нужно вендорить под проект, и в Go 1.5 появилась экспериментальная поддержка специального соглашения [37] брать зависимости из папки vendor/, если таковая есть в проекте. В Go 1.6 это поведение не будет больше экспериментальным, но всё ещё опциональным, и в Go 1.7 планируется быть уже по-умолчанию. В тоже время, сообществу ещё предстоит прийти к консенсусу как лучше автоматизировать работу с зависимостями, так так есть несколько решений.

Говоря о прошедших событиях, нельзя обойти стороной конференции [38] по Go. В этом году прошло 13 (!) конференций разного масштаба, и в следующем году планируется ещё больше. Из новых — это конференции в Китае, Индии и Дубаи! Основными же конференциями остаются международная GopherCon [39], которая традиционно проходит в Денвере, и европейская dotGo [40] в Париже.

Также в этом году был запущен уже упомянутый выше русскоязычный еженедельный подкаст по Go — Golangshow [41]. В подкасте ведущие не только обсуждают свежие новости из мира Go, но и приглашают интересных гостей. Уже записано 35 выпусков, так что смело подписывайтесь в iTunes [42] или на сайте — https://golangshow.com [41].

Go в 2015 году - 5

Ну а в следующем, 2016-м году, нас ждёт Go 1.6 и Go 1.7, ещё больше интересных проектов и продуктов на Go, новых компаний и вакансий.

С Новым Годом и счастливого кодинга!

Автор: divan0

Источник [43]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/go/107388

Ссылки в тексте:

[1] Golangshow: http://golangshow.com/

[2] SpaceX: http://blog.not-a-kernel-guy.com/2015/10/16/1738

[3] Dropbox: https://www.reddit.com/r/golang/comments/3g7tyv/dropboxs_infrastructure_is_go_at_a_huge_scale/

[4] Basecamp: https://signalvnoise.com/posts/3897-go-at-basecamp

[5] MongoDB: https://www.youtube.com/watch?v=Ck1bRyYxJCQ

[6] ВКонтакте: http://habrahabr.ru/post/265731/

[7] Baidu: https://twitter.com/jbuberel/status/617776229437980673?s=09

[8] Антон: https://www.youtube.com/watch?v=cGXorQkw3JE

[9] создаёт: https://www.youtube.com/watch?v=cFJkLfujOts

[10] первое приложение: https://itunes.apple.com/us/app/ivy-big-number-calculator/id1012116478?mt=8

[11] уже давно используют: http://habrahabr.ru/post/260609/

[12] gxui: https://github.com/google/gxui

[13] сабреддита: https://www.reddit.com/r/golang

[14] Go 1.5 is released: https://blog.golang.org/go1.5

[15] The Go compilers are now written in Go: https://go-review.googlesource.com/#/c/5652/

[16] The Go Programming Language by Brian W. Kernighan, Alan Donovan: http://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440/

[17] Ivy — First Android App in 100% Golang on Google Play (written by the Go Team): https://play.google.com/store/apps/details?id=org.golang.ivy

[18] Go 1.6 GC improvements plan: https://docs.google.com/document/d/1kBx98ulj5V5M9Zdeamy7v6ofZXX3yPziAf0V27A64Mo/edit

[19] Dropbox's infrastructure is Go at a huge scale: https://twitter.com/jamwt/status/629727590782099456

[20] Go 1.5 will be able to build iOS apps.: https://twitter.com/rakyll/status/615920271019503616

[21] How to complain about Go: https://medium.com/@divan/how-to-complain-about-go-349013e06d24#.v6ub3y3nq

[22] rsc on why go does not have generics: it's technical, not political: https://news.ycombinator.com/item?id=9622417

[23] Six years of Go — The Go Blog: https://blog.golang.org/6years

[24] [Parse.com] How We Moved Our API From Ruby to Go and Saved Our Sanity: http://blog.parse.com/learn/how-we-moved-our-api-from-ruby-to-go-and-saved-our-sanity/

[25] Git Appraise, written by Google in Go, distributed code review: https://github.com/google/git-appraise

[26] For Better or For Worse: http://jmoiron.net/blog/for-better-or-for-worse/

[27] тут: http://habrahabr.ru/post/270981/

[28] gologin: Login handlers for Google, Github, Facebook, Twitter, SMS, OAuth1/2, etc.: https://github.com/dghubble/gologin

[29] The State of Go: https://talks.golang.org/2015/state-of-go.slide#1

[30] Stack Overflow developer survey: Go is in the top five most loved languages: http://stackoverflow.com/research/developer-survey-2015#tech-super

[31] Billions of request per day meet Go 1.5: https://medium.com/@robin.verlangen/billions-of-request-per-day-meet-go-1-5-362bfefa0911

[32] Перевод на хабре.: http://habrahabr.ru/post/265183/

[33] реализация HTTP2: https://github.com/golang/net/tree/master/http2

[34] плагина для Go: https://github.com/go-lang-plugin-org/go-lang-idea-plugin

[35] vim-go: https://github.com/fatih/vim-go

[36] появилась: http://blog.ralch.com/tutorial/golang-sharing-libraries/

[37] экспериментальная поддержка специального соглашения: https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/edit

[38] конференции: https://github.com/golang/go/wiki/Conferences

[39] GopherCon: http://gophercon.com/

[40] dotGo: http://dotgo.eu/

[41] Golangshow: https://golangshow.com

[42] iTunes: https://itunes.apple.com/ru/podcast/podkast-golangshow/id1031101295?l=en&mt=2

[43] Источник: http://habrahabr.ru/post/274057/