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

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

Автор: Д.В. Сошников
Год выпуска: 2010
Язык: русский
Продолжительность: ~13 часов (30 лекций)
Уровень: для специалистов
Информация о курсе
Курс знакомит слушателей с парадигмой функционального программирования, в которой решение задач сводится к описанию функций, перерабатывающих некоторые входные данные в выходные и строящихся из более простых функций на основе принципов функциональной абстракции и аппликации. Рассматриваются теоретические основы функционального программирования (лямбда-исчисление, комбинаторная логика, вопросы вычислимости), на примере функционального подхода дается представление о некоторых теоретических разделах компьютерных наук (семантика языков программирования, доказательство программ). С другой стороны курс содержит значительную практическую составляющую, основанную на промышленном языке программирования F# (входит в состав Microsoft Visual Studio 2010), рассматриваются вопросы использования функциональных языков для построения компиляторов, грамматического разбора и т.д.
Курс будет интересен как практикующим программистам и студентам, изучившим основы компьютерных наук, так и математикам. Для программистов на императивных языках знакомство с функциональным подходом позволит расширить сознание, перейти на более чистый (свободный от побочных эффектов) стиль программирования с более высоким уровнем абстракции, научиться эффективно использовать новые возможности современных императивных языков (LINQ, лямбда-выражения и т.д.). Для математиков, функциональное программирование может служить безболезненным введением в компьютерные науки, поскольку в рамках курса мы практически «с нуля» строим (начиная от математических основ, вплоть до реализации интерпретатора/компилятора и описания формальной семантики) язык программирования на базе лямбда-исчисления – раздела дискретной математики.
Цель
Познакомить слушателя с основами функционального программирования как дисциплины, находящейся на стыке программирования и дискретной математики; дать, с одной стороны, практические навыки функционального программирования на используемом на практике языке F#, а с другой – показать связь между теоретическими главами computer science и программированием, осветив некоторые теоретические проблемы информатики (вычислимость, семантика языков программирования, доказательство программ) и показав, как они решаются в функциональном подходе.
Предварительные знания
Строго говоря, предварительных знаний для курса не требуется – возможно изучение программирования, начиная с функционального подхода. Однако более традиционным подходом является изучение основ программирования на базе императивного языка, и затем изучение функционального программирования как альтернативной парадигмы. Курс в большей степени ориентирован именно на такой подход.
Качество: WEBRIP
Видео: VP6, 480x360 (4:3), 25 fps, 400 kbps
Аудио: MP3, 44.1 kHz, 96 kbps, stereo

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


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


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


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


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

Рекомендуем похожее:

Техника программирования на языке Delphi и основы создания графики (2010)

Отличный видеокурс по программированию на языке Delphi. Видеокурс Техника программирования на

Подробный видеокурс PHP и MySQL С нуля в видеоформате

Продолжаю выкладывать видеокурсы по веб программированию! Представляю вам супер свежий видеокурс,

Основы программирования в системе 1С 8.хх . Обучающий видеокурс

Данный курс предназначен для желающих пройти курсы по программированию в 1С:Предприятие 8 и не

Объектно ориентированное программирование на языке C (2011) DVDRip

Информация о Фильме: Качество видео: DVDRip Продолжительность: 05:11:39 Видеокодек: AVC1 Битрейт

Андрей Морковин Kohana 3.1 - программирование на PHP (2011)

Новый видеокурс от Андрея Морковина предназначен для начинающих веб-мастеров, желающих перейти от

Python. Основы программирования Объектно - ориентированное программирование ...

Цель данного курса — освоить синтаксис языка Python, получить базовые навыки структурного и

PHP DevelStudio 2010 1.0.7.5 extra

PHP DevelStudio 1.075 extra - Полноценная среда программирования, которая позволяет создавать exe

Pascal-Delphi 5-6 - Обучающий видеокурс (RUS)

Данный курс направлен на укрепление знаний программирования и повышения навыков работы. Чтобы курс
Логин
Пароль
Запомнить