Курс читает кандидат физико-математических наук Сошников Д.В.
Курс
знакомит слушателей с парадигмой функционального программирования, в
которой решение задач сводится к описанию функций, перерабатывающих
некоторые входные данные в выходные и строящихся из более простых
функций на основе принципов функциональной абстракции и аппликации.
Рассматриваются теоретические основы функционального программирования
(лямбда-исчисление, комбинаторная логика, вопросы вычислимости), на
примере функционального подхода дается представление о некоторых
теоретических разделах компьютерных наук (семантика языков
программирования, доказательство программ). С другой стороны курс
содержит значительную практическую составляющую, основанную на
промышленном языке программирования F# (входит в состав Microsoft Visual
Studio 2010), рассматриваются вопросы использования функциональных
языков для построения компиляторов, грамматического разбора и т.д.
Курс
будет интересен как практикующим программистам и студентам, изучившим
основы компьютерных наук, так и математикам. Для программистов на
императивных языках знакомство с функциональным подходом позволит
расширить сознание, перейти на более чистый (свободный от побочных
эффектов) стиль программирования с более высоким уровнем абстракции,
научиться эффективно использовать новые возможности современных
императивных языков (LINQ, лямбда-выражения и т.д.). Для математиков,
функциональное программирование может служить безболезненным введением в
компьютерные науки, поскольку в рамках курса мы практически «с нуля»
строим (начиная от математических основ, вплоть до реализации
интерпретатора/компилятора и описания формальной семантики) язык
программирования на базе лямбда-исчисления – раздела дискретной
математики.
Цель: Познакомить
слушателя с основами функционального программирования как дисциплины,
находящейся на стыке программирования и дискретной математики; дать, с
одной стороны, практические навыки функционального программирования на
используемом на практике языке F#, а с другой – показать связь между
теоретическими главами computer science и программированием, осветив
некоторые теоретические проблемы информатики (вычислимость, семантика
языков программирования, доказательство программ) и показав, как они
решаются в функциональном подходе.
Необходимые знания: Строго
говоря, предварительных знаний для курса не требуется – возможно
изучение программирования, начиная с функционального подхода. Однако
более традиционным подходом является изучение основ программирования на
базе императивного языка, и затем изучение
Общее время просмотра (10 видео), часть 1: 4ч 42 мин
1 Определение и краткая история функционального программирования
Знакомство. Определение функционального программирования и его история.
Введение Немного о лекторе Функциональное и классическое программирование История Функциональный стиль Пример с факториалом Особенности функционального программирования Рекурсия и функциональный стиль в других языках
Хвостовая рекурсия. Порядковое представление списков и матриц
Хвостовая рекурсия Общая идея Пример с вычислением длины списка Реверсирование списка Порядковое представление списков Представление матриц Классическое и порядковое представление Разреженные матрицы Транспонирование Встроенные линейно-алгебраические типы Итоги
|