Рубрика:
Карьера/Образование /
Образование в сети
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ИГОРЬ ШТОМПЕЛЬ, инженер, системный администратор. Сфера профессиональных интересов – свободное программное обеспечение, keepercoder@gmail.com
Функциональное программирование
Различные интеллектуальные системы занимают все больше места в нашем окружении. При этом интеллект цифровых помощников становится все совершеннее и со временем только улучшается. В этом обзоре разберем, где можно научиться функциональному программированию, которое является основой моделирования искусственного интеллекта
Основы функционального программирования
- Авторы: Л.В. Городняя.
- Учебное заведение: Интернет-Университет Информационных Технологий (ИНТУИТ, intuit.ru).
- Специальность: Программист.
- Лекции: 15.
- Материалы: Текст.
- Уровень сложности: Специалисты.
- Сертификат: Да.
- Источник: http://old.intuit.ru/department/pl/funcpl.
Начать изучение функционального программирования (ФП) следует с данного курса, в котором теоретическая часть хорошо подкреплена практикой. Слушателям предлагается ознакомиться с базовыми идеями функционального программирования, а также со сферой его применения, историей языка Лисп (LISP) и его влиянием на развитие информационных технологий.
Изучая Лисп, мы познакомимся с символьным представлением программ. На практике для его иллюстрации используются формализм рекурсивных функций и простые алгоритмы символьной обработки. Слушатели узнают, что определения в Лисп могут быть рекурсивными, и подробности их использования, а также изучат метод выбора семантического базиса для класса решаемых задач на примере организации информационной обработки символьными выражениями.
Освоить технику использования параметров и функций помогут методы управления эффективностью и порядком вычислений, а обучение методу резкого повышения производительности программирования и эффективности отладки программ осуществляется на базе программирования отображений и функционалов.
Большой темой курса стали методы расширения функциональных систем – с помощью иерархии разнородных контекстов определений, а также обобщения базовой схемы обработки символьных выражений и представленных с их помощью функциональных форм на основе списков свойств атомов. Также рассмотрен функциональный подход к низкоуровневому программированию, который использовался при создании Лисп и компиляции функциональных программ.
Отметим еще навыки и знания, которые слушатели смогут приобрести, пройдя курс до конца: использование структур данных, которые удобны при динамической обработке информации; понимание связи функционального программирования и объектно-ориентированного; умение обобщать процесс информационной обработки на базе возможностей отложенных действий (lazy evaluation) и многое другое.
Курс является хорошим введением в ФП, особенно для тех, кто хочет начать с языка программирования Лисп.
Введение в программирование на Лиспе
- Авторы: Л.В. Городняя, Н.А. Березин.
- Учебное заведение: Интернет-Университет Информационных Технологий (ИНТУИТ, intuit.ru).
- Специальность: Программист.
- Лекции: 12.
- Материалы: Текст.
- Уровень сложности: Специалисты.
- Сертификат: Да.
- Источник: http://old.intuit.ru/department/pl/lisp.
Авторы считают, что знакомство с Лиспом «важная составляющая современного образования в области информатики». Более того, на их взгляд, этот язык является ключом для исследования основных задач системного программирования, а также искусственного интеллекта. Особенностью курса является то, что в качестве основного программного обеспечения в нем задействуется GNU Clisp.
Лекции начинаются с введения базовых понятий. Слушатели узнают о концепции символьной обработки данных, об обозначениях и определениях, списках и т.п., познакомятся с основами символьной обработки данных и принципами ФП. Отталкиваясь от этой базы, авторы предлагают освоить работу GNU Clisp: диалог с ней, запуск Лисп-программ из файлов, пошаговое вычисление и т.п.
В целом в ходе прохождения курса, помимо указанного выше, можно приобрести навыки и знания о структурах данных, которые используются при символьной обработке информации; о методах программирования на Лиспе и запуске программ, написанных на нем; о приемах создания практичных решений на Лиспе на базе отображений и функционалов; о методах повышения эффективности вычислений на основе ленивых вычислений, работы с событиями и т.п.
Кроме того, лекции позволяют научиться эффективной работе с определениями функций и освоить механизмы эффективной работы со структурами данных в памяти на базе свойств атомов, работы с памятью и др., а также работе с расширениями и приложениями Лиспа.
В целом курс позволяет познакомиться с основами языка Лисп и получить базу для дальнейшего совершенствования навыков программирования на этом языке.
Функциональное программирование
- Авторы: Д.В. Сошников.
- Учебное заведение: Интернет-Университет Информационных Технологий (ИНТУИТ, intuit.ru).
- Специальность: Программист.
- Лекции: 30.
- Материалы: Видео, презентации (в формате .ppt).
- Уровень сложности: Специалисты.
- Сертификат: Да.
- Источник: http://old.intuit.ru/department/pl/funcprog.
Курс преследует цель ознакомления слушателей с основами ФП (как дисциплины на стыке программирования и дискретной математики), научить программированию на F#, а также показать связь между теорией информатики (Computer Science в авторской терминологии) и программированием. Ориентирован как на практикующих программистов, так и на математиков и студентов.
Начало традиционное – введение понятия ФП, история вопроса, актуальность изучения ФП и его место в реальной жизни. Рассматриваются проблемы абстракции и декомпозиции при функциональном подходе, проблемы декларативного программирования.
Свое дальнейшее развитие рассмотрение ФП в курсе получает в виде изучения ряда специальных тем. В частности, слушатели узнают о функциональных структурах данных, лямбда-исчислениях, деревьях, рекурсии (виды, структуры данных, хвостовая), работы со списками, редукции (в том числе нормального и апликативного порядка), функциях нескольких аргументов, каррировании, условных выражениях, последовательностях и ленивых вычислений на F#, мемоизации, комбинаторах и комбинаторной логике и т.п.
Особенность курса в том, что он предоставляет возможность получить более глубокое представление о ФП, которое сконцентрировано в заключительных лекциях курса, посвященных специфическим темам. В частности, они позволяют получить представление о типизации в языках функционального программирования и их формальной семантике. Ознакомиться с реализацией функциональных языков (Eval-Apply-интерпретаторы, интерпретаторы и абстрактные машины, редукция графов, потоковые реализации) и анализом искусственных и естественных языков. И, конечно, не оставляют без внимания как метапрограммирование, так и асинхронные и параллельные вычисления.
Особенностью курса являются примеры построения графика 2D-функции, работы со списками, реализации машины Тьюринга на F#.
В целом лекции позволяют заложить отличный фундамент в области ФП, но с одной оговоркой: с учетом специфики F# они в первую очередь подойдут тем, кто работает в операционной системе Windows в среде Visual Studio.
Функциональное программирование
Помимо Лиспа и F#, важное место среди языков ФП занимает Haskell. Именно на базе этого языка и основан предлагаемый курс, который автор начинает с введения в ФП. Из него слушатели узнают об основах функционального стиля и о языке программирования Haskell. Что касается последнего, то на этапе введения предлагается ознакомиться с его основными типами данных и интерпретаторами, а также с определением функций в нем. Кстати, на этапе введения освещается интересный вопрос о том, почему не получается программировать в функциональном стиле на традиционных языках.
Основываясь на отмеченном выше базисе, автор переходит к рассказу о списках и функциях высших порядков, среди прочего позволяя освоить реализацию эффективных рекурсивных функций, концевой рекурсии и др.
Не остаются в стороне и ленивые вычисления, их, как и карринг, автор раскрывает следующими, уделяя внимание частичной параметризации функций, каррингу и сечениям, бесконечным спискам и т.п. Кроме того, немало места в лекциях отведено лямбда-исчислениям. В частности, слушатели узнают об их основах в виде лямбда-выражений и редукции, нормальной формы, а также о чистом лямбда-исчислении в представлении логических значений и функций, а также списков и арифметики целых чисел.
В заключение курса слушатели смогут ознакомиться с такой проблемой, как интерпретация и компиляция функциональных программ. Речь идет об Eval/Apply-интерпретаторе, эффективной и ленивой интерпретациях, SECD-машине. Другие проблемы, которым посвящены заключительные лекции, – представление последовательных процессов в ФП и введение в комбинаторную редукцию.
Отдельно стоит отметить то, что ряд лекций посвящен таким темам, которые не всегда находят отражение в курсах, посвященных ФП, как техника «завязывания узлов» и системы ФП. В рамках первой предлагается познакомиться с примерами программирования регулярных выражений и функционального представления графов, а в рамках второй – с Лисп и FP. Курс можно рассматривать как позволяющий расширить представление в области ФП. Его можно изучать после прохождения первых двух описанных в этой статье, если вы не специализируетесь на платформе Windows. Если же вы интересуетесь ФП в целом, то можно изучить все курсы из нашего обзора и получить цельное представление о его состоянии и реализациях соответствующих программных систем, их возможностях и особенностях использования на нескольких платформах.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|