Бакалавриат
2026/2027




Промышленное программирование на языке Go
Статус:
Курс по выбору (Прикладная математика и информатика)
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1, 2 модуль
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
5
Контактные часы:
56
Программа дисциплины
Аннотация
Курс предназначен для разработчиков, которые хотят изучить современный язык программирования Go с нуля или углубить существующие знания. Go сочетает простоту синтаксиса с мощными возможностями для создания эффективных concurrent программ и высоконагруженных систем. Участники освоят базовые конструкции языка, научатся работать с горутинами и каналами, создавать HTTP-сервисы и писать качественные тесты. В рамках практических заданий студенты разработают разнообразные приложения — от утилит командной строки до простых веб-сервисов, изучат основы работы с базами данных PostgreSQL и Redis, а также освоят инструменты профилирования и мониторинга с Prometheus и Grafana. Курс будет интересен как новичкам в Go, так и опытным разработчикам, поскольку погружает в продвинутые темы: внутреннее устройство языка, reflection и статический анализ кода.
Цель освоения дисциплины
- Знать основные конструкции языка Go и понимать особенности его типовой системы и модели значений.
- Понимать принципы проектирования функций, методов, интерфейсов и публичных API в Go.
- Уметь проектировать и обрабатывать ошибки, использовать механизмы defer, panic и recover.
- Понимать модель конкурентного выполнения Go, работу горутины, каналов и примитив синхронизаций.
- Понимать устройство планировщика Go Runtime и GMP-модель выполнения горутины.
- Уметь управлять жизненным циклом серверных приложений с помощью context.Context, таймаутов, отмены операций и graceful shutdown.
- Уметь проектировать структуру Go-приложения и разделять код на пакеты с явными границами ответственности.
- Уметь писать модульные, интеграционные и конкурентные тесты и использовать инструменты статического и динамического анализа.
- Уметь анализировать производительность Go-приложений, находить избыточные аллокации и bottleneck'и с помощью бенчмарков гонки и pprof.
Планируемые результаты обучения
- самостоятельно создать и организовать Go-проект
- проектировать типы, структуры, функции, методы и интерфейсы с учётом идиом языка Go
- разрабатывать API пакетов и определять границы ответственности между компонентами приложения
- корректно проектировать обработку ошибок и аварийных ситуаций
- писать конкурентный код с использованием горутин, канал и пакета sync
- находить и устранять data race, deadlock и утечки горутин
- использовать context.Context для распространения отмены операций, deadline и timeout
- разрабатывать и тестировать HTTP-сервисы и компоненты, работающие с внешними ресурсами
- писать unit- и integration-тесты, benchmarks и проверять конкурентный код с помощью race detector
- анализировать CPU- и memory-профили Go-приложений и находить причины деградации производительности
- подготовить небольшое Go-приложение к эксплуатации: настроить завершение процесса, логирование, метрики и диагностику
Содержание учебной дисциплины
- Введение в язык Go. Описание API языка. 25 ключевых слов. Решение простейших задач.
- Типовая система и модель данных Go. Значения, zero value, структуры и память.
- Интерфейсы в Go. Контракты, зависимости и проектирование абстракций.
- Функции и методы. Управление поведением и областью ответственности. defer, panic, recover.
- Идиоматическое проектирование API в Go. Ошибки и характерные паттерны языка.
- Конкурентное программирование в Go. горутин, канал и синхронизация.
- Go Runtime и GMP-модель планировщика.
- context.Context и управление жизненным циклом приложения.
- Архитектура Go-приложений и проектирование пакетов.
- Тестирование и надёжность Go-приложений.
- Производительность Go-приложений. Память, аллокации и профилирование.
- Работа с базами данных и внешними ресурсами. Надёжность хранения данных и интеграций.
- Production-ready Go-приложения. CI/CD, релизы, Docker, Kubernetes и инфраструктура backend-сервисов.
Элементы контроля
- Домашнее заданиеВыполнение задач в репозитории Gitlab
- ПроектРазработка проекта в репозитории Gitlab
- ЭкзаменЭкзамен проводится в устной форме в формате индивидуального технического собеседования с элементами написания и разбора кода. Продолжительность экзамена для одного студента составляет ориентировочно 20–30 минут. В ходе экзамена студенту предлагаются практические задачи и фрагменты программного кода, аналогичные по типу и уровню сложности задачам, рассматривавшимся на лекциях, семинарах и в домашних заданиях в течение курса. Задания могут включать написание небольших фрагментов кода на Go, анализ поведения программы, поиск ошибок, объяснение причин возникающих проблем, а также обсуждение возможных вариантов реализации.
Список литературы
Рекомендуемая основная литература
- Golang для профи: работа с сетью, многопоточность, структуры данных и машинное обучение с Go - 978-5-4461-1617-1 - Михалис Цукалос - 2021 - Санкт-Петербург: Питер - https://ibooks.ru/products/371744 - 371744 - iBOOKS
Рекомендуемая дополнительная литература
- Баженова, И. Ю. Введение в программирование : учебное пособие / И. Ю. Баженова, В. А. Сухомлин. — 2-е изд. — Москва : ИНТУИТ, 2016. — 411 с. — ISBN 5-94774-599-2. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100695 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.