---
title: "Golang"
description: "Немного предыстории. Go был рожден из-за неудовлетворенности от существующих языков и сред системно..."
author: "Hes"
published: "2015-12-01T01:44:30+00:00"
modified: "2015-12-01T01:54:28+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/golang-634129"
markdown_url: "https://yvision.kz/post/golang-634129/markdown"
site_name: "Yvision.kz"
---

# Golang

> Немного предыстории. Go был рожден из-за неудовлетворенности от существующих языков и сред системно...

![Golang](http://storage.yvision.kz/images/user/hes/jcb1o9xLqzotvsORxnlE3AGvktYAqd.png)

**Немного предыстории.**

Go был рожден из-за неудовлетворенности от существующих языков и сред системного программирования. Программирование стало слишком сложным, и нынешние языки в этом частично виноваты. Приходится выбирать между эффективной компиляцией, эффективным выполнением и легкостью программирования — все три качества недоступны в одном и том же мэйнстримовом языке. Программисты выбирали легкость программирования вместо безопасности и эффективности, переходя на динамически типизированные языки, такие как Python и JavaScript, вместо C++ или, в меньшей степени, Java.

Go — попытка соединить легкость программирования на интерпретируемом, динамически типизированном языке с эффективностью и безопасностью статически типизированного, компилируемого языка. Он так же стремится быть современным, поддерживая сетевые и многоядерные вычисления. Наконец, Go задумывался как *быстрый* язык: компиляция большого выполняемого файла должна занимать не более нескольких секунд. Чтобы реализовать эти цели, нужна выразительная, но легкая система типов, конкарентность и сборка мусора, твердая спецификация зависимостей и т.д. Эти вещи не могут быть хорошо реализованы в библиотеках, нужен был новый язык.

**Какова цель проекта?**

За последнее десятилетие не появилось ни одного значительного системного языка программирования, но за это время компьютерная сфера сильно изменилась. Несколько трендов:
- Компьютеры стали намного быстрее, а разработка ПО быстрей не стала.

- Управление зависимостями стало большой частью разработки программ, а традиционные Си-подобные "заголовочные файлы" несовместимы с чистым анализом зависимостей и быстрой компиляцией.

- Начинается бунт против громоздких языков вроде Java и C++, из-за чего люди переходят на динамически типизированные языки типа Python и JavaScript.

- Некоторые фундаментальные концепции, такие как сборка мусора и параллельное вычисление, плохо поддерживаются популярными системными языками программирования.

- Появление многоядерных компьютеров вызвало беспокойство и замешательство.

Корпорация Google считает, что стоит попробовать сделать новый язык, конкарентный, со сборкой мусора и быстрой компиляцией. Насчет пунктов выше:
- Большие программы Go компилирует за несколько секунда на одном компьютере (и это действительно так, 63 Мб исходного кода компилируются на домашнем компьютере ровно 7 секунд, причем одинаково компилируется как на Windows машине, так и на Linux и Mac).

- Go предоставляет такую модель создания программ, при которой избегаются издержки Си-подобных заголовочных файлов и библиотек, делая анализ зависимостей простым.

- Система типов Go не имеет иерархии, поэтому не тратится время на определение зависимостей между типами. Кроме того, хотя типизация в Go статическая, язык пытается сделать так, чтобы программисты не чувствовали их громоздкость, как в типичных объектно-ориентированных языках.

- Go имеет полноценную сборку мусора, а так же предоставляет фундаментальную поддержку конкарентного выполнения и коммуникаций.

- В язык заложен способ создания системного ПО для многоядерных компьютеров.

![Golang](http://storage.yvision.kz/images/user/hes/lIPqcgn4E87AZG2OmIKUhtFxS7Y5rN.png)

Насчёт простоты кода.

[Абстрактный код в вакууме](https://gist.github.com/npomocc/082611c6a9ddb1dee3b8) представляет собой реализацию протокола [Qiwi](http://qiwi.kz/static/data/how-to-become-provider/interface_podkl_usl.pdf) для провайдера услуг. Читается вообще без каких либо проблем. После изучения Go буквально за 1-2 дня этот код написан за 2-3 часа после работы в пятницу(!).

**Интересные материалы и видео**

[Go success stories from around the web](https://github.com/golang/go/wiki/SuccessStories#!)

[Введение в программирование на Go](http://golang-book.ru/)

[HighLoad++ 2012. Язык программирования Go от Google](https://www.youtube.com/watch?v=bqtN6XViejE)

[Интерактивное изучение Golang](https://tour.golang.org/welcome/1)

[Интервью: Брайан Керниган и Алан Донован](http://habrahabr.ru/post/271303/)

[Русскоязычные подкасты на iTunes](https://itunes.apple.com/ru/podcast/podkast-golangshow/id1031101295?l=en&mt=2)

[Погружение в Google Go](https://www.youtube.com/watch?v=rAiauhDf_zc)

[Видеозапись докладов конференции Golang Moscow (Digital October)](https://www.youtube.com/watch?v=OtRf5WC4qoE) (докладчики из компаний Яндекс, Openstat (Spylog), sports.ru)

[Доклад Антона Поварова "Go в Badoo" на Golang Meetup](https://www.youtube.com/watch?v=pOgAnWfNjms)

[Сайт о языке программировани Go](http://4gophers.ru/)

[Роб Пайк подверг критике C++ и Java](http://geektimes.ru/post/100171/)

[Centrifuge + Go = Centrifugo – harder, better, faster, stronger](http://habrahabr.ru/company/mailru/blog/266017/)

[Why is Golang popular in China?](http://herman.asia/why-is-go-popular-in-china)

---

Source: [https://yvision.kz/post/golang-634129](https://yvision.kz/post/golang-634129)