Смекни!
smekni.com

2 Постановка задачи: о связном предъявлении теории информатики и практики программирования в теме исполнения для теоретического мышления. 13 (стр. 16 из 25)

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


4 Класс обучаемых Универсал: предъявление понятия Выразимость.

В поставленной задаче дипломной работы необходимо было на основании теоремы компактности Мальцева-Геделя выявить ключевые понятия для организации среды саморазвития категории начинающего. Анализ этой задачи, а главное, коллективный итог работы по предметной области [31][32] позволили точнее определиться с моделью ПО в компьютерном учебнике-задачнике (рис. 2, п. 1). Конкретная работа по увязыванию теории предмета с прагматикой задания для разных стилей (аппликативный, логический, объектно-ориентированный) привели к четкому увязыванию на уровне учебного материала математического (реализаторского) аспекта прагматика с классом профессионала, а системологического аспекта прагматика с классом универсала. Отсюда последовали серьезные уточнения в распределении материала. Именно, среда саморазвития для начинающего профессионала выстраивается на общих свойствах понятия алгоритм, а для начинающего универсала - на общих свойствах понятия метатеории (то есть теории, учитывающей язык, определение истинности, определение канонической модели). Наконец, нашла свое место тема - сравнение стилей по выразимости. Её заполучил программистский аспект универсала. Самое забавное, что теория моделей (с теоремой компактности) вышла на максимальный уровень обучения - системологический аспект универсала. Такое положение кажется вполне подходящим, учитывая нашу нацеленность на базовое обучение.

Таким образом, пункт 4 удается сформулировать шире, чем требовалось в задаче дипломной работы. Рассматривается в целом класс обучаемого универсал. Структура пункта 4 построена по настоянию научного руководителя, который хотел иметь итоговое описание состояния дела с учебным материалом для универсала на 96г.

4.1 Программистский аспект.

Так как этот вопрос не входил в задачу диплома, то мы обращаемся к перечислению рабочих материалов по вопросу сравнения стилей по выразимости:

В дипломе [27] рассмотрен императивный стиль, но безотносительно к заданию практикума.

В дипломе [29] рассмотрена среда саморазвития для логического стиля. Предъявлен также материал для информационной системы логического стиля.

В дипломе [28] рассмотрена среда саморазвития для аппликативного стиля. Предъявлен материал для информационной системы аппликативного стиля.

В дипломе [32] рассмотрена среда развития для логического стиля, а также элементы учебного материала для профессионала.

В дипломе [31] рассмотрена среда развития для ООП

В моем дипломе рассматривается среда развития для аппликативного стиля, а также элементы учебного материала для универсала.

В дипломе [30] общее состояние компьютерного учебника-задачника на 95г.

4.2 Математический аспект.

Для класса универсал обсуждается понятие Выразимость на основании Современного Аксиоматического Метода (САМ). Тогда релизационным аспектом являются вопросы, связанные с существованием реальных вычислителей, работающих для языков, ориентированных на “Что делать”. Следующие два пункта являются дополнениями к п. 3.4 диплома [32] и пунктов 3.2.2, 3.2.3, 3.2.4 диплома [31].

4.2.1 Èíèöèàëüíàÿ àëãåáðà.

Инициальные модели позволяют отвлечься от какого-либо конкретного представления, то есть обеспечивают абстракцию. В частности, концепция инициальности позволяет с большой гибкостью и удобством обращаться с абстрактными типами данных (см. Сашин диплом), в том числе и в языках логического программирования. Её можно использовать и для определений функций и отношений над встроенными типами. Инициальные модели создают также основу концептуального мира программы, будучи “замкнутыми мирами” или “стандартными моделями”. В частности, они дают реализатору четкий стандарт корректности, а программисту - ясную модель того, что можно ожидать от программы. Кроме того, стандартная интерпретация в конкретных семантических областях некоторых сортов, функций и операций позволяет использовать стандартные алгоритмы для решения конкретных задач в таких областях. Это дает большую гибкость, поскольку для других сортов можно по-прежнему использовать инициальность.

Наконец, инициальность является “универсальным” свойством (в смысле существования единственного отображения, удовлетворяющего определенным условиям). Между тем хорошо известно, что использование универсальной характеризации объектов часто позволяет построить более ясную математическую теорию с более простыми и концептуальными доказательствами по сравнению с использованием конкретных конструкций для этих объектов.

4.2.2 Óïîðÿäî÷åííî-ñîðòíûå òåîðèè.

Определяя истинность за счет сужения моделей, пользуемся тем фактом, что для описания программистских конструкций достаточно многообразия. Однако, чтобы приблизиться к реальному программированию, необходимо ввести многосортные модели. Гоген [9] показал, что использование в логическом программировании упорядоченно-сортной логики и модели формирует новый мощный подход, альтернативный синтаксическим и операционным подходам, используемым обычно в логическом программировании. Более того, упорядоченно-сортная теория моделей поддерживает современный аксиоматический метод языком спецификации EQLOG, являющимся также и языком программирования сверхвысокого уровня. Также существуют языки спецификаций OBJ2 и FOOPS, объединяющие различные языки программирования и основанные на упорядоченно-сортных теориях.

Оказывается, что логическое программирование может очень много выиграть от использования таких понятий теории моделей первого порядка, как

- упорядоченно-сортная логика и модели;

- инициальные модели;

- интерпретация определенных фиксированных сортов, функций и отношений в фиксированных моделях;

- настоящее семантическое равенство.

Эти инструменты (стандартные для теории абстрактных типов данных) составляют привлекательную альтернативу подходам, которые обычно применяются в логическом программировании. Они формируют новый мощный подход, в рамках которого можно использовать

- абстрактные типы данных, определяемые пользователем;

- встроенные типы данных;

- комбинацию логического и функционального программирования;

- программирование с ограничениями, позволяющее применять стандартные алгоритмы для стандартных задач, таких, как линейное программирование.

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

Развитие логического программирования наводит на мысль, что правильный путь к объединению различных парадигм программирования заключается в выявлении лежащих в их основе логик, объединении их и использовании объединенной логики в качестве основы языка. Это позволяет выбирать нужные черты различных ЯП и смешивать их. Например, комбинация функционального и логического программирования охватывается хорновой логикой с равенством. Комбинация функционального и объектно-ориентированного программирования охватывается рефлексивной эквациональной логикой. В настоящее время существует мнение, что рефлексивная упорядоченно-сортная хорнова логика с равенством хорошо подходит для объединения функциональной, реляционной и объектно-ориентированной парадигм в едином простом языке программирования, обладающем также мощными возможностями для работы с базами данных.

Многие из этих комбинаций уже реализованы в языках FOOPS, OBJ2, Eqlog. Язык OBJ2 основан на упорядоченно-сортной эквациональной логике первого порядка. Язык Eqlog основан на упорядоченно-сортной хорновой логике с равенством. Язык FOOPS является комбинацией языков функционального и объектно-ориентированного программирования и основан на рефлексивной упорядоченно-сортной эквациональной логике первого порядка.