КурсыMBAКомпанииГранты на обучениеВузыПовысь зарплату

EduMarket Образование
  Вход на сайт
 
Напомнить   
Запомнить меня
 
Пользовательское соглашение


Публикации и новости

Анонсы и релизы (592)

 

Бесплатные видеокурсы (3013)

 

Статьи (2986)

 

Новости (550)

 

Победители конкурса грантов (124)

 


 
СМИ / Бесплатные видеокурсы / IT: Для программистов и IT-специалистов / Бесплатные видеолекции: Функциональное программирование (часть 1)

Бесплатные видеолекции: Функциональное программирование (часть 1)

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

Общее время просмотра (10 видео), часть 1: 4ч 42 мин

1 Определение и краткая история функционального программирования

Знакомство. Определение функционального программирования и его история.

    Введение
    Немного о лекторе
    Функциональное и классическое программирование
    История
    Функциональный стиль
        Пример с факториалом
        Особенности функционального программирования
        Рекурсия и функциональный стиль в других языках



2 Абстракция и декомпозиция. Декларативное программирования

Абстракция и декомпозиция при функциональном подходе. Декларативное программирование. Плюсы и минусы.

Декомпозиция и абстракция
Пример с рядом тейлора
Абстракция в функциональном стиле
Эффективность функционального программирования
Пример с суммированием
Ленивые вычисления
Декларативный подход
Суть подхода
Пример: сортировка Хоара
Функции
Разные функции
Функции над изображениями



3  Парадигмы программирования

Зачем надо изучать функциональное программирование.

Парадигмы программирования
Семантика языков
Языки программирования
Мультипарадигменные языки
Зачем изучать функциональное программирование ?



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

Построение множества Мандельброта. Функциональное программирование в реальной жизни. Пример визуализации на F#. Рекомендуемая литература. Информация о курсе.

Множество Мандельброта
Где используется функциональное программирование
Особенности функционального программирования
Преимущества F#
Особенности функционального программирования
Пример
О курсе



5 Основные принципы функционального программирования

Введение в лямбда-исчисление. Редукция. Язык функционального программирования как лямбда-редуктор. Функции нескольких аргументов. Каррирование. Условное выражение. Определение имен. Области видимости.

 Разные функции
Неоднозначность нотации
Анонимные функции
Лямбда-исчисление
Неформально
Редукция
Бета-редукция
Лямбда исчисление на практике
Каррирование
Функциональные типы
Примеры
Система типов
Функции нескольких аргументов
Каррирование
Условное выражение
Связывание имен
Область видимости



6 Сопоставление с образцом. Рекурсия. Циклы

Циклические конструкции. Виды рекурсии.

Сопоставление с образцом
Match
fun vs. function
Пример pattern matching
Рекурсия
Пример
Функциональная абстракция
Цикл for
for с аккумулятором
Другие циклические конструкции
Классификация рекурсии



7 Пример: построение графика 2D-функции

Пример: построение графика 2D-функции и построение графика трехмерной функции

Введение. Типы
Построение графика функции
Автомасштабирование
Абстракция устройства вывода
Вывод в графический файл
Мораль
Демонстрация



8 Рекурсивные структуры данных. Списки

Рекурсивные структуры данных. Основные операции работы со списками.

Рекурсия
Список
Примеры
Работа со списком
Работа с головой и хвостом
Рекурсивная обработка
Длина списка
Сумма элементов списка
Принадлежность элемента списку
Конкатенация списков
Удаление по значению
Функции высшего порядка
Итерация
Нахождение элемента
Применение функции к элементу списка
Фильтрация списка
Сворачивание списка
Логические функции



9 Примеры работы со списками

Примеры работы со списками. Перестановки. Вычисление простых чисел. Работа с изображениями. Синтаксис порождения списка list comprehension.

Пример с генерацией перестановок
Пример с вычислением простых чисел
Пример с изображением



10
Хвостовая рекурсия. Порядковое представление списков и матриц   

Хвостовая рекурсия
Общая идея
Пример с вычислением длины списка
Реверсирование списка
Порядковое представление списков
Представление матриц
Классическое и порядковое представление
Разреженные матрицы
Транспонирование
Встроенные линейно-алгебраические типы
Итоги



продолжение, часть 2

Другие бесплатные видеокурсы
Все бесплатные видеокурсы, IT обучение
Пользовательское соглашение       Обратная связь       Карта сайта

© 2006—2024 Edumarket