Автор: Д.В. Сошников Год выпуска: 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 г.) скачать | download c filemashine скачать | download c sms4file http://rapidshare.com/files/381486195/funkcional.part01.rar http://rapidshare.com/files/381486178/funkcional.part02.rar http://rapidshare.com/files/381486138/funkcional.part03.rar http://rapidshare.com/files/381486171/funkcional.part04.rar http://rapidshare.com/files/381486170/funkcional.part05.rar http://rapidshare.com/files/381486155/funkcional.part06.rar http://rapidshare.com/files/381486165/funkcional.part07.rar http://rapidshare.com/files/381486141/funkcional.part08.rar http://rapidshare.com/files/381486173/funkcional.part09.rar http://rapidshare.com/files/381486191/funkcional.part10.rar http://rapidshare.com/files/381486547/funkcional.part11.rar http://rapidshare.com/files/381486541/funkcional.part12.rar http://rapidshare.com/files/381486579/funkcional.part13.rar http://rapidshare.com/files/381486544/funkcional.part14.rar http://rapidshare.com/files/381486559/funkcional.part15.rar http://rapidshare.com/files/381486548/funkcional.part16.rar http://rapidshare.com/files/381486545/funkcional.part17.rar http://rapidshare.com/files/381486584/funkcional.part18.rar http://rapidshare.com/files/381486592/funkcional.part19.rar http://rapidshare.com/files/381486582/funkcional.part20.rar http://rapidshare.com/files/381486889/funkcional.part21.rar http://rapidshare.com/files/381486877/funkcional.part22.rar http://rapidshare.com/files/381486910/funkcional.part23.rar http://rapidshare.com/files/381486928/funkcional.part24.rar http://rapidshare.com/files/381486893/funkcional.part25.rar http://rapidshare.com/files/381486915/funkcional.part26.rar http://rapidshare.com/files/381486907/funkcional.part27.rar http://rapidshare.com/files/381486881/funkcional.part28.rar http://rapidshare.com/files/381486927/funkcional.part29.rar http://rapidshare.com/files/381486913/funkcional.part30.rar http://rapidshare.com/files/381486935/funkcional.part31.rar http://ul.to/pzeynw/funkcional.part29.rar http://ul.to/4umvl5/funkcional.part26.rar http://ul.to/x5dt2l/funkcional.part30.rar http://ul.to/lgiw4q/funkcional.part28.rar http://ul.to/u68tur/funkcional.part27.rar http://ul.to/x62vsj/funkcional.part23.rar http://ul.to/4y76y2/funkcional.part24.rar http://ul.to/k0mrrb/funkcional.part25.rar http://ul.to/gx5ten/funkcional.part31.rar http://ul.to/94g1co/funkcional.part22.rar http://ul.to/3bd2cc/funkcional.part21.rar http://ul.to/r1e03p/funkcional.part20.rar http://ul.to/r0r297/funkcional.part16.rar http://ul.to/doitdy/funkcional.part19.rar http://ul.to/qoii6i/funkcional.part17.rar http://ul.to/n1br7s/funkcional.part18.rar http://ul.to/4n3x22/funkcional.part15.rar http://ul.to/36a714/funkcional.part14.rar http://ul.to/wciujs/funkcional.part13.rar http://ul.to/hu4e5a/funkcional.part12.rar http://ul.to/cr040z/funkcional.part11.rar http://ul.to/s8icbm/funkcional.part05.rar http://ul.to/4unsnp/funkcional.part06.rar http://ul.to/o6jpnb/funkcional.part03.rar http://ul.to/kqhlyz/funkcional.part07.rar http://ul.to/hala6s/funkcional.part04.rar http://ul.to/lrweop/funkcional.part01.rar http://ul.to/iy5827/funkcional.part08.rar http://ul.to/2se0of/funkcional.part02.rar http://ul.to/t819qw/funkcional.part09.rar http://ul.to/300vcm/funkcional.part10.rar
|