Golang (Go), известный чуть менее 15 лет, входит в пятерку популярных языков на Stack Overflow. Порог входа относительно невысок, при этом язык хорошо показывает себя при реализации высоконагруженных проектов, хотя и имеет свои подводные камни.  О работе с Go мы уже рассказывали ранее. Теперь же приготовили тест для начинающих, желающих проверить силы, взглянуть на Go новым взглядом или просто развлечься и узнать немного любопытных фактов. В конце статьи вас ждет инструкция по установке и запуску сервера.  Дисклеймер: гоферы рекомендуют – для того чтобы получить больше удовольствия от теста, избегайте подсказок;) Вопрос 1. Когда появился GO? Ответы: 1989? Нет, язык гораздо моложе, он впервые был показан в ноябре 2009 года – тогда как С++, например, известен с 1983 года 1999? Нет, язык гораздо моложе, он впервые был показан в ноябре 2009 года – тогда как С++, например, известен с 1983 года 2009? Верно. Это, пожалуй, первый язык, созданный в эпоху web и многопоточности, что нашло отражение в дизайне языка и его стандартных библиотек 2014? Go, конечно, моложе языков-“мастодонтов” со стажем более 30 лет, но не настолько. Язык впервые показан в ноябре 2009 года Вопрос 2. Сколько ключевых слов в языке? Ответы: 25? Верно, среди наиболее популярных серверных языков Go имеет меньше всего ключевых слов, что упрощает процесс обучения разработчиков 33? Нет, в Go всего 25 ключевых слов, меньше, чем у других популярных серверных языков 50? Нет, в Go всего 25 ключевых слов, меньше, чем у других популярных серверных языков 79? Нет, в Go всего 25 ключевых слов, меньше, чем у других популярных серверных языков Вопрос 3. Сколько грамматических правил в языке?   Ответы: 58? Верно, количество грамматических правил в Go меньше, чем во многих популярных языках, что обеспечивает относительную легкость его освоения 83? Нет, в Go менее 60 грамматических правил, что обеспечивает относительную легкость его освоения, по сравнению с другими популярными языками 216? Нет, в Go менее 60 грамматических правил, что обеспечивает относительную легкость его освоения, по сравнению с другими популярными языками 314? Нет, в Go менее 60 грамматических правил, что обеспечивает относительную легкость его освоения, по сравнению с другими популярными языками Команда Google начала разработку языка Go для своих нужд в 2007 году. В отличие от более старых языков, Go формировался в то время, когда веб-технологии и многопоточные вычисления стали обыденностью.  За счет простого синтаксиса и наличия синтаксических чекеров Go, как правило, обеспечивает стилистически однообразный код, что помогает командам упростить погружение новых разработчиков в проекты.  В стандартных библиотеках, в свою очередь, нет скрытых неочевидных циклов, поэтому написанные программы имеют прозрачную вычислительную сложность.  Вопрос 4. Перед вами листинг простой программы, которая печатает результаты в несколько потоков. Какое максимальное количество потоков может быть запущено при выполнении этой программы?   // да-да, time.Sleep() — это плохо, но это самый простой рабочий пример :) // даже не самый мощный ноутбук сможет запустить 20-30 миллионов простых горутин  Ответы: Нет. 3 воркера запустятся в цикле, и функция main также запустится в отдельном потоке.    Близко, но стоит учесть, что и сама функция main также запустится в отдельном потоке.  Совершенно верно, 3 воркера запустятся в цикле, и функция main также запустится в отдельном потоке.    3 воркера запустятся в цикле, и функция main также запустится в отдельном потоке. Верный ответ — 4.    Golang — компилируемый язык, и многих интересует вопрос, насколько удобно с этим работать? В Golang компилятор работает быстро, и даже тяжелый проект соберется за доли секунды. И неважно, разрабатываете вы под Linux, MacOS или Windows. Все, что нужно — написать в терминале go build и все. Насколько Go быстрый? Представим, что мы написали небольшой веб-сервер. Он принимает простой запрос и отдает веб-страницу с «Hello, world». Что будет, если по какой-то причине на этот веб-сервер придет одновременно 100000 запросов? Веб-сервер начнет обрабатывать запросы в порядке поступления, и это займет какое-то время. Что если бы ваша программа могла обрабатывать такие запросы параллельно? Многопоточность в Golang реализуется с помощью специальных функций — горутин, и сделать свое приложение многопоточным очень просто.  Допустим, у вас есть сложная функция, которая печатает текст: и кто-нибудь вызывает ее, желая распечатать текст:   чтобы запустить функцию Print( ) в отдельном потоке, достаточно вызвать ее с ключевым словом go   И все, у вас многопоточное приложение!   Вопрос 5. Сколько строк кода нужно, чтобы написать http “hello-world” - сервер, которое на 80-й порт отвечает http-страницей “hello-world”? Ответы: 8? Верный ответ — 10. Если пренебречь читаемостью кода, можно уместить всё даже в 7 строк, но стиль go — это читаемость кода в первую очередь. Верно, всего лишь 10 строк кода, и на localhost:80 вас встречает “hello world” 15? Go за лаконичность, верный ответ — 10 :) 21? Go за лаконичность, верный ответ — 10 :) Стоит отметить, что Google не рекомендует использовать дефолтный веб-сервер, и в сообществе уже есть более удачные реализации, поэтому сервер был выбран исключительно для удобства примера. Посмотреть список различных интересных и полезных реализаций можно тут https://github.com/avelino/awesome-go  Вопрос 6. Что надо сделать, чтобы код из предыдущего вопроса заработал?   Ответы: Верно, go создавался когда web стал повседневностью, поэтому http сервер уже есть в стандартной библиотеке   Нет, никаких дополнительных зависимостей выкачивать не нужно,  go создавался когда web стал повседневностью, поэтому http сервер уже есть в стандартной библиотеке  Нет, никаких дополнительных зависимостей выкачивать не нужно,  go создавался когда web стал повседневностью, поэтому http сервер уже есть в стандартной библиотеке  Нет, никаких дополнительных зависимостей выкачивать не нужно,  go создавался когда web стал повседневностью, поэтому http сервер уже есть в стандартной библиотеке  Вопрос 7. Сколько времени нужно, чтобы запустить свой первый http-сервер на Go? Ответы: Верно, 3 минут хватит для того, чтобы набрать 10 строк кода и запустить “Hello world” (без учета установки Go) Нет, 3 минут хватит с избытком на то, чтобы набрать 10 строк кода и запустить сервер. Не учитываем время на скачивание и установку. Нет, 3 минут хватит с избытком на то, чтобы набрать 10 строк кода и запустить сервер. Не учитываем время на скачивание и установку. Нет, 3 минут хватит с избытком на то, чтобы набрать 10 строк кода и запустить сервер. Не учитываем время на скачивание и установку. В приведенных примерах мы сравнили ожидания и реальность относительно работы с Go — надеемся, что вам было интересно проверить себя или познакомиться с языком впервые. В прошлой статье мы уже рассказывали о том, что в числе преимуществ Go отмечают относительную синтаксическую легкость, удобство и скорость работы, разнообразие инструментов в комьюнити. А что вы думаете об этом языке? В заключение хотим поделиться инструкцией о том, как за несколько минут установить Go, а также написать и запустить код http-сервера.  Спасибо за внимание!  Ждем на наших мероприятиях и приглашаем подписаться на нас ВКонтакте или в Telegram, чтобы быть в курсе новых событий. Если вы используете UBUNTU, откройте терминал sudo apt update sudo apt upgrade sudo apt install golang На этом установка завершена. Для просмотра версии выполните: go version Если на данном шаге go version не выдает версию языка, найти альтернативный способ установки можно на сайте golang.org. nano server.go  Открытие окна редактирования файла server.go. Наберите код:  Нажмите CRTL-O, чтобы сохранить файл Нажмите CTRL-X, чтобы выйти из редактора текста [Если у вас нет редактора nano, установите его, или используйте свой редактор файлов] go run server.go  Сервер запущен, наберите в браузере localhost:80 Вы должны увидеть надпись Hello world!!! Вернитесь в терминал, нажмите CTRL-C, чтобы остановить сервер,  снова откройте файл для редактирования: nano server.go Измените код:  Нажмите CRTL-O, чтобы сохранить файл Нажмите CTRL-X, чтобы выйти из редактора текста [Если у вас нет редактора nano, установите его или используйте свой редактор файлов] go run server.go  сервер запущен, наберите в браузере localhost:80 В результате вы должны увидеть надпись Hello world!!! и счетчик, который покажет, сколько раз вы посетили эту страницу.