Функциональное программирование

Д.В. Сошников, ИНТУИТ

Курс знакомит слушателей с парадигмой функционального программирования, в которой решение задач сводится к описанию функций, перерабатывающих некоторые входные данные в выходные и строящихся из более простых функций на основе принципов функциональной абстракции и аппликации. Рассматриваются теоретические основы функционального программирования (лямбда-исчисление, комбинаторная логика, вопросы вычислимости), на примере функционального подхода дается представление о некоторых теоретических разделах компьютерных наук (семантика языков программирования, доказательство программ). С другой стороны курс содержит значительную практическую составляющую, основанную на промышленном языке программирования F# (входит в состав Microsoft Visual Studio 2010), рассматриваются вопросы использования функциональных языков для построения компиляторов, грамматического разбора и т.д.

Курс будет интересен как практикующим программистам и студентам, изучившим основы компьютерных наук, так и математикам. Для программистов на императивных языках знакомство с функциональным подходом позволит расширить сознание, перейти на более чистый (свободный от побочных эффектов) стиль программирования с более высоким уровнем абстракции, научиться эффективно использовать новые возможности современных императивных языков (LINQ, лямбда-выражения и т.д.). Для математиков, функциональное программирование может служить безболезненным введением в компьютерные науки, поскольку в рамках курса мы практически «с нуля» строим (начиная от математических основ, вплоть до реализации интерпретатора/компилятора и описания формальной семантики) язык программирования на базе лямбда-исчисления – раздела дискретной математики.

Цель курса: Познакомить слушателя с основами функционального программирования как дисциплины, находящейся на стыке программирования и дискретной математики; дать, с одной стороны, практические навыки функционального программирования на используемом на практике языке F#, а с другой – показать связь между теоретическими главами computer science и программированием, осветив некоторые теоретические проблемы информатики (вычислимость, семантика языков программирования, доказательство программ) и показав, как они решаются в функциональном подходе.

  1. Определение и краткая история функционального программирования
  2. Абстракция и декомпозиция. Декларативное программирование
  3. Парадигмы программирования
  4. Функциональное программирование в реальной жизни
  5. Основные принципы функционального программирования
  6. Сопоставление с образцом. Рекурсия. Циклы
  7. Пример: построение графика 2D-функции
  8. Рекурсивные структуры данных. Списки
  9. Примеры работы со списками
  10. Хвостовая рекурсия. Порядковое представление списков и матриц
  11. Функциональные структуры данных
  12. Деревья
  13. Деревья выражений и деревья поиска. Продолжения
  14. Введение в л-исчисление
  15. Нормальный и аппликативный порядок редукции. Теорема Чёрча-Россера
  16. Описание рекурсивных функций. Комбинаторы и комбинаторная логика
  17. От л-исчисления к языку программирования
  18. Замыкания, генераторы и отложенные вычисления
  19. Последовательности и ленивые вычисления в F#. Мемоизация
  20. Пример: реализация машины Тьюринга
  21. Типизация в языках функционального программирования
  22. Формальная семантика языков функционального программирования
  23. Доказательство свойств программ
  24. Реализация функциональных языков. Eval-Apply-интерпретаторы
  25. Реализация функциональных языков: интерпретаторы и абстрактные машины
  26. Реализация функциональных языков: редукция графов, потоковые реализации
  27. Анализ искусственных и естественных языков
  28. Метапрограммирование: Quotations
  29. Императивное ядро в функциональных языках. Монады. Computational Workflows
  30. Асинхронные и параллельные вычисления

Dates:
  • Free schedule
Course properties:
  • Free:
  • Paid:
  • Certificate:
  • MOOC:
  • Video:
  • Audio:
  • Email-course:
  • Language: Russian Ru

Reviews

No reviews yet. Want to be the first?

Register to leave a review

Show?id=n3eliycplgk&bids=695438
Included in selections:
Small-icon.hover Functional Programming
Материалы по функциональному программированию
NVIDIA
More on this topic:
D732c05d-76a2-4166-a842-4c737584d0bd-7f8c01e1d0d0.small Введение в функциональное программирование на Common Lisp
Научитесь использовать концепции функционального программирования при напис...
Cscenter Функциональное программирование
Программа занятий по функциональному программированию включает в себя лекци...
Extpicture Программирование в AutoCAD
Курс представляет собой пособие по программированию в системе автоматизиров...
Extpicture Основы функционального программирования
В курсе изложены основы функционального программирования и методы его приме...
Extpicture Функциональное программирование
Курс знакомит слушателей с парадигмой функционального программирования, в к...
More from 'Computer Science':
D732c05d-76a2-4166-a842-4c737584d0bd-7f8c01e1d0d0.small Введение в функциональное программирование на Common Lisp
Научитесь использовать концепции функционального программирования при напис...
New-logo Скидка до 3000 руб. от Нетологии в Январе 2017
Скидки: - 3000 рублей на курсы «Копирайтинг» и «Веб-аналитика» — промокод hochu...
Cf4c6c5e92f9469c8af342465d00a462 Практический анализ данных
Практический курс по анализу данных, включающий в себя максимально полезные...
Netology2016 Новогодняя распродажа в Нетологии
Скидка на ВСЕ курсы 2016 руб! Электронная коммерция и SMM, веб-дизайн и HTML...
150x150 Курсы информационных технологий
Компания «Яндекс» регулярно проводит набор на Курсы информационных технолог...
More from 'Intuit':
Extpicture "Продвинутые" алгоритмы для школьников
В курсе рассказывается о "продвинутых" (advanced) алгоритмах для школьников...
Extpicture Комбинаторные алгоритмы для программистов
Курс начинается с азов комбинаторики и охватывает все основные алгоритмы, ...
Extpicture Алгоритмы: построение и анализ
Курс посвящён теории алгоритмов и элементам дискретной математики. Основная...
Extpicture Алгоритмы и модели вычислений
Рассматриваются некоторые теоретические проблемы, возникающие при разработк...
Logo Базовые и "продвинутые" алгоритмы для школьников
В курсе рассказывается о базовых и "продвинутых" (advanced) алгоритмах для ...

© 2013-2019