Занятие 1. Введение
· Почему нужно уметь программировать и почему Go отлично подходит для старта.
· Эволюция кода: от телеграфа до интегральных микросхем.
· Небольший экскурс в историю компьютеров.
· Код в повседневной жизни вокруг нас.
· Как работает компьютер.
· Что такое алгоритмы не зависимо от языка программирования.
· Как правильно покупать молоко.
· Математические основы алгоритмов. Это не так страшно как кажется.
· Реализация алгоритмов с помощью различных языков программирования.
· Практика: Свой выдуманный язык программирования
Занятие 2. Язык программирования
· Любая программа состоит из двух компонентов: данные и операции над этими данными.
· Базовое определение типов данных.
· Строки и кодировки.
· Определяемся с понятием констант и переменных.
· Процедурное программирование
· Управляющие инструкции if, ветвления программ
· Делаем правильный выбор. Инструкция switch...case
· Повторение иногда полезно: Циклы, break, continue
· Практика: Свой собственный шар предсказатель.
Занятие 3. Углубляемся в Go
· Go замечательный язык программирования в котором очень мало ключевых слов, что дает большую гибкость для разработчика.
· Блочная структура кода и затемнение переменных
· Функции и их использование
· Замыкания и анонимные функции.
· Обобщенные функции и функции высшего порядка.
· Структура проекта в Go. Пакеты и альтернативы в других языках.
· Функция init() и с чем его едят.
- Практика: Пишем простую консольную игру.
Занятие 4. Память
· О чем думает компьютер, когда выполняет ваш код.
· Как устроена память.
· Структуры данных и как они размещаются в памяти.
· Массивы, срезы и как их использовать.
· Что такое хешмапы и когда они нужны.
· Практика: Учим компьютер понимать текст.
Занятие 5. Делайте одну задачу, но делайте ее хорошо
· Поговорим о UNIX. Идеология, изменившая мир.
· Работа с файлами и файловой системой.
· Чтение, запись, исполнение файлов.
· Потоки ввода/вывода и перенаправления.
· Работа с двоичными файлами.
· Популярные форматы для передачи информации.
· Разбираем JSON и XML файлы.
- Практика: Управляем своими задачами.
Занятие 6. Введение в ООП
· Ключевые понятия. Полиморфизм, инкапсуляция, наследование
· Почему этого нет в Go
· Зачем нам интерфейсы. Полиморфизм в стиле Go.
· Встраивание и чем оно отличается от наследования.
· Практика: Наводим порядок в своих фотографиях
Занятие 7. Параллельное программирование.
· В Go просто замечательное параллельное программирование.
· Что такое процессы и потоки.
· Как работают процессы и потоки не зависимо от языка программирования.
· go-рутины как альтернатива потокам и процессам.
· Есть ли аналоги go-рутин в других языках программирования.
· Как передавать данные между рутинами.
· Используем блокировки для работы с общими данными.
· Используем каналы как альтернативу блокировкам.
· Практика: Скачиваем все и сразу
Занятие 8. Сторонние сервисы
· Как узнать у сервера какая сейчас погода
· Различные протоколы взаимосвязи
· Куда сохранять данные
· Что такое база данных и с чем ее едят
· Практика: Свой сервис учета финансов.
Практика разработки 1
· Пишем свой сервер "хорошей погоды"
Практика разработки 2
- Постим твиты из базы данных