Чему вы научитесь
- Уметь работать с базовыми инструментами языка и решать задачи с помощью них
- Знать необходимую теорию по конкурентности
- Уметь решать задачи, требующих конкурентного выполнения с помощью горутин
- Иметь глубокое представление об устройстве инструментов для конкурентности
- Иметь глубокие знания о работе языка в целом
О курсе
Цель курса
Основной целью курса является предоставление практически полного набора знаний по языку Go, который позволит не только использовать его в работе, но и понимать его работу под капотом
Понимание устройства языка полезно не только с точки зрения того, что может пригодиться на практике, а также в процессе его изучения вы получите большое количество инженерного удовольствия, но и для успешного прохождения собеседования.
Дело в том, что на собеседованиях на Go разработчика очень часто спрашивают про устройство языка, пройдя данный курс, вы сможете не только дать ответ, который устроит собеседующего, но и пойти в глубину, что может дать вам преимущество относительно других кандидатов.
Обучение 👨🎓
В рамках курса мы пройдем полный путь от первой программы до изучения внутреннего устройства сложных инструментов.
Помимо большого блока теории в курсе представлены практические задания: тестовые вопросы, которые помогут отточить пройденный материал и задачи на программирования, позволяющие глубже понять изученные концепции при решении реальных проблем и конечно же банально привыкнуть к синтаксису языка.
В рамках изучения сложной теории, добавлены визуализирующие схемы для лучшего усвоения материала, примеры представлены ниже:
Далее обсудим каждый из блоков содержания.
Основы🏛️
В первом блоке мы изучим все базовые концепции языка: изучим стандартные типы языка, в том числе слайсы и мапы, нарешаем задачи для их отработки.
Подробно изучим указатели, не на абстрактном уровне, как обычно они преподаются, а изучим теорию памяти, а уже поверх нее будем объяснять указатели, здесь никаких black box-ов не будет, вы получите полное понимание их работы.
Также мы изучим все необходимые инструменты для создания проектов и отточим их на создании собственней простой базы данных.
В конце главы вас ждет подробное изучение устройства слайсов и мапы.
Конкурентность🛠️
В рамках данной главы мы подробно изучим работу с конкурентностью в Go, перед этим изучив всю необходимую теорию по конкурентности и параллелизму в целом.
Затем изучим все нужные инструменты: горутины, каналы, мьютексы.
Узнаем как работать с атомиками и изучим их практическое применение в уроке про Lock-Free структуры данных.
После изучения всех необходимых инструментов, мы погрузимся в теорию их устройства, понимание их внутренних механизмов точно будет полезным и отразиться на ваших умениях программировать в целом, а также на способности блеснуть знаниями на собеседовании.
В конце отточим все знания и добавим в наш проект из первого блока работу с конкурентностью, реализовав в ней модель акторов, вся нужная теория будет дана.
Продвинутые темы⚙️
Этот блок является заверщающим, здесь мы уйдем еще глубже и подробно изучим работы языка с памятью в уроках про аллокатор и сборщик мусора, а также устройство компилятора и интерфейсов.
Научимся оптимизировать и ускорять наши программы с помощью ассемблера и вызывать код на C в нашей программе на Go.
В конце главы, мы изучим инструменты для поиска ошибок в нашей программе и для анализа ее производительности.
В последнем уроке курса вас ждет подборка полезных материалов и репозиториев для Go-разработчиков.
Для кого этот курс
Начальные требования
Желательно, чтобы до курса вы уже умели писать код на каком-либо другом языке программирования, темы в курсе представлены сложные, поэтому при изучении их с нуля могут возникнуть проблемы.
Наши преподаватели
Как проходит обучение
Курс представлен в текстовом формате. В каждом уроке представлена вся необходимая теория по теме, показаны реальные примеры использования и схемы с визуализацией изучаемых процессов.
Помимо этого в каждом уроке есть практические задания на написание кода или тестовые вопросы для закрепления информации.
Программа курса
Сертификат
Что вы получаете
- Сертифкат о прохождении курса
- Основательное понимание языка Go
- Умение решать практические задачи на Go
- Умение использовать горутины, каналы, мьютексы на практике
- Понимание работы под капотом этих инструментов
- Изучение продвинутых концепций, о которых рассказано мало в других курсах и в интернете в целом