logo search
TurboProlog / Документация / TOM_2

Чем Турбо зарядило Турбо Пролог

Замысел и концепция, лежащие в основе Турбо Пролога, заключались в

перемещении огроменной гибкости в обращении с символами и мощности тради-

ционного Пролога в область реального мира. Прежде чем Пролог стал Турбо и

рационализирован, он спокойно жил в палатах академических исследований -

местах, где продуктивность, легкость в использовании и стоимость создания

далеко не всегда оказывались самыми главными качествами.

Для увеличения скорости выполнения, добавления Турбо Прологу силы

разработки и возможностей взаимодействия с некоторыми наиболее сложными

проблемами традиционного Пролога были внесены четыре уже отмеченные рань-

ше конструкторские решения. Значительное преимущество в скорости, имеюще-

еся у Турбо Пролога, означает, что в дополнение к более традиционным об-

ластям Пролога он отлично подходит для многих общих приложений.

Помимо скорости, у Турбо Пролога есть некоторые другие конструктив-

ные улучшения, увеличивающие его способность к развитию, которые мы здесь

кратко опишем:

- разделение ссылочных и нессылочных переменных;

- анализ потоков;

- разделение детерминированных предикатов;

- общее компилирование исходного кода;

- объявления и проверки.

Все эти детали значимы, если Пролог с его большими возможностями об-

работки символьной информации должен работать на персональном компьютере.

Разделение ссылочных и нессылочных переменных увеличивает эффективность

программы, потому что традиционный метод (задание переменных с помощью

указателей) приводит, в лучшем случае, к удвоению расхода времени и памя-

ти. Анализ потоков отвечает за компилирование предложений, оптимизируемых

по своим аргументам. Разделение детерминированных и недетерминированных

реверсивных предикатов позволяет экономить время и память. Общее компили-

рование исходного кода до уровня машинного языка означает, что нет необ-

ходимости в интерпретации промежуточного кода, что также экономит время и

память.

Объявления и проверки, типа "Переменная использована только один

раз" позволяют отследить случайное неправильное нажатие клавиши, в то

время как другие объявления областей указывают, на то что функторы слож-

ных объектов могут быть преобразованы в однобайтный элемент, что приводит

к быстрому выполнению кода при минимальных затратах памяти. Объявления,

сопровождающие предикаты, повышают надежность процесса программирования и

облегчают жизнь.

Хотя при проектировании системы Турбо Пролог не была включена под-

держка самоизменяющегося кода, но это удивительно просто можно смоделиро-

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

как это сделать.