• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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, анализ поведения программы, поиск ошибок, объяснение причин возникающих проблем, а также обсуждение возможных вариантов реализации.
Промежуточная аттестация

Промежуточная аттестация

  • 2026/2027 2nd module
    0.5 * Экзамен + 0.2 * Домашнее задание + 0.3 * Проект
Список литературы

Список литературы

Рекомендуемая основная литература

  • 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). — Режим доступа: для авториз. пользователей.

Авторы

  • Садуллаев Музаффар Тимурович