Компьютерные науки

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

Программа о парадигме функционального программирования на примере языка Лисп. В программе рассматриваются методы символьной обработки информации и создания сложных интеллектуальных систем.
Студентов 3810 Выпускников 507 Для специалистов
690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.
Темы:
Программирование
Объем

36 час.
Длительность

30 дней
Нагрузка в неделю

9 час.
Формат обучения

Дистанционно (самостоятельно)
Описание Учебная программа посвящена функциональному подходу для решения задач искусственного интеллекта и системного проектирования. Рассматриваются методы абстрагирования и обобщения данных, позволяющие писать гибкий и надежный код. Изучение выстроено от элементарных конструкций языка Лисп до реализации объектно-ориентированных расширений и компиляции, включая теоретические блоки. Программа полезна разработчикам и исследователям для освоения альтернативы традиционным императивным методам.
Цели
  • Дать системное представление о функциональной парадигме.
  • Помочь освоить методы символьной обработки на языке Лисп.
  • Раскрыть потенциал функционального стиля для сложных ИТ-задач.
Чему я научусь?
  • Применять рекурсию и функции высшего порядка.
  • Проектировать структуры данных в функциональном стиле.
  • Создавать прототипы интеллектуальных систем.

Авторы

Городняя Лидия Васильевна
Городняя Лидия Васильевна
Кандидат физико-математических наук,\nдоцент кафедр "Программирование" механико-математического факультета и "Системы информатики" факультета информационных технологий НГУ,старший научный сотрудник Института систем информатики СО РАН им. А.П.Ершова.
Чему я научусь?
  • Применять рекурсию и функции высшего порядка.
  • Проектировать структуры данных в функциональном стиле.
  • Создавать прототипы интеллектуальных систем.

Учебный план

Занятия
Экзамен экстерном Внимание! Экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите подтвердить свои знания по данному курсу без его изучения или поверить свои знания по нему. Экзамен экстерном можно сдать только один раз. 90 мин
1 Основные идеи В этой лекции дается общее представление о функциональном программировании и сфере его применения, включая анализ основных... В этой лекции дается общее представление о функциональном программировании и сфере его применения, включая анализ основных понятий и принципов и их иллюстрацию на материале истории языка Лисп, его диалектов, наследников и реализаций. Рассматривается роль функциональных программ в жизненном цикле программного обеспечения и эволюции информационных технологий, а также перспективы функционального подхода к совершенствованию информационных систем. ещё
Основные идеи тест для курса Основы функционального программирования 40 мин
2 Элементарный Лисп Изучается ключевой метод функционального программирования — выбор семантического базиса для класса решаемых задач на примере организации... Изучается ключевой метод функционального программирования — выбор семантического базиса для класса решаемых задач на примере организации информационной обработки символьными выражениями в языке Лисп. Вводятся базовые понятия, достаточные для символьного представления программ. Формализм рекурсивных функций и простые алгоритмы символьной обработки привлечены для обоснования и демонстрации функционального подхода к представлению программ. Анализируются требования к полноте и эффективности их обработки. В качестве исторической иллюстрации полномасштабного применения функционального программирования для решения достаточно сложной задачи используется символика языка Лисп, выбранная при организации символьной обработки для решения задач искусственного интеллекта. ещё
Элементарный Лисп тест для курса Основы функционального программирования 45 мин
3 Универсальная функция Изучается техника использования параметров и функций при организации обычных вычислений как альтернатива стандартной программотехнике, основанной на... Изучается техника использования параметров и функций при организации обычных вычислений как альтернатива стандартной программотехнике, основанной на изменениях состояний памяти. Рассматриваются методы управления эффективностью и порядком вычислений, организованных как применение функций к заданным аргументам. Оценивается сложность формирования результата в зависимости от параметризации форм, задающих вычисления. Строится простейшее определение универсальной функции, задающей границы вычисления представленных списками определенных форм над С-выражениями. ещё
Универсальная функция тест для курса Основы функционального программирования 45 мин
4 Отображения и функционалы Программирование отображений и использование функционалов демонстрируется как метод резкого повышения производительности программирования и эффективности отладки программ.... Программирование отображений и использование функционалов демонстрируется как метод резкого повышения производительности программирования и эффективности отладки программ. Изучается механизм безымянных определений. Рассматриваются разные схемы отображений аргументов и формирования результатов на основе отображающих функций над компонентами структур данных и определения различных функциональных схем переработки данных. ещё
Отображения и функционалы тест для курса Основы функционального программирования 45 мин
5 Имена, определения и контексты Рассматриваются основные методы расширения функциональных систем с помощью иерархии разнородных контекстов определений. Изучаются приемы достижения удобочитаемости... Рассматриваются основные методы расширения функциональных систем с помощью иерархии разнородных контекстов определений. Изучаются приемы достижения удобочитаемости функциональных программ при определении сложных функций и анализируются особенности типовых схем связывания имен переменных с их значениями, принятых в системах программирования. Знакомство с методом неподвижных точек в системах рекурсивных определений логически завершает схему выбора решений по взаимодействию имен с определениями. ещё
Имена, определения и контексты тест для курса Основы функционального программирования 45 мин
6 Свойства атомов и категории функций Методы расширения функциональных построений применены для моделирования привычного операторно-процедурного стиля программирования и техники работы с глобальными... Методы расширения функциональных построений применены для моделирования привычного операторно-процедурного стиля программирования и техники работы с глобальными определениями. Демонстрируется еще один важный метод — обобщение базовой схемы обработки символьных выражений и представленных с их помощью функциональных форм на основе списков свойств атомов. В результате можно собирать и специализировать функционально полное определение гибкого и расширяемого интерпретатора для языка программирования на примере Лиспа, написанном на Лиспе. Акцент на возможности варьирования семантики функций и пополнения семантического базиса с целью автоматизации выполненных построений в процессе исследования границ класса решаемых задач и конкретизации методов их решения. ещё
Свойства атомов и категории функций тест для курса Основы функционального программирования 45 мин
7 Детализация базовых функций Рассматривается функциональный подход к низкоуровневому программированию на уровне ассемблера, использованный при реализации Лисп. Изучается понятие абстрактной... Рассматривается функциональный подход к низкоуровневому программированию на уровне ассемблера, использованный при реализации Лисп. Изучается понятие абстрактной машины (secd) для определения операционной семантики языка функционального программирования по Венской методике, а именно для отображения абстрактного синтаксиса языка на язык абстрактной машины. Анализируется процедура включения средств уровня ассемблера в высокоуровневую обстановку языка Лисп, опробованных при раскрутке Лисп-системы. ещё
Детализация базовых функций тест для курса Основы функционального программирования 45 мин
8 Компиляция функциональных программ В данной лекции изучаются требования к компиляции функциональных программ и строится определение компилятора. Для Лиспа такое... В данной лекции изучаются требования к компиляции функциональных программ и строится определение компилятора. Для Лиспа такое определение написано на Лиспе, как и определение интерпретатора. Рассматриваются Венская методика определения языков программирования, а именно отображение абстрактного синтаксиса языка на язык абстрактной машины, и приемы оптимизационного программирования. Разложение программы на функции с разным уровнем отладки является отправной точкой при выборе оптимизационных решений. Компиляция программ рассматривается как один из методов оптимизации процессов, осуществляемый как символьное преобразование — трансляция с исходного языка высокого уровня на язык низкого уровня, допускающий оптимизирующую кодогенерацию. ещё
Компиляция функциональных программ тест для курса Основы функционального программирования 45 мин
9 Реализационные решения "Приведены принципы реализации, описаны структуры данных, удобные для динамической обработки информации. Проиллюстрированы методы ""сборки мусора"" и... "Приведены принципы реализации, описаны структуры данных, удобные для динамической обработки информации. Проиллюстрированы методы ""сборки мусора"" и других реализационных механизмов функциональных языков программирования, давших экспериментальное обоснование современным решениям в области языковых новинок по организации вычислений, ставших практичными на современном оборудовании, которое обладает достаточно высокими эксплуатационными характеристиками. Рассмотрена последовательность комплектации ядра системы программирования, технические детали организации ее рабочего цикла и функциональные средства оперативного мониторинга фактического состава системы." ещё
Реализационные решения тест для курса Основы функционального программирования 45 мин
10 От ФП к ООП Анализируется содержательное родство между функциональным (ФП) и объектно-ориентированным (ООП) программированием. Рассмотрены основные принципы ОО-программирования и проанализированы... Анализируется содержательное родство между функциональным (ФП) и объектно-ориентированным (ООП) программированием. Рассмотрены основные принципы ОО-программирования и проанализированы схемы их реализации в рамках функционального программирования на базе ряда структур данных на примере простой модели ОО-языка, встраиваемого в Лисп. Отмечены особенности системы CLOS, поддерживающей ООП на GNU Clsip. Реализация методов обработки объектов заданного класса сводится к отдельной категории функций, вызов которых управляется анализом принадлежности аргумента классу. ещё
От ФП к ООП тест для курса Основы функционального программирования 45 мин
11 Варианты, последовательности, множества Описаны приемы организации недетерминированных вычислений в рамках функционального стиля программирования. Реализация программ с возвратами, перебор вариантов,... Описаны приемы организации недетерминированных вычислений в рамках функционального стиля программирования. Реализация программ с возвратами, перебор вариантов, откат влекут за собой расширение семантического базиса механизмами обработки прерываний. Анализируется соответствие точности решения задач и уровня их изученности. Исследуются связь диагностической интерпретации и средств логического программирования. Обработка множеств, последовательностей и хэш-таблиц дает материал для простых примеров. ещё
Варианты, последовательности, множества тест для курса Основы функционального программирования 45 мин
12 Управление процессами Рассматривается эффективное обобщение процесса информационной обработки, вытекающее из возможности отложенных действий (lazy evaluation), органически присущей функциональному... Рассматривается эффективное обобщение процесса информационной обработки, вытекающее из возможности отложенных действий (lazy evaluation), органически присущей функциональному программированию благодаря унификации представления данных и программ. Анализируются резервы производительности обобщенных процессов и методы динамической оптимизации вычислений, приводящие к смешанным и параллельным вычислениям. ещё
Управление процессами тест для курса Основы функционального программирования 45 мин
13 Функции высших порядков Рассматривается аппарат функций высших порядков при организации высококвалифицированных процессов информационной обработки, использующей формализацию и спецификацию данных,... Рассматривается аппарат функций высших порядков при организации высококвалифицированных процессов информационной обработки, использующей формализацию и спецификацию данных, таких как синтаксический анализ, кодогенерация, конструирование интерпретаторов и компиляторов по формальному определению реализуемого языка — так называемые синтаксически управлямые методы информационной обработки. ещё
Функции высших порядков тест для курса Основы функционального программирования 45 мин
14 Макеты программ и тесты Техника функционального программирования иллюстрируется примерами поддержки полного жизненного цикла программ с помощью быстрого прототипирования и спецификации... Техника функционального программирования иллюстрируется примерами поддержки полного жизненного цикла программ с помощью быстрого прототипирования и спецификации программ. В этом плане существенна возможность введения частично определенных функций, варьируемых и уточняемых определений, а также специализация интерпретатора программ с целью учета уровня достоверности решений. Рассматриваются примеры построения прототипов системы, опережающего детальную разработку алгоритмов и отладку программ. Основой является процесс уточнения информации о решаемой задаче, продемонстрированный на отдельных примерах и схемах с привлечением частичных функций на доступных типах данных с доведением до полных функций, приспособленных к обработке произвольных данных. ещё
Макеты программ и тесты тест для курса Основы функционального программирования 45 мин
15 Парадигмы программирования В данной лекции подводится итог изучению основ ФП и особенностей его применения. Анализируются наиболее очевидные закономерности... В данной лекции подводится итог изучению основ ФП и особенностей его применения. Анализируются наиболее очевидные закономерности применения языков программирования, отражающие расширение класса решаемых задач, прогресс элементной базы и рост квалификации программистов. Рассматриваются ключевые моменты развития парадигм программирования и анализируются закономерности в процессе реализационного освоения новых областей обработки информации. Приведен небольшой обзор парадигм программирования. Для желающих поэкспериментировать дана справка о реализационных особенностях GNU Clisp [6, 7]. ещё
Парадигмы программирования тест для курса Основы функционального программирования 45 мин
Тренировочный экзамен Внимание! Тренировочный экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите проверить свои знания курса перед сдачей экзамена. Тренировочный экзамен можно сдавать сколько угодно один раз. 90 мин
Экзамен 60 мин

Какой документ я получу?

Сертификат

Выдаётся автоматически после успешного завершения программы.

Удостоверение о повышении квалификации

Выдается при наличии среднего специального или высшего образования (необходимые документы).

Стоимость программы

690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.