Главная » Статьи » Программирование | [ Добавить статью ] |
Пролог, ООП и визуальное программирование
Сегодня почти идеальным языком программирования является C++, которым обеспечивается как высокая эффективность получаемых кодов, так и поддержка структур данных, максимально приближенных к моделируемым программами взаимосвязанным сущностям. C++ легко вписывается в любую систему визуального создания программ. Это обусловлено его объектно-ориентированной природой. С другой стороны, попытайтесь представить ход решения на C++ следующей задачи: рассчитать в заданной электрической схеме сопротивление между заданными точками. Электрическая схема естественно формализуется нумерацией точек соединения контактов и таблицей из трех столбцов, содержащих пары номеров непосредственно соединенных контактов и сопротивления между ними. Используя Пролог, автор решил эту задачу менее чем за час. В программе на C++ фактически пришлось бы реализовывать встроенные механизмы Пролога. Однако, используя Пролог, трудно создать приемлемый пользовательский интерфейс в силу того, что этот язык практически невозможно соединить с концепциями ООП.
Работая с системой наподобие Visual Prolog, ощущаешь, что работаешь на самом деле с двумя хотя и искусстно, но искусственно склеенными частями от разных механизмов. Единственная возможность естественным образом соединить механизмы вывода Пролога с современным интерфейсом пользователя — это создать на C++ класс Prolog, в простейшем случае, имеющий вид:
Подобный подход позволит как использовать метод поиска решений, встроенный в Пролог, так и использовать средства C++, в частности, для организации ввода-вывода. Предложенный класс Prolog можно значительно усовершенствовать. Например, добавив в закрытую часть класса внутреннее, эффективное для поиска решений представление базы данных. Можно добавить средства для отслеживания работы функции поиска и прочее, и прочее...
Создавая подобный класс, можно использовать неплохие средства GNU Пролога или других реализаций этого языка для связи с программами на C++.
Copyright © 2000 Лидовский Владимир Викторович.
Опубликована в журналах "Компьюлог” №4, 2000, с.63–65, "Информационные технологии” №3, 2001, с.11–13.
Работая с системой наподобие Visual Prolog, ощущаешь, что работаешь на самом деле с двумя хотя и искусстно, но искусственно склеенными частями от разных механизмов. Единственная возможность естественным образом соединить механизмы вывода Пролога с современным интерфейсом пользователя — это создать на C++ класс Prolog, в простейшем случае, имеющий вид:
class Prolog
{
public:
list<string> db; // пролог-программа
string goal; // цель
list<string> results; // список результатов
void find(); // поиск решений
};.
{
public:
list<string> db; // пролог-программа
string goal; // цель
list<string> results; // список результатов
void find(); // поиск решений
};.
Подобный подход позволит как использовать метод поиска решений, встроенный в Пролог, так и использовать средства C++, в частности, для организации ввода-вывода. Предложенный класс Prolog можно значительно усовершенствовать. Например, добавив в закрытую часть класса внутреннее, эффективное для поиска решений представление базы данных. Можно добавить средства для отслеживания работы функции поиска и прочее, и прочее...
Создавая подобный класс, можно использовать неплохие средства GNU Пролога или других реализаций этого языка для связи с программами на C++.
Copyright © 2000 Лидовский Владимир Викторович.
Опубликована в журналах "Компьюлог” №4, 2000, с.63–65, "Информационные технологии” №3, 2001, с.11–13.
Добавлено: 06.02.2011 | Просмотров: 5844 | Рейтинг: 1.0/1 |
Теги:
Комментарии (0) | |