| |||
| 
       The Emissia.Offline Letters Электронное научное издание (научно-педагогический интернет-журнал)  | |||
| 
       Издается с 7 ноября 1995 г. Учредитель: Российский государственный педагогический университет им. А.И.Герцена. ISSN 1997-8588  | |||
      
  | |||
| 
		 
			
			Кудрявцева Ирина Андреевна Интерпретатор λ-термов и его возможности в процессе обучения теоретическому программированию студентов IT-специальностей 
			Аннотация 
			Ключевые слова:
			 Предметом изучения теоретического программирования являются математические абстракции программ - предписаний, выраженных на специальных алгоритмических языках, обладающих определённой информационной и логической структурой и подлежащих выполнению на компьютерах. Анализ теоретических исследований в области теоретического программирования показывает, что чаще всего используется математический аппарат, содержащий следующие взаимосвязанные разделы (по [1,с.27-28]): λ-исчисление, комбинаторная логика, теория типов языков программирования, теория категорий. Одним из разделов теоретического программирования является λ-исчисление, которое представляет собой: 
 λ-исчисление, по своему внутреннему строению и наполнению, можно также трактовать как язык программирования, если: 
 Таким образом, наличие интерпретатора языка программирования чистого λ-исчисления позволит автоматизировать процесс преобразования одних λ-термов в другие, открывая возможность для исследования довольно широкого класса примитивов и базовых операций над ними как со стороны их представления в виде программ, так и с позиции эффективности их обработки (по количеству совершённых β-преобразований). Процесс погружения некоторого языка программирования в λ-исчисление в теоретическом программировании называется доказательством комбинаторной определимости базисных функций языка программирования. На данный момент нам известен лишь один интерпретатор бестипового λ-исчисления, написанный на языке программирования C – lci (автор K.Chatzikokolakis, 12.03.2006). Данный интерпретатор осуществляет вычислительный процесс в соответствии с нормальным порядком β-редукции. Для его использования в учебном процессе требуется знать встроенные в него функции и операторы, записанные во внутреннем представлении λ-термами. Эта информация извлекается из текстового файла, к которому интерпретатор обращается. Причём, данную базу функций можно пополнять или создавать собственный модуль функций. В итоге, весь процесс программирования сводится к тому, чтобы на "ассемблере" (с помощью λ-термов) выразить нужную функцию или оператор, а затем на языке "высокого уровня" (с помощью описанных функций и операторов) составлять выражения и композиции функций для запуска в интерпретаторе. На выходе результат вычисления оценивается количеством произведённых β-редукций и затраченным временем процессора. Для учебного процесса интерпретатор lci является хорошим подручным средством, однако в нём процесс распознавания термов и проведения нормального порядка β-редукции "спрятан" от обучаемых. Помимо этого существует интерпретатор λ-термов Lambda Animator (автор M.Thyer [2]), который лишь визуализирует разнообразные стратегии вычислений программ, записанных на языке Scheme. В связи с этим появилась идея создать интерпретатор λ-термов с открытым кодом на языке, доступном для быстрого понимания, и содержащим библиотеки по работе с фундаментальными языковыми примитивами и операциями над ними, расширив список λ-термов интерпретатора lci. Для написания интерпретатора λ-термов чистого бестипового λ-исчисления был выбран функциональный язык программирования Haskell, поскольку в его основании находятся λ-исчисление (бестиповое и типизированное) и комбинаторная логика. 
			
			В соответствии с индуктивным определением λ-терма была построена 
			структура алгебраического типа данных "λ-терм" ("--" - комментарии): 
			 
			 
			 
			 Приведём примеры λ-термов на представленном выше языке: 
			 
			 
			 
			 
			 Преобразования λ-термов осуществляются в соответствии с двумя стратегиями вычислений: 1. Нормальный порядок β-редукции. Нормальным порядком β-редукции называется порядок проведения β-редукции, при котором вначале преобразовывается самый левый из самых внешних β-редексов. Понятие "самый левый из самых внешних редексов" определим индуктивным образом: 
 Приведём пример нормального порядка β-редукции для λ-терма 
			 
			 На основе реализации операции "подстановка λ-терма N вместо всех свободных вхождений предметной переменной x в λ-терм M" и правила β-редукции смоделирована стратегия вычислений "нормальный порядок" [3,с.168-171]. Помимо этого в приведённом коде добавлена реализация α-конверсии и η-конверсии. 2. Аппликативный порядок β-редукции. Аппликативным порядком β-редукции называется порядок проведения β-редукции, при котором вначале преобразовывается самый левый из самых внутренних β-редексов. Понятие " самый левый из самых внутренних редексов" определим индуктивным образом: 
 Приведём пример аппликативного порядка β-редукции для λ-терма 
			 Для организации и отображения процесса вычислений была написана функция по приведению λ-терма к нормальной форме: рекурсивное применение правила β-редукции к исходному λ-терму до тех пор, пока в результате никакой λ-подтерм не будет является β-редексом (т.е. следующий λ-подтерм примет вид предыдущего). В результате по полученному списку промежуточных термов видны изменения строения исходного терма. В заключение перечислим функциональные возможности интерпретатора λ-термов чистого бестипового λ-исчисления, отображённые в учебном пособии [3,с.460-487]. С помощью него возможно программирование: 
 В результате нами построено средство обучения теоретическому программированию, поддерживающее содержание обучения λ-исчислению, исчислению комбинаторов и фрагменту теории категорий, относящемуся к декартово замкнутой категории. Литература 
 
			Рекомендовано к 
			публикации: ______ 
			
			Irina A.
			Kudryavtseva 
			
			 The interpreter of λ-terms in training to theoretical programming of students IT-specialties The author presents an interpreter of λ-terms and its ability in learning theoretical programming. The tool support learning content λ-calculus, calculus combinators and a fragment of category theory (cartesian closed category). Code interpreter is written in Haskell, is open to students and contains a library for working with basic language primitives and operations on them. 
			
			Keywords:
			 Literatura 
  | |||
| 
       | |||
| Copyright (C) 2014, Письма в 
      Эмиссия.Оффлайн (The Emissia.Offline Letters)   ISSN 1997-8588. Свидетельство о регистрации СМИ Эл № ФС77-33379 (000863) от 02.10.2008 от Федеральной службы по надзору в сфере связи и массовых коммуникаций При перепечатке и цитировании просим ссылаться на " Письма в Эмиссия.Оффлайн ". Эл.почта: emissia@mail.ru Internet: http://www.emissia.org/ Тел.: +7-812-9817711, +7-904-3301873 Адрес редакции: 191186, Санкт-Петербург, наб. р. Мойки, 48, РГПУ им. А.И.Герцена, корп.11, к.24а  |