[БЕЗ_ЗВУКА] Итак, прежде, чем мы перейдём непосредственно к языку, стоит понять, для чего вообще нужно было делать ещё один язык программирования и для каких задач его разрабатывали. Начнём с небольшой истории. Язык Go был разработан Кеном Томпсоном, которых известен вам по операционной системе UNIX, и также он является одним из соавторов кодировки UTF-8, Робом Пайком, который тоже принимал участие в разработке UTF-8, а также участвовал в разработке операционных система Plan9 и Inferno. И Роберт Гризмер, который занимался Java HotSpot'ом, языком Swazall и распределёнными системами в Google. Первая версия языка была доступна публике в 2009 году, и в 2012 году вышла версия 1.0, то есть это очень молодой язык. Go разрабатывался с прицелом на эффективность. Во-первых, это эффективность работы непосредственно самой программы. В первую очередь, это эффективная утилизация многопроцессорных систем. Дело в том, что в начале нулевых годов количество физических ядер в процессорах сильно выросло. При этом очень многие языки, которые проектировались в 90-х годах, они были нацелены на работу в условиях, когда у вас есть только одно ядро. В этом плане Go очень хорош, потому что он очень хорошо масштабируется по ядрам процессора, что позволяет писать очень эффективные, очень нагруженные сервисы. Также в Go встроена эффективность прямо из коробки. То есть она основана не на Callback'ах. Ну и Go вообще проектировался для обработки большого количества конкурентных запросов. Конкурентный запрос — это значит много маленьких запросов, которые идут одновременно в вашу программу, но которые абсолютно независимы. Вторая задача при разработке Go стояла в эффективности программиста. В Go очень простой синтаксис, очень мало магии и синтаксического сахара. Это позволяет писать очень простые программы, простые в плане понимания последующего, и несколько уменьшить груз legacy, потому что программы, как правило, живут гораздо дольше, чем мы думаем. Также именно для этих целей в Go задан жёсткий стиль форматирования кода, и создан инструмент для автоматического форматирования. Как правило, этот инструмент встраивается прямо в среду разработки, и при сохранении файла он сразу приводит стиль к нужному виду. В Go очень быстрая компиляция. Это значит, что для того чтобы проверить, работает программа или нет, программисту не придётся ждать 20 минут, пока она соберётся. В Go очень удобная работа с зависимостями. Весь код лежит в одном месте и при сборке собирается в статический бинарник, что позволяет ему не зависеть от каких-то внешних пакетов, и это позволяет избежать конфликтов с другими программами. Ну и вообще в каких сферах применяется Go? По опросам главного совета Go, проведённого в 2016 году основными сферами применения Go являются web-разработка, то есть любые web-сервисы, также системы мониторинга и разного рода системные утилиты. Go может плохо подойти в тех местах, где вам нужен очень жёсткий контроль над памятью и недопустимы практически никакие паузы, потому что Go — это язык со сборщиком мусора. Конечно, там нет таких пауз, как stop-the-world, которые вообще надолго вешают всё, однако они там есть, поэтому в системах реального времени Go вам будет тяжело применить. Также если у вас очень мало памяти, например, это какие-то встраиваемые устройства, Internet of Things, то Go, возможно, будет не самым лучшим выбором. Но для web'а Go — это очень хороший выбор. Ну а теперь давайте перейдём к технике и посмотрим, как выглядит ваша первая программа в Go.