Информационно-образовательный портал СОДРУЖЕСТВА НЕЗАВИСИМЫХ ГОСУДАРСТВ
ИНФОРМАТИЗАЦИЯ ОБРАЗОВАНИЯ
И ДИСТАНЦИОННОЕ ОБУЧЕНИЕ В СНГ
Информационно-образовательный портал СОДРУЖЕСТВА НЕЗАВИСИМЫХ ГОСУДАРСТВ  

Страны
Азербайджанская Республика
Республика Армения
Республика Беларусь
Республика Казахстан
Кыргызская Республика
Республика Молдова
Российская Федерация
Республика Таджикистан
Туркменистан
Республика Узбекистан
Украина

Типы материала
Информационно-коммуникационные технологии
Дополнительные информационные материалы
Нормативно-правовое обеспечение
Организация и методики обучения
Экономика образования
Межгосударственное сотрудничество
Образовательные центры
Методики обучения
Межвузовское сотрудничество
Повышение квалификации
Международные проекты и гранты, конкурсы
Конференции, симпозиумы, семинары и др.
Библиотека
 
Журнал «Вестник РУДН» серия «Информатизация образования»
 
2014, №4
2014, №3
2014, №2
2014, №1
2013, №4
2013, №3
2013, №2
2013, №1
2012, №4
2012, №3
2012, №2
2012, №1
2011, №4
2011, №3
2011, №2
2011, №1
2010, №4
2010, №3
2010, №2
2010, №1
2009, №4
2009, №3
2009, №2
2009, №1
2008, №4
2008, №3
2008, №2
2008, №1
2007, №4
2007, №3
2007, №2-3
2007, №1
2006, №1(3)
2005, №1(2)
2004, №1
Научные и специальные электронные ресурсы
Учебная, научная и специальная литература
Комиссия по дистанционному обучению совета по сотрудничеству в области образования государств-участников СНГ
Новости

Новая система подготовки преподавателей информатики с использованием парадигмы функционального программирования


Аннотация
В статье обсуждаются вопросы подготовки преподавателей информатики с использованием парадигмы функционального программирования

Текст документа

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

Однако, идеи, апробированные в области функционального программирования (параметрический полиморфизм и вывод типов), оказывают сильное влияния на разработку языков, подобно тому, как объектно-ориентированная модель коренным образом изменила облик программирования, спустя почти пятнадцать лет после своего появления. Овладевать этими идеями нужно уже сегодня. Даже начальное знакомство с функциональным программированием будет полезно для преподавателей информатики, потому что, незнание подобных средств перестанет быть решающим аргументом против их использования. Программное обеспечение постоянно усложняется, повышается и необходимость в улучшении его структуры. Хорошо структурированное программное обеспечение проще пишется и легче отлаживается, оно предоставляет набор многократно используемых модулей, уменьшает затраты на программирование в будущем.

Традиционные языки программирования имеют концептуальные ограничения на организацию модульной структуры. Функциональные языки снимают эти ограничения. Функциональный подход к программированию основывается на той идее, что вся обработка информации и получение искомого результата могут быть представлены в виде вложенных или рекурсивных вызовов функций, выполняющих некоторые действия, так что значения одной функции используется как аргумент другой. Значение этой функции становится аргументом следующей и так далее, пока не будет получен результат  - решение задачи. Программы строятся из логически расчлененных определений функций. Определения состоят из управляющих структур, организующих вычисления, и из вложенных вызовов функций.

Функциональные программы не содержат операторов присваивания, а переменные, получив однажды значение, никогда не изменяются. Более того, функциональные программы вообще не имеют побочных эффектов.

Обращение к функции не вызывает иного эффекта кроме вычисления результата. Это устраняет главный источник ошибок  и делает порядок  выполнения функций несущественным: так как побочные эффекты не могут изменять значение выражения, оно может быть вычислено в любое время. Программист освобождается от бремени описания потока управления. Поскольку выражения могут быть вычислены в любое время, можно свободно заменять переменные их значениями и наоборот, то есть программы «прозрачны по ссылкам». Эта прозрачность ссылок делает функциональные программы более удобными для математической обработки, по сравнению с общепринятыми аналогами.

Функциональное программирование акцентируется на том, что должно быть вычислено, а не как. Все эти характеристики приводят к более быстрой разработке  короткого, простого и безошибочного кода, процесс доказательства формальных свойств для функциональных языков и программ много проще, чем для императивных.

Теория,  положенная в основу функционального подхода родилась в 20-х-30-х годах прошлого века. В числе разработчиков математических основ функционального программирования можно назвать Мозеса Шёнфинкеля (Германия и Россия) и Хаскелла Карри (Англия), разработавших комбинаторную логику, а также Алонзо Чёрча (США), создателя  l-исчисления.

Теория так и оставалась теорией, пока в начале 60-х годов прошлого века Джон МакКарти не разработал язык Lisp, который стал первым почти функциональным языком программирования и на протяжении многих лет оставался единственным таковым. Хотя Lisp всё ещё используется (как, например, и FORTRAN), он уже не удовлетворяет некоторым современным запросам, которые заставляют разработчиков взваливать как можно большую ношу на компилятор, облегчив тем самым свой непосильный труд. Необходимость в этом, конечно же, возникла из-за  более возрастающей сложности программного обеспечения. В связи с этим обстоятельством всё большую роль начинает играть типизация.

 В конце 70-х, начале 80-х годов  интенсивно разрабатываются модели типизации, подходящие для функциональных языков. Большинство этих моделей включали в себя поддержку таких мощных механизмов как абстракция данных и полиморфизм. Появляется множество типизированных функциональных языков: ML, Scheme, Hope, Miranda, Clean, Mercury, OCAML и многие другие. Вдобавок постоянно увеличивается число диалектов. В результате вышло так, что практически каждая группа, занимающаяся функциональным программированием, использовала собственный язык. Это препятствовало дальнейшему распространению этих языков и порождало многочисленные более мелкие проблемы. Чтобы исправить ситуацию, объединенная группа ведущих исследователей в области функционального программирования решила воссоздать достоинства различных языков в новом функциональном универсальном языке. Первая реализация этого языка, названного Haskell в честь Хаскелла Карри, была создана в начале 90-х годов.

В первую очередь большинство функциональных языков программирования реализуются как интерпретаторы, следуя традициям Lisp’а. Интерпретаторы удобны для быстрой отладки программ, исключая длительную фазу компиляции, тем самым, укорачивая обычный цикл разработки. Однако с другой стороны, интерпретаторы в сравнении с компиляторами обычно проигрывают по скорости выполнения в несколько раз. Поэтому помимо интерпретаторов существуют и компиляторы, генерирующие неплохой машинный код (например, Objective Caml) или код на C/C++ (например, Glasgow Haskell Compiler). Что показательно, практически каждый компилятор с функционального языка реализован на этом же самом языке.

Курс функционального программирования в системе подготовки преподавателей информатики. Система обучения студентов  должна обеспечить прочное овладение методами  функционального программирования, сознательное усвоение математических основ, сформировать устойчивые навыки практической реализации алгоритмов, раскрыть на этой основе значение и суть функционального стиля программирования. Применение функциональных языков связано с разработкой искусственного интел??екта, с помощью рекурсивных функций описывают интеллектуальную деятельность людей.

Исходя из этого, можно выделить следующие содержательные линии в обучении программированию на основе функциональной парадигмы: синтаксис и семантика, алгоритмы, структуры данных, технология работы с системой программирования, контролирующие структуры.

Первая линия предполагает изучение математических оснований языков функционального программирования λ-исчисления и исчисления комбинаторов. Вторая линия – алгоритмы – должна включать в себя введение в теорию алгоритмов и анализ алгоритмов. При анализе алгоритмов, в связи с обучением функциональному программированию, интерес представляют рекурсивные функции, λ-исчисление, прикладные алгоритмы (алгоритмы поиска, сортировки и др.), поскольку теория рекурсивных функций, наряду с алгеброй списков и λ-исчислением, является опорой на которой основывается функциональное программирование. Поскольку фундаментальным типом данных функциональных языков программирования являются списки, третья линия обучения должна знакомить студентов со следующими структурами данных – списки, очереди, стеки, бинарные деревья, графы. Четвертая линия определяет программу, как сложную формулу в формальной системе, и задача программиста понимается, как вывод этой формулы с одновременным доказательством того, что она удовлетворяет заданным формальным спецификациям. Таким образом, доказательство правильности программ идет одновременно с их построением (синтез программ). Пятая линия – контролирующие структуры – подход к доказательному программированию связан со свойствами языка программирования, к которому этот метод применяется. Для функционального программирования – это принцип математической индукции, λ-исчисление и исчисление комбинаторов.

Выводы. Развитие современных средств автоматизации обработки информации, их проникновение во все сферы человеческой деятельности позволяет считать современное общество информационным.  Компьютерные системы применяются для решения задач из различных предметных областей, в числе которых физика и химия, лингвистика и математика, медицина и культура, педагогика. Информатизация общества не может не наложить соответствующий отпечаток на процессы подготовки специалистов в учебных заведениях самого различного уровня и специализации. Более того, информатика как учебная дисциплина и процессы информатизации обучения другим  предметам стали традиционными.

Вместе с тем необходимо отметить, что все учебные заведения обучают, как правило, лишь одному из подходов к реализации алгоритмов, а выпускники, соответственно, владеют одним-двумя языками программирования, относящимися к одной из существующих парадигм. Это, в свою очередь, приводит к тому, что выбор методов и технологий решения конкретной  практической задачи выпускником не зависит от типа решаемой задачи. Молодой специалист всегда использует лишь тот подход, которому его научили.

Проблема выбора языка и метода программирования  гораздо шире, чем проблема обучения нескольким языковым средствам. Среди программистов существует мнение, что знание одного, двух языков программирования делает тривиальной задачу изучения нового языка. Языки программирования служат разным целям, и их выбор определяется тем, насколько они удобны для пользователя, пригодны для данного компьютера и данной задачи. Поэтому необходимо поставить вопрос о подготовке специалистов, способных применять различные методы, парадигмы  и инструменты. Изучение языковых  средств, относящихся к различным парадигмам программирования, предоставило бы специалистам, работающим в области педагогики, возможность выбора наиболее подходящего метода в обучающем процессе.

Автор оригинала: Жужжалов В.Е., Антипов М.В.
Источник оригинала: Журнал «Вестник РУДН» серия «Информатизация образования», 2006, №1(3)

Новости
16.06.2017

Российский университет дружбы народов объявляет о проведение первой волны вступительных испытаний среди иностранных граждан для обучения на программах магистратуры на контрактной основе. Первая ...

13.10.2016

26 октября-27 октября 2016 года Российский университет дружбы народов проводит Международную конференцию «Сетевые университеты и международный рынок труда (пространства БРИКС, СНГ, ШОС)».

19.05.2016

The Peoples’ Friendship University of Russia (PFUR) announces the beginning of admission of foreign citizens who graduated from Bachelor and Specialist Degree programs of PFUR and other Russian and ...

19.05.2016

Российский университет дружбы народов (РУДН) объявляет о наборе иностранных граждан -выпускников бакалавриата и специалитета РУДН и других российских и зарубежных ВУЗов на программы магистратуры на ...

11.12.2015

Проект рекомендаций Семинара-совещания научной общественности по проблемам международного научно-технического и образовательного сотрудничества