Видео-курс: Функциональное программирование
На сайте Интернет университета информационных технологий опубликован видео-курс по функциональному программированию. Курс читает наш коллега, Дмитрий Сошников.
Курс знакомит слушателей с парадигмой функционального программирования, в которой решение задач сводится к описанию функций, перерабатывающих некоторые входные данные в выходные и строящихся из более простых функций на основе принципов функциональной абстракции и аппликации.
Рассматриваются теоретические основы функционального программирования (лямбда-исчисление, комбинаторная логика, вопросы вычислимости), на примере функционального подхода дается представление о некоторых теоретических разделах компьютерных наук (семантика языков программирования, доказательство программ).
С другой стороны курс содержит значительную практическую составляющую, основанную на промышленном языке программирования F# (входит в состав Microsoft Visual Studio 2010), рассматриваются вопросы использования функциональных языков для построения компиляторов, грамматического разбора и т.д.
Содержание курса
- Определение и краткая история функционального программирования
- Абстракция и декомпозиция. Декларативное программирования
- Парадигмы программирования
- Функциональное программирование в реальной жизни
- Основные принципы функционального программирования
- Сопоставление с образцом. Рекурсия. Циклы
- Пример: построение графика 2D-функции
- Рекурсивные структуры данных. Списки
- Примеры работы со списками
- Хвостовая рекурсия. Порядковое представление списков и матриц
- Функциональные структуры данных
- Деревья
- Деревья выражений и деревья поиска. Продолжения
- Введение в л-исчисление
- Нормальный и аппликативный порядок редукции. Теорема Чёрча-Россера
- Описание рекурсивных функций. Комбинаторы и комбинаторная логика
- От л-исчисления к языку программирования
- Замыкания, генераторы и отложенные вычисления
- Последовательности и ленивые вычисления в F#. Мемоизация
- Пример: реализация машины Тьюринга
- Типизация в языках функционального программирования
- Формальная семантика языков функционального программирования
- Доказательство свойств программ
- Реализация функциональных языков. Eval-Apply-интерпретаторы
- Реализация функциональных языков: интерпретаторы и абстрактные машины
- Реализация функцоинальных языков: редукция графов, потоковые реализации
- Анализ искусственных и естественных языков
- Метапрограммирование: Quotations
- Императивное ядро в функциональных языках. Монады. Computational Workflows
- Асинхронные и параллельные вычисления
Курс доступен здесь https://www.intuit.ru/department/pl/funcprog/