Языки программирования - концепции и принципы

если ваши таблицы содержат десятки


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

Важно подчеркнуть, что «это не было сделано профессионалами», т. е. мы не вводили ни новый язык, ни понятия базы данных; это было всего лишь обычное программирование на языке Prolog. Любой программист может со­здавать небольшие базы данных, просто перечисляя факты, а затем в любой момент выдавать запросы.

 

 

Динамические базы данных

Если все наборы фактов, существуют с самого начала программы на языке Prolog, запросы совершенно декларативны: они только просят о заключении, основанном на ряде предположений (фактов). Однако язык Prolog включает нелогическое средство, с помощью- которого можно менять базу данных в процессе вывода. Элементарная формула assert(F) всегда истинна как логиче­ская формула, но в качестве побочного эффекта она добавляет факт F к базе данных; точно так же retract(F) удаляет факт F:

?-     assert(order( 102, 2, "Peugeot")),                    /* Бетти продает автомобиль'*/   

        assert(order(103,1 , "BMW")),                       /* Мартин продает автомобиль */      

        assert(order(102, 1, "Toyota")),                      /* Бетти продает автомобиль*/  

        assert(order(102, 3, "Fiat")),                           /* Бетти продает автомобиль */  

        retract(salesperson(101, "Sharon")).               /* Уволить Шэрон! */

С помощью изменений базы данных можно в языке Prolog смоделировать оператор присваивания. Предположим, что факт count(O) существует в про­грамме, тогда:

increment :-

      N1 is N +1,                              /* Новая переменная с новым значением */

      retract(count(N)),                    /* Стереть старое значение */


Содержание  Назад  Вперед