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