Функциональное программирование
Лектор: Евгений Кирпичёв
#fp@proglib
Курс знакомит слушателей с функциональным подходом к программированию, все более набирающим силу в последнее время. Ключевые свойства этого подхода - борьба со сложностью программ через использование мощных механизмов абстракции и акцент на важность математических свойств программ. Курс в значительной мере основан на знаменитейшем курсе и книге "Структура и интерпретация компьютерных программ" из MIT, однако адаптирован под ряд особенностей современного программирования и профессиональную подготовку слушателей: обсуждаемые идеи иллюстрируются как в "чистом" виде, так и в контексте типичных повседневных задач. В курсе рассматриваются следующие наиболее важные идеи из мира функционального программирования: лямбда-исчисление, рекурсивные и итеративные процессы, функции высшего порядка и замыкания, абстрактные типы данных, свёртки (данная тема особенно важна в контексте параллельного и распределенного программирования), мини-языки, модель окружений, а также дается введение в системы типов.
1. Язык Scheme. Рекурсия и хвостовые вызовы
2. Замыкания и функций высшего порядка
3. Абстракция данных
4. Свертки
5. Моноиды
6. DSL: Упрощалка выражений
7. Изменяемое состояние и модель окружений
8. Системы типов