Skip to content

Latest commit

 

History

History
224 lines (103 loc) · 5.43 KB

README.md

File metadata and controls

224 lines (103 loc) · 5.43 KB

Учебный курс по языку программирования Эликсир.

Курс содержит большое количество упражнений, домашних заданий, и два курсовых проекта. Теории уделяется меньше внимания.

Курс расчитан на программистов, уже владеющих каким-либо языком программирования, и желающим изучить Эликсир. Курс не расчитан на новичков программировании. (И автор считает Эликсир не подходящим для изучения его как первого языка. Лучше начать с более популярных языков, как, например Python или JavaScript).

Часть 1. Основы языка.

Урок №1. Первое знакомство с Elixir.

01.01. Решаем задачу FizzBuzz.

01.02. Интерактивная консоль (iex).

Урок №2. История, мотивация.

02.01. Немного истории.

02.02. Важные свойства BEAM.

02.03. Свойства Эликсир.

02.04. Недостатки BEAM.

02.05. Сфера применения.

Урок №3. Типы данных и операции над ними.

03.00. Типы данных.

03.01. Целые числа (Integer).

03.02. Числа с плавающей точкой (Float).

03.03. Булевые значения (Boolean).

03.04. Атомы и кортежи (Atom & Tuple).

03.05. Списки (List).

03.06. Словари (Map).

03.07. Строки и бинарные данные (String & Binary).

03.08. Системные типы (System Types).

03.09. Сложные типы (Complex Types).

Урок №4. Управление потоком выполнения.

04.01. Pattern Matching.

04.02. Pattern Matching для Map.

04.03. Конструкция case, тела функций, охранные выражения.

04.04. Конструкции cond и if.

04.05. Keyword list, синтаксический сахар и макросы.

Урок №5. Устройство списков. Рекурсивные функции с аккумуляторами.

05.01. Иммутабельность.

05.02. Устройство списков.

05.03. Рекурсия.

05.04. Хвостовая рекурсия.

05.05. Рекурсивные функции с аккумуляторами.

05.06. Неограниченная рекурсия (Unbounded recursion).

Урок №6. Функции высшего порядка.

06.01. Map, Filter.

06.02. Reduce (Fold).

06.03. Модуль Enum.

06.04. Конструкторы списков.

06.05. Модуль Stream.

Урок №7. Пользовательские типы данных.

07.01. Создание проекта.

07.02. Моделирование предметной области.

07.03. Использование Map.

07.04. Использование Struct.

07.05. Struct с указанием типов.

07.06. Алгебраические типы данных.

07.07. Протокол.

07.08. Record.

07.09. Что такое функциональное программирование?

Урок №8. Обработка ошибок.

08.01. Исключения.

08.02. Классы исключений.

08.03. Пользовательские типы исключений.

08.04. Defensive Programming vs Let It Crash.

Урок №9. Композиция функций.

09.01. Задача на композицию функций.

09.02. Решение 1. Вложенные case.

09.03. Решение 2. Каждый case в отдельной функции.

09.04. Решение 3. Использование исключений.

09.05. Решение 4. Монада Result и оператор bind.

09.06. Решение 5. Pipeline.

09.07. Решение 6. do-нотация.

09.08. Что такое монада?

Курсовой проект №1. Work Report.

Часть 2. Многопоточность и OTP.

Урок №10. Многопоточность.

10.01. Работа с процессами на низком уровне.

10.02. Почтовый ящик.

10.03. Связь между процессами.

10.04. Мониторинг процессов.

10.05. MapReduce.

Урок №11. Абстракции над процессами: Task, Agent, GenServer.

11.01. Task.

11.02. Agent.

11.03. Создание GenServer.

11.04. Модуль GenServer.

11.05. Использование GenServer.

Урок №12. Supervisor и Application.

12.01. Supervisor.

12.02. Использование Supervisor.

12.03. Dynamic Supervisor.

12.04. Application.

12.05. Конфигурирование Application.

12.06. Observer.

Урок №13. Open Telecom Platform.

13.01. OTP.

13.02. Релиз.

13.03. Модель акторов.

13.04. Let It Crash.

Урок №14. Erlang Term Storage.

14.01. ETS, DETS.

14.02. Mnesia.

14.03. Persistent Term.

Урок №15. TCP и UDP сокеты.

15.01. UDP Socket.

15.02. TCP Socket.

15.02. Сервер с Acceptor Pool.

15.03. Бинарные и текстовые протоколы.

Курсовой проект №2. Planning Poker.