Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Попытка перевода Глоссария к VIP 6.3
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
5565610 5565610 вне форума
Member
 
Сообщений: 27
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 10.07.2006
По умолчанию 07.08.2006, 12:27

Возможно, этот перевод может кому-нибудь пригодится. Скажу честно: не все понял. Если кто-нибудь поправит смысл и терминологию, буду рад. В каждом пункте присутствуют английский и русский текст. Однако, из-за чрезмерного объема, английский кое-где удален.

Visual Prolog v.6 Language Reference Glossary

alignment of memory (выравнивание выделенных участков памяти)
By prefixing a compound domain or a list domain declarations with an alignment specifica-tion, you can override the default memory alignment. The syntax is: DOM = align 1 | 2 | 4 DOMDECL. Here DOMDECL is an ordinary domain declaration. The primary aim of overrid-ing alignment is to make compound objects compatible with external code using a different alignment than the default for Visual Prolog
Добавляя префикс со спецификацией выравнивания перед объявлением составного домена или перед объявлением списка, вы можете отвергнуть способ выравнивания памя-ти, принятый по умолчанию. Синтаксис: DOM = align 1 | 2 | 4 DOMDECL. Здесь DOM-DECL это обычное объявление домена. Основной причиной отмены выравнивания по умолчанию, это обеспечение совместимости составных объектов с внешним кодом, ис-пользующим другие правила выравнивания, отличными от применяемых по умолчанию в VIP.

ambiguity of names (конфликт имен)
The use of a name must be unambiguous within its scope. If the name denotes a predicate, the predicate must be unambiguous with respect to number and type of arguments. Ambiguities related to calling predicates can be avoided by using qualified names. To resolve an ambiguity of which class should provide an implementation to a predicate, which come from the multiple in-heritance we use a resolve section. A resolve qualification is used to resolve an implementation from the specified source.
Использование имен должно быть однозначным в пределах своего диапазона види-мости. Если имя означает предикат, то предикат должен быть уникален относительно ко-личества и типов аргументов. Конфликт имен при обращении к предикату можно избе-жать, используя квалификацию имен. Чтобы избежать конфликт имен, который возникает от множественного наследования классов, нужно использовать секцию resolve. Уточняю-щая квалификация используется для указания нужного источника.

and (и)
Коньюнкция (and ) и Дезьюнкция (or).
A goal made up of two or more parts is known as a compound goal, and each part of the com-pound goal is called a sub-goal. You can use a compound goal to find a solution where both sub-goal A and sub-goal B are true (a conjunction), by separating the sub-goals with a comma - ' , '. You can also find a solution where at least one of sub-goal A or sub-goal B is true (a disjunc-tion), by separating the sub-goals with a semicolon - ' ; '.
Цель, состоящая из двух или нескольких частей называется составной целью, каждая из частей является подцелью. Можно использовать составную цель для поиска единого решения, при котором подцель А и подцель В успешно выполняются (коньюнкция). В этом случае обе подцели разделяются запятой - ', '. Можно искать решения, когда успеш-но исполняется хотя бы одна подцель, А или В (дизьюнкция). В этом случае обе подцели разделяются точкой с запятой - ' ; '.

anonymous variable (анонимная переменная)
The variable ' _ ' used in place of an ordinary variable when values that the variable may become bound to are not interesting. Also a variable starting with the underscore like " _AnyName '' is considered by Visual Prolog compiler as an anonymous variable if the variable is used only once in a clause.
Анонимная переменная ' _ ' используется вместо обычной тогда, когда значение этой переменной не представляет интереса. Кроме того, переменная с именем, начинающимся со знака подчеркивания, например: " _AnyName '', рассматривается компилятором как анонимная переменная, если эта переменная используется только однажды в клозе.

arguments (аргументы)
Collective name for values and variable names passed in a predicate or a predicate value call.
Термин, относящийся к значениям и именам переменных, передаваемых предикату или получаемых им при вызове другого предиката.

arithmetic expressions (арифметические выражения)
Arithmetic expressions consist of operands (numbers and variables), operators (+, -, *, /,) built-in mathematical functions div and mod, parentheses, and PFC and user-defined mathemati-cal functions, and constants, and fact variables with decimal values. The value of an expression can only be calculated if all variables are bound at the time of evaluation. The calculation then occurs in a certain order, determined by the priority of the arithmetic operations; operations with the highest priority are evaluated first.
Арифметические выражения состоят из операндов (чисел и переменных), операторов (+, -, *, /), встроенных математических функций div и mod, круглых скобок, PFC (встро-енных классов) и определенных пользователем математических функций, констант, и fact -переменных с десятичными значениями. Значение выражения может быть вычислено, только в том случае, если всем переменным присвоены значения во время работы про-граммы. Вычисление происходят в порядке, определенном приоритетом арифметических операций; действия с самым высоким приоритетом выполняются первыми.

arithmetic operators (арифметические операции)
Arithmetic operators can be used for any arithmetic computations, such as: addition (+), subtraction (-), multiplication (*), division (/), integer division (div/2->), and modulo (mod/2-> - the remainder from an integer division operation). When there is more than one arithmetic opera-tor in an expression, multiplication, division, and modulo are calculated first, followed by sub-traction and addition. When all arithmetic operators in an expression have the same level of precedence, the order of execution is left to right. Expressions within parentheses take prece-dence over all other operations.
Арифметические операции используются для арифметических вычислений таких, как сложение (+), вычитание (-), деление (/), целочисленное деление (div/2->) и деление по модулю (mod/2-> - остаток от целочисленного деления). Если в выражении присутствуют несколько операторов, то умножение и деление выполняются первыми, затем выполняет-ся сложение и вычитание. Если у арифметических операторов в выражении одинаковый приоритет, то вычисления производятся слева направо. Выражения в круглых скобках имеют более высокий приоритет над остальными операторами.
arity of predicates (арность предикатов)

A predicate that takes N arguments are said to be N-ary, or to have arity N. Predicates with different arity are always different predicates, even if they have the same name. The following notations are used:
1. Name/N meaning an ordinary predicate (i.e. not a function) Name of arity N.
2. Name/N-> meaning a function Name of arity N.
3. Name/N... meaning an ordinary predicate Name with N arguments fol-lowed by an ellipsis argument (i.e. a varying number of arguments).
4. Name/N...-> meaning a function Name with N arguments followed by an ellipsis argument.
О предикате, который имеет N аргументов, говорят, что он N-арный, или он имеет арность N. Предикаты, имеющие различную арность всегда являются различными преди-катами, даже, если имеют одинаковое имя. Обычно используется следующая запись:
1. Name/N означает обычный предикат (не функцию) с именем Name и арностью N.
2. Name/N-> означает функцию Name с арностью N.
3. Name/N … означает обычный предикат Name c N аргументами, за ко-торыми следует аргумент – многоточие (т.е. переменное количество аргументов).
4. Name/N … -> означает функцию Name c N аргументами, за которыми следует аргумент – многоточие.
atoms (атом)

Atoms are either symbol or string terms.
Атомом являются термы типа, либо symbol, либо string.

backtracking (бэктрекинг)
The solution searching mechanism built into Visual Prolog. When evaluation of a given sub-goal is completed unsuccessfully, Visual Prolog returns to the previous sub-goal and tries to satisfy it in a different way. That is Visual Prolog uses the backing-up-and-trying-again method, called backtracking, to find a solution to a given problem.
Механизм поиска решений, встроенный в VIP. Если оценка данной подцели оказа-лась неуспешной, VIP возвращается к предыдущей подцели и пытается найти другой ва-риант ее решения. VIP использует метод «вернуться и попытаться снова» называемый бэктрекингом, для поиска решения данной проблемы.

backtracking points (точка возврата)
Visual Prolog uses the backing-up-and-trying-again method, called backtracking, to find a solution to a given problem. As Visual Prolog begins to look for a solution to a problem (or goal), it might have to decide between two possible cases. It sets a marker at the branching spot (known as a backtracking point) and selects the first sub-goal to pursue. If that sub-goal fails, Visual Prolog will backtrack to the backtracking point and try an alternate sub-goal.
VIP использует метод «вернуться и попытаться снова» называемый бэктрекингом, для поиска решения данной проблемы. VIP, начав поиск решения проблемы, может столк-нуться с необходимостью выбора двух вариантов пути. В этом случае может быть уста-новлена точка возврата (бэктрекинга) и начата обработка подцели выше точки возврата. Если это попытка оканчивается неудачей, VIP вернется и испытает другой вариант подце-ли.

binary domain (бинарный домен)
Visual Prolog has a special binary built-in domain for holding binary data, as well as spe-cial predicates for creating binary terms and for accessing individual elements of binary terms. The main use for binary terms is to hold data that has no other reasonable representation for ex-ample screen bitmaps. Binary terms can be read and written in text format. Binary terms may be compared and unified just like any other term.
VIP имеет специальный встроенный домен для поддержания бинарных данных с по-мощью специальных термов и для доступа к каждому элементу бинарного терма. Главное применение бинарные термы находят в обработке растровой графики.

bound variable (назначение переменной)
Bound or Instantiated variable. Is a variable that refers to a known value (term). The predi-cate bound/1 can be used to test whether the specified variable is bound to a value. See Also: Unification.
Переменная или терм, значение которых считаются известными. Предикат bound/1 может быть использован для того, чтобы проверить имеет ли переменная назначение? В Прологе переменная, которой значение не присвоено, находится в не назначенном состоя-нии.

built-in domains, predicates, and constants (встроенные домены, предикаты и кон-станты)
Visual Prolog contains the embedded hidden class, which provides declarations and im-plementations to built-in constants, domains, and predicates. These built-in constants, domains, and predicates can be used both during compilation (for example, in #if ... constructions) and in while runtime. Each compilation unit implicitly contains the declaration of this embedded hidden class, but really, this class has the special internal unique name that cannot be referenced explic-itly in your code. You can use :: before names of built-in items.
VIP содержит встроенный скрытый класс, который объявляет и определяет встроен-ные константы, домены и предикаты. Встроенные константы, домены и предикаты могут быть использованы, как во время компиляции (например, в конструкциях #if …), так и при работе приложения. Каждая компилируемый фрагмент исходного текста неявно со-держит объявление этого встроенного скрытого класса, таким образом, этот класс имеет специальное внутреннее уникальное имя, ссылаться на которое в тексте программы нель-зя. Можно использовать квалификатор ‘::’ перед именем встроенной константы, домена и предиката.

calling a sub-goal (вызов подцели)
An expression denoting that Visual Prolog is now trying to satisfy a certain sub-goal (be-longing to the given predicate).
Вызов подцели означает, что VIP пытается удовлетворить определенную подцель, принадлежащую данному предикату.

calling conventions (соглашение о вызывах)
The calling convention determines how arguments, etc. are passed to the predicate. It also determines how the link name is derived from the predicate name. As an alternative to the de-fault prolog calling conventions, you can use the language keyword to specify: c, stdcall, or api-call conventions.
Соглашение о вызовах определяет, каким образом аргументы передаются предикату. Соглашение также определяет правила формирования нового имени из имени предиката для выполнения связи. В качестве альтернативв соглашению о связи в Прологе может быть использование ключевого слова language со спецификацией: c, stdcall, apical.

char (символ)
char built-in domain. Values of this domain are UNICODE characters implemented as 2 unsigned bytes. Syntactically, it is written as an arbitrary character surrounded by single quota-tion marks 'a' or an escape sequence like '\t'.
char является встроенным доменом. Значения этого домена являются символы Юни-код, использующие по два байта без знака на один символ. Синтаксически, этот символ пишется, как произвольный символ, например, ‘a’, окруженный одинарными кавычками или «эскэйп последовательность», например, ‘\t’.

child class (порожденный класс)
The classes you inherit from are called parent classes or super-classes. Child class and sub-class is the dual to parent class, we also say that the child classes inherit from the parent classes. A child class can only access its parent classes through its public interface, i.e. it does not receive any extra permission than any other class, which uses the parent class.
Классы, от которых вы наследуете, называются родительскими классами или супер-классами. Порожденный класс двойственен родительскому классу, можно сказать, что по-рожденный класс является наследником родительского класса. Порожденный класс имеет доступ к своему родительскому классу только через public интерфейс, т.е. он не имеет преимуществ перед любым другим классом при обращении к родительскому классу.

class (класс)
Each class must have a declaration and an implementation. A class can create objects cor-responding to interfaces specified in the construction type in the class declaration. Any object is created by a class, if an object was created by the class, which uses the interface C to construct objects then we call it a "C object". From a programmatic point of view, classes are the central item: the code is contained in the classes. Interfaces only exist in the textual representation of a program; there is no (direct) runtime representation of an interface.
Каждый класс должен иметь разделы declaration (объявление) и implementation (применение). Класс может создавать объекты в соответствии с интерфейсом конструкто-ра, который специфицируется в объявлении класса. Любой объект создается классом. Ес-ли некоторый объект был создан классом, который использует интерфейс С в конструкто-ре, то мы говорим, что это «Си объект». С программной точки зрения, классы являются центральным пунктом: код содержится в классах. Интерфейсы существуют только в ис-ходных текстах. В приложениях они никак не представлены.

class members and state (члены класса и состояние)
All objects that are constructed by a certain class have the same sets of object member predicates, but each object has its own state. Thus, the object member predicates is actually part of the class, whereas the state of the object is part of the object itself. A class also contains an-other set of named predicates and an encapsulated state, declared with the keyword class and known as the class members and class state, respectively. The class members and the class state exist on a per class basis, whereas the object members and object state exist on a per object basis. The class state can be accessed both by class members and by object members.
Все объекты, которые сконструированы определенным классом, имеют одинаковые наборы предикатов, которые рассматриваются как члены объекта. Каждый из объектов имеет свое собственное состояние. Таким образом, предикаты, как члены объекта, факти-чески являются частью класса, тогда как состояние объекта относится только к самому объекту. Класс содержит еще один набор именованных предикатов и инкапсулированных состояний, объявленных с ключевым словом class, о которых говорят, как о членах класса и состоянии класса, соответственно. К состоянию класса могут получить доступ, как чле-ны класса, так и члены объекта.

clause (предложение, клоз)
A fact or rule for a particular predicate, followed by the period ' . ' punctuation mark.
Факт или правило для конкретного предиката, оканчивающийся точкой.

comments (комментарий)
A comment is a sequence of characters that is treated as a single white-space character by the compiler and is otherwise ignored. Comments are used to document your code. Comments can appear anywhere a white-space character is allowed. Since the compiler treats a comment as a single white-space character, you cannot include comments within tokens. In Visual Prolog you can use 2 kinds of comments: multi-line comments and single-line comments.
The multi-line comments start with /* (slash, asterisk) characters, followed by any sequence of characters (including new lines) and are terminated by the */ (asterisk, slash) characters. These comments can be multi-lined. They can also be nested.
The single-line comments start with % (percent sign) character followed by any sequence of characters. Single-line comments continue until the end of the line.

comparison (сравнение)
Two terms can be compared with the use of one of relational operators: >, <, >=, <=, <>, ><, and =. The relational operators are formulas, which takes expressions as arguments. First, the left term is evaluated, then the right term is evaluated and then the results are compared.
Два терма могут быть между собой сравнены с использованием одного из операто-ров сравнения: >, <, >=, <=, <>, ><, =. Оператор сравнения образует формулу, которая принимает выражения, как свои аргументы. Сначала оценивается левый терм, затем пра-вый и затем результаты сравниваются.

compilation unit (компилируемый фрагмент исходного текста)
A compilation unit is a piece of code, which can be separately compiled by the compiler to produce an object file. Such object files are linked together to produce the program target file. A program must contain exactly one goal section, which is the entry point to the program. A com-pilation unit is a sequence of compilation items. A compilation item is an interface, a class decla-ration, a class implementation, a goal section or a conditional compilation item.
Компилируемый фрагмент исходного текста является частью исходного текста, ко-торый может быть отдельно скомпилирован с получением объектного файла. Объектные файлы объединяются для получения готового исполняемого кода. Программа должна со-держать в точности один goal раздел, который является точкой входа в программу. Ком-пилируемый фрагмент исходного текста представляет собой последовательность компи-лируемых пунктов. Компилируемым пунктом являются объявление интерфейса, раздел class declaration, раздел class implementation, раздел goal и пункты условий компиляции.

compiler directive (директивы компиляции)
Compiler preprocessor directives. These directives are not a part of the Visual Prolog lan-guage. Each compiler directive starts from the # character. Three kinds of compiler directives can be used. Conditional compilation directives: #if, #then, #else, #elseif, #endif. Source file in-clusion directive: #include. Compilation time information directives: #message, #error, #re-quires, #orrequires.
Директивы препроцессора компилятора. Эти директивы не являются частью языка VIP. Каждая директива компиляции начинается с символа #. Существуют три вида дирек-тив компиляции. Директивы условной компиляции: #if, #then, #else, #elseif, #endif. Дирек-тивы включения в текст программы других фрагментов: #include. Информационные ди-рективы, работающие в ходе компиляции: #message, #error, #requires, #orrequires.

compound goal (составная цель)
A goal containing at least two sub-goals. A goal made up of two or more parts is known as a compound goal, and each part of the compound goal is called a sub-goal. You can use a com-pound goal to find a solution where both sub-goal A and sub-goal B are true (a conjunction), by separating the sub-goals with a comma ' , '. You can also find a solution where at least one of sub-goal A or sub-goal B is true (a disjunction), by separating the sub-goals with a semicolon ' ; '.
Цель, состоящая из двух или нескольких частей называется составной целью, каждая из частей является подцелью. Можно использовать составную цель для поиска единого решения, при котором подцель А и подцель В успешно выполняются (коньюнкция). В этом случае обе подцели разделяются запятой - ', '. Можно искать решения, когда успеш-но исполняется хотя бы одна подцель, А или В (дизьюнкция). В этом случае обе подцели разделяются точкой с запятой - ' ; '.

compound item (составной пункт)
An item consisting of a functor and a list of sub-items separated by commas and enclosed in parentheses.
Пункт, состоящий из функтора и списка подпунктов, разделенных запятыми и за-ключенные в круглые скобки.

conjunction (коньюнкция)
Conjunction ( and ) & Disjunction ( or ).
A goal made up of two or more parts is known as a compound goal, and each part of the com-pound goal is called a sub-goal. You can use a compound goal to find a solution where both sub-goal A and sub-goal B are true (a conjunction), by separating the sub-goals with a comma ' , '. You can also find a solution where at least one of sub-goal A or sub-goal B is true (a disjunc-tion), by separating the sub-goals with a semicolon ' ; '.
Цель, состоящая из двух или нескольких частей называется составной целью, каждая из частей является подцелью. Можно использовать составную цель для поиска единого решения, при котором подцель А и подцель В успешно выполняются (коньюнкция). В этом случае обе подцели разделяются запятой - ', '. Можно искать решения, когда успеш-но исполняется хотя бы одна подцель, А или В (дизьюнкция). В этом случае обе подцели разделяются точкой с запятой - ' ; '.

constants (костанты)
Symbolic named constants can be defined in constants sections and they can be used inside the current scope. Each constant definition defines a named constant, its domain, and its value. If domain is one of standard domains, then it can be omitted. Symbolic constants can be used in any places, where a literal of the same domain can be used.
Именованные константы могут быть определены разделе констант и могут использо-ваться в пределах диапазона видимости. Каждое определение константы определяет ее имя, домен и значение. Если домен является встроенным, то он может быть пропущен. Именованные константы могут использоваться в любом месте, для которого домен разре-шает это.

constructors (конструкторы)
Constructors are used to construct objects. Constructors can be default (new/0-> - if a class does not declare any constructors, then a default constructor is implicitly declared) or explicitly declared in constructors sections in class declarations and implementations. Each constructor has two roles:
1. A class function, which returns a new constructed object.
2. An object predicate, which is used when initializing inherited objects.
Конструкторы используются для конструирования объектов. Если класс не объявля-ет какого-либо конструктора, то неявно объявляется конструктор по умолчанию (new/0->). Явным образом конструктор объявляется разделе constructors в разделах class declarations и implementations. Каждый конструктор играет две роли:
1. В качестве функции класса, возвращающей новый сконструирован-ный объект.
2. В качестве объектного предиката, который используется во время инициализации наследуемого объекта.

conversions of object types (преобразования объектных типов)
Since an object have the object type of any interface it supports, it can be used as an object of any of these types. I.e. the type of objects is converted to any supported object type. In many cases, such conversions are performed automatically. So the same object can be viewed as hav-ing different types in different contexts. The type with which an object is viewed is called its view type, whereas the type of the class that constructed the object is called the construction type or definition type. (See also: Type Conversion, Explicit Conversion, and Implicit Conversion.)
Т.к. объект имеет объектный тип любого интерфейса, который он поддерживает, то он может использоваться как объект любого из этих типов. Т.е. типы объектов преобра-зуются в любой из поддерживаемых объектом типов. Во многих случаях, такое преобра-зование выполняется автоматически. Один и тот же объект может рассматриваться, как объект, который имеет разные типы в разных контекстах. Тип, с которым рассматривается объект, называется его видимым типом (view type), тогда как тип класса, который сконст-руировал этот объект называется конструкционным типом или типом по определению класса.

cut (сечение)
cut or !.
The cut commits Visual Prolog to all the choices made so far in the evaluation of the predicate containing the cut. Once the cut has been evaluated as a sub-goal, Visual Prolog cannot back-track past it.
Cut удаляет возможность альтернатив, выработанных прологом до встречи с преди-катом cut. Встретив в тексте предикат cut, VIP уже не может откатиться с помощью бэк-трекинга в точку программы выше той, где встретился предикат cut.

database (база данных)
Visual Prolog internal fact database is composed of facts that you can add directly into and remove from your program at runtime. You declare the predicates describing the internal data-base facts and fact variables in facts sections, and you call these database facts the same way as you call ordinary predicates. But in difference to ordinary predicates you can add database facts at runtime using the assert predicates and remove existing facts using the retract predicates. You can name a facts database, then an additional compound domain is implicitly defined. This do-main has the same name as the facts section.
Внутренняя база данных VIP предназначена для хранения фактов, которые можно добавлять и извлекать прямо во время работы приложения. Вы объявляете предикаты, оп-ределяющие факты и факты-переменные базы данных в разделе фактов. Теперь вы можете манипулировать фактами базы данных точно также, как обычными предикатами. Но, в отличие от обычных предикатов, факты можно добавлять во время работы программы, используя предикат assert и удалять имеющиеся в базе данных факты, используя предикат retract. Если базе данных будет присвоено имя, то будет неявно определен дополнитель-ный домен составных термов. Этот домен имеет то же имя, что и раздел фактов (база дан-ных).

database predicates (предикаты базы данных)
Fact database predicates is predicates for which facts can be added to or deleted from the Visual Prolog system during a program execution.
Факты базы данных с помощью предикатов базы данных можно добавлять во время работы программы, используя предикат assert и удалять имеющиеся в базе данных факты, используя предикат retract.

declarations (объявления)
A declaration introduces a name and states some properties of this name. "X is an integer" is a declaration example; it introduces the name X and states the property that this X is an inte-ger. The purpose of a declaration is to introduce some name and properties about this name so that the name can be referenced (i.e. used) from contexts, which do not necessary know the defi-nition of the name.
Объявление вводит некоторое имя и устанавливает некоторые свойства этого имени. «Х есть integer» - это пример объявления, которое вводит имя Х и устанавливает свойство этого Х, а именно, что Х есть целое число. Целью объявления является введение некото-рого имени и связанных с ним свойств так, чтобы на имя можно было сослаться (исполь-зовать) в определенном контексте, в котором не обязательно знать определение этого имени.

default constructor (конструктор по умолчанию)
If a class that constructs objects does not declare any constructors in the class declaration, then the default constructor (i.e. new/0) is implicitly declared (in the class declaration).
Если в классе который предназначен для конструирования объекта, не объявлен кон-структор, то в объявлении класса неявно объявляется конструктор по умолчанию (new/0).

definitions (определение)
A definition also introduces a name, but states the exact meaning of this name. "X is 7" is an example of a definition, it introduces the name X and states the exact meaning of this name namely 7. The purpose of a definition is to define the exact meaning of a name, so that it actually has a meaning (at runtime). But since a definition is also a declaration, so the purpose of declara-tions is also applicable to definitions.
Определение также вводит имя, но при этом устанавливает точное значение пере-менной с этим именем. «Х есть 7» - является примером определения. Оно вводит имя Х и устанавливает значение этого имени 7. Целью определения является определение точного значения имени. Но, так как определение также является также объявлением, то обратное тоже справедливо.

determinism (детерминизм)
Most languages are deterministic. That is, any set of input values leads to a single set of in-structions used to produce output values and a called function can produce only a single set of output values. Contrary, Visual Prolog naturally supports non-deterministic inference based on non-deterministic predicates. Visual Prolog has a strongly typed determinism system. The rea-sons of determinism monitoring mainly deal with the program optimization. Visual Prolog de-terminism checking system enforces to declare the following two behavior aspects of a predicate: whether the predicate call can fail and the number of solutions the predicate can produce. In more Prolog program execution terms determinism mode defines:
1. Can the predicate fail?
2. Can the predicate succeed?
3. Whether a backtracking point will be set to the predicate call.
Большинство языков являются детерминированными. Это означает, что набор ис-ходных значений приводит к единственному набору инструкции и вызываемая функция может выдать только единственный набор конечных значений. VIP, наоборот, естествен-ным образом поддерживает недетерминированный вывод, используя недетерминирован-ные предикаты. VIP имеет строго типизированную систему по контролю за детерминиз-мом. Причиной наблюдения за детерминизмом является стремление к оптимизации про-грамм. Система по контролю за детерминизмом в VIP принуждает объявлять следующие два аспекта поведения предиката: может ли обращение к предикату привести к неудаче? и, какое число решение может выдать предикат? В большинстве прологовых программах следует определять свойства детерминизма:
1. Может ли работа предиката закончиться неудачей?
2. Может ли работа предиката закончиться успехом?
3. Будет ли установлена точка бэктрекинга при обращении к данному предикату?

disjunction (дизьюнкция)
Conjunction (and) & Disjunction (or).
A goal made up of two or more parts is known as a compound goal, and each part of the com-pound goal is called a sub-goal. You can use a compound goal to find a solution where both sub-goal A and sub-goal B are true (a conjunction), by separating the sub-goals with a comma - ' , '. You can also find a solution where at least one of sub-goal A or sub-goal B is true (a disjunc-tion), by separating the sub-goals with a semicolon - ' ; '.
См. сonjunction (коньюнкция).

domain (домен)
In traditional Prolog there is only one type - the term. Visual Prolog also has terms, but we must declare what the domains of the arguments to the predicates actually are. Domains enable you to give distinctive names to different kinds of data that would otherwise look alike. In Visual Prolog programs, items in relations (the arguments to predicates) belong to domains. These can be predefined domains, or special user-declared domains. Domain declarations serve two very useful purposes. First, you can give meaningful names to domains even if, internally, they are the same as domains that already exist. Second, special domain declarations are used to declare data structures that are not defined by the standard domains.
В обычном Прологе имеется только один тип переменных – терм. В VIP также име-ются термы, но мы должны объявлять домены для каждого аргумента терма. Домены по-зволяют вводить особые имена для разных видов данных, которые в ином случае могли бы выглядеть одинаковыми. В VIP аргументы предикатов принадлежат доменам. Они мо-гут быть предопределенными или объявленными пользователем. Объявление доменов по-лезно в двух отношениях. Во-первых, можно задать имя домену, имеющее смысл для пользователя даже, если это имя уже используется внутри VIP. Во-вторых, объявление специального домена необходимо для объявления структур данных, для которых нет стан-дартных доменов.

ellipsis (многоточие)
Ellipsis "…" can be used in predicate and predicate domain declarations as the last formal argument. In this case, it means that the declared predicate (predicate domain) can have a vari-able number of arguments. Ellipsis flow must match an ellipsis argument and can therefore be only the last flow in the flow pattern.
Многоточие "…" может быть использовано в предикате и в объявлениях доменов предикатов в качестве последнего формального аргумента. В этом случае объявленный предикат (предикатный домен) может иметь различное число аргументов. Шаблоны вво-да-вывода аргументов-многоточий должны сопоставимыми между собой, поэтому такой аргумент может быть только последним.

encapsulation (инкапсуляция)
Encapsulation is the ability of an object to hide its internal data and methods making only the intended parts of the object programmatically accessible. The importance of encapsulation and modularity is well known. Encapsulation helps building more structured and readable pro-grams, because objects are treated like black boxes. Look at a complex problem, find a part, which you can declare and describe. Encapsulate it into an object, construct an interface, and continue so, until you have declared all the sub-problems. When you have encapsulated the ob-jects of the problem, and ensured, that they work correctly, you can abstract from them.
Инкапсуляцией называется способность некоторого объекта скрывать внутренние данные и методы, предоставляя доступ из программы только в ограниченную часть объек-та. Важность инкапсуляции и модульности хорошо известна. Инкапсуляция помогает соз-давать более структурированные и читаемые программы, т.к. к объекту обращаются как к черному ящику. Взгляни на сложную проблему, найди часть проблемы, которую сможешь объявить и определить. Инкапсулируй эту часть в объект, сконструируй интерфейс и про-должай в том же духе, пока не объявишь все подпроблемы. Когда завершите инкапсуля-цию проблемы в отдельные объекты, убедитесь в их правильной работе, и вы сможете от них абстрагироваться.

evaluation (оценка)
The evaluation of a Prolog program is a search for a "solution". Each step in the search for a solution can either succeed or fail.
Оценка программы на Прологе состоит в поиске решения. Каждый шаг в поиске ре-шения может быть успешным (succeed) и неуспешным (fail).
exception handling (обработка исключений)
The basic part of the exception handling system is based on the two built-in predicates er-rorExit/1 (raises an exception) and trap/3 (sets an exception handler for a certain computation). When errorExit/1 is called, the currently active exception handler is invoked. This exception handler is executed in its original context, i.e. in the context where it was set rather than in the context where the exception is raised.
Основная часть системы обработки исключений основана на двух встроенных пре-дикатах: errorExit/1 (генерация исключения) и trap/3 (задание обработчика исключения). Если происходит обращение к предикату errorExit/1, то вызывается текущий активный обработчик исключения. Этот обработчик исполняется в своем исходном контексте, т.е. в том контексте, где он был размещен, а не там, где исключение возникло.

expressions (выражения)
An expression is a sequence of operators and operands that specifies a computation. Typi-cally an expression evaluates to a value at runtime. (See also: arithmetic expressions.)
Выражением является последовательность операторов и операндов, которые описы-вают процесс вычисления. Обычно, в результате оценки выражения при работе програм-мы получают некоторое значение.

external resolution (внешняя разрешимость)
A predicate externally resolution states that the predicate is not at all implemented in the class itself, but in an external library. External resolutions can only be used for class predicates. I.e. object predicates cannot be resolved externally.
Внешняя разрешимость предиката означает, что предикат отсутствует в разделе im-plemente самого класса, но имеется в какой то внешней библиотеке. Внешняя разреши-мость может быть использована только для class predicates. Т.е., объектные предикаты не могут быть внешне разрешимы.

fact variables (факты-переменные)
A fact variable is similar to a one-argument single fact. However, syntactically it is used as a mutable variable (i.e. with assignment). A value that is assigned to a fact variable should be a term, which can be evaluated at compile time.
Факт-переменная похожа на факт с одним аргументом. Однако, она используется, как многозначная переменная, в отношении которой возможна операция присвоения (чего нельзя делать с обычным фактом). Значение, которое присваивается факту-переменной, должно быть термом, который может быть оценен в ходе компиляции.

facts (факты)
A fact is a relation between objects. In the fact likes("John", "Mary") the likes is the name of the relation and "John" and "Mary" are elements. (See also: database predicates.)
Фактом является отношение между элементами. В факте likes("John", "Mary") likes (любит) является именем отношения, а "John" и "Mary" являются его элементами. (См. da-tabase predicates).

facts database (факты базы данных)
Visual Prolog internal fact database is composed of facts that you can add directly into and remove from your program at runtime. You declare the predicates describing the internal data-base facts and fact variables in facts sections, and you call these database facts the same way as you call ordinary predicates. But in difference to ordinary predicates you can add database facts at runtime using the assert predicates and remove existing facts using the retract predicates. You can name a facts database, then an additional compound domain is implicitly defined. This do-main has the same name as the facts section.
Факты внутренней базы данных VIP можно добавить непосредственно в базу данных или удалить из нее во время работы программы. Вам нужно объявить предикаты, описы-вающие факты внутренней базы данных и факты-переменные в разделе facts, и вы можете манипулировать фактами базы данных точно также, как обычными предикатами. Но, в отличие от обычных предикатов, факты можно добавлять в базу данных, используя пре-дикат assert, и удалять имеющиеся факты с помощью предиката retact. После того, как вы зададите базе данных фактов имя, неявным образом будет добавлен соответствующий со-ставной домен. Этот домен будет иметь тоже имя, что и facts section.

fail (неудача)
A sub-goal that Visual Prolog cannot satisfy. The fail/0 and the succeed/0 are two built-in nullary predicates. The fail/0 always fails and the succeed/0 always succeeds, besides this the predicates have no effect. The fail/0 predicate forces failure of a predicate and, hence, always causes backtracking.
Это подцель, которую VIP не может удовлетворить. fail/0 и succeed/0 являются встроенными нуль-арными (безагументными) предикатами. Предикат fail/0 всегда приво-дит к неудаче, следовательно, всегда вызывает бэктрекинг.

finalization (завершение)
Once an object cannot be reached by the program it can be finalized (will be removed from memory), the semantics of the language does not say exactly when the object will be finalized. The only thing that is guarantied is that it is not finalized as long as it can be reached from the program.
Если некоторый объект не доступен из программы, он может быть завершен (удален из памяти). Семантика языка не говорит в точности, когда объект будет завершен. Един-ственное правило гласит: не завешать объект, пока к нему есть доступ из программы.

flow pattern (шаблон ввода-вывода)
The pattern formed according to whether the parameters in a predicate call are used for in-put ' i ' (i.e., are known) or for output ' o ' (i.e., are unknown).
Шаблон формируется исходя из того, используется ли при вызове параметр предика-та для ввода (т.е. он известен), или для вывода (т.е. он не известен).

flow variant (варианты шаблонов ввода-вывода)
If a predicate is associated with several different flow patterns, a separate internal imple-mentation of the routines corresponding to that predicate will exist for each flow pattern. These different implementations are called flow variants of the predicate.
Если предполагается различное применение предиката, то он может быть ассоцииро-ван с несколькими шаблонами ввода-вывода. Различные применения предиката являются причиной использования вариантов шаблонов ввода-вывода.

formulas (формулы)
Formulas represent logical statements, like "the number 7 is greater than the number 3".
Формулой называется логическое выражение, например, «число 7 больше числа 3».
free variable (свободная переменная)
A variable that does not currently refer to any value. If a variable value is free, it can be bound to any value of the domain during unification. Once the variable is bound it can be freed again by backtracking across the point where it was bound. The free/1 predicate can be used to test whether the variable is free or bound. (See: bound.)
Переменная, которой в текущий момент не сопоставлено какое-либо значение. Если переменная свободна, то она может быть назначена в процессе унификации любому зна-чению, принадлежащему домену. Назначенная переменная может быть вновь освобожде-на с ходе бэктрекинга восходящего через ту точку в программе, где ей было присвоено значение.

function (функция)
A predicates that returns a value is called a function, whereas a predicate that does not re-turn a value is sometimes called an ordinary predicate, to stress that it is not a function.
Предикат возвращающий значение называется функцией. О предикате не возвра-щающим значение иногда говорят, как об обычном предикате для акцентирования того, что он не функция.

functor (функтор)
A name for a compound domain alternative.
Имя для различных составных доменов

global (глобально)
A qualifier used to allow more than one program module access to certain constants, do-mains, and predicates. The only global entities, which exist in Visual Prolog, are classes, inter-faces, and built-in domains, predicates, and constants. Global names are directly accessible in any scope. There might however exist situations where a global name is shadowed by a local name. In that case the global entity can be qualified with a double colon :: (without a prefixed class/interface name).
Квалификатор, позволяющий нескольким программным модулям иметь доступ к оп-ределенным константам, доменам, предикатам. Глобальными элементами в VIP являются классы, интерфейсы, встроенные домены, предикаты и константы. Глобальные имена дос-тупны в любом диапазоне видимости. Однако, могут существовать ситуации, когда гло-бальное имя перекрывается локальным. В этом случае к глобальным элементам можно получить доступ с помощью квалификатора :: (не предваряя его именем класса или ин-терфейса.

goal (цель)
The goal section is the entry to the program. The goal section consists of a clause body. When the program starts it executes the program goal. It is a collection of sub-goals that Visual Prolog attempts to satisfy while the program execution. When the program goal is executed, the program exits.
Раздел goal является точкой входа в программу. Раздел goal представляет собой тело клоза. Когда программа стартует, она исполняет цель (goal) программы. Цель представля-ет собой набор подцелей, который VIP пытается удовлетворить в ходе исполнения про-граммы. Когда цель программы достигнута, программа завершается.

goal tree (дерево целей)
A diagrammatic representation of possible choices, which can be made in the evaluation of the constituent sub-goals of a program goal.
Диаграмма, представляющая возможные варианты, которые могут быть выбраны в процессе оценки подцелей программной цели.

head of a list (голова списка)
The first element of a list.
Первый элемент списка.

heap (куча)
The heap holds objects that are more or less permanent. It is used to store facts inserted into internal databases, the symbol table, file buffers, graphic objects, etc. These areas are automati-cally released when facts are retracted, windows are closed, and so on.
Область памяти heap (куча) содержит объекты, которые более или менее постоянны. Она используется для хранения фактов, включенных во внутреннюю база данных, сим-вольных таблиц, буферов файлов, графических объектов и т.д. Это область автоматически освобождается, после удаления фактов, закрытия окон и т.д.

identifiers (идентификаторы)
"Identifiers" are the names you supply for variables, domains, predicates, constants, facts, and fact variables in your program. Identifier names must differ in spelling and case from any keywords. You cannot use keywords as identifiers; they are reserved for special use. You create an identifier by specifying it in the declaration of a variable, domain, predicate, constant, fact, or fact variable. Once declared, you can use the identifier in later program code to refer to the asso-ciated value.
Идентификаторами являются имена, которые вы присваиваете переменным, доме-нам, предикатам, константам, фактам и фактам-переменным. Идентификаторы должны отличаться от любого ключевого слова. Ключевые слова нельзя использовать в качестве идентификатора, они зарезервированы для специального использования. Создаются иден-тификаторы путем включения их в объявления переменных, доменов, предикатов, кон-стант, фактов или фактов-переменных.

identity of objects (идентичность объектов)
Every object is unique: objects have a changeable state and since the state of the objects can be observed by means of their member predicates an object is only identical to itself. I.e. even if the state of two objects is identical, the objects are not identical, because we can change the state of one object without changing the state of the other object. We never have direct access to an object state; we always access an object state by means of a reference to the object.
Каждый объект уникален: объекты имеют изменяемое состояние и поскольку со-стояние объектов доступно через предикаты - члены объекта, объект идентичен только сам себе. Т.е., даже если два объекта в данный момент одинаковы, объекты все равно не идентичны, поскольку можно изменить состояние одного объекта без изменения другого. У нас никогда не будет прямого доступа к состоянию объекта. Доступ к состоянию объек-та возможен только через ссылку на него.

immutable elements (не изменяемые элементы)
Visual Prolog types are divided into object types and value types. We use the term value domain to specify domains whose elements are immutable (unchangeable). Here we can say that objects, belonging to domains correspondent to interface names, have mutable state and terms of any other domains are immutable. So actually, value types are everything except object types. Variables in Prolog are immutable; once they are bound to a value, they retain that value, unless backtracking unbinds the variable again during the process of restoring a previous program state. Otherwise, a bound variable is immutable. If the variable contains an object, then the object still has mutable state. However, it is immutable to which object the variable is bound to.
Типы в VIP делятся на типы объектов и типы значений. Мы используем термин до-мен значений для указания доменов, чьи элементы не изменяемы. Можно отметить, что объекты, принадлежащие доменам, связанным с интерфейсными именами, имеют множе-ственное состояние, а термы любого другого домена являются неизменяемы. В этом от-ношении типы объектов являются исключением. Переменные в Прологе неизменяемы. Получив назначение, переменные остаются с ним до тех пор, пока процесс бэктрекинга не восстановит предыдущее состояние и переменная вновь окажется свободной. Во всех дру-гих случаях переменные неизменяемы. Если переменная содержит объект, то объект все еще многозначен. Однако, неизменным остается сам объект, которому переменная назна-чена.

implementations (применения)
A class implementation is used to provide the definitions of the predicates and constructors declared in the class declaration, as well as the definitions of any predicates supported by its con-structed objects.
Раздел class implementation используется для определения предикатов и конструкто-ров, объявленных в объявлении класса. То же относится к объектам.

infix notation (инфиксная нотация)
Writing arithmetic expressions with the operators between the two values or expressions on which they are to operate.
Запись арифметического выражения с оператором, находящимся между двумя зна-чениями или выражениями, которые должны быть обработаны оператором.

inheritance (наследование)
In Visual Prolog code inheritance only takes place in the implementation of a class. Visual Prolog has multiple inheritance. You inherit from a class by mentioning the class in a special in-herits section of the implementation. The classes you inherit from are called parent classes or su-per-classes. Child class and sub-class is the dual to parent class, we also say that the child classes inherit from the parent classes. A child class can only access its parent classes through its public interface.
В VIP наследование кода имеет место только в разделе implementation класса. VIP имеет многократное наследование. Наследовать класс можно путем упоминания этого класса в специальном разделе inherits раздела implementation. Класс, который наследуется, называется родительским классом или суперклассом. Порожденный класс или подкласс двойственен родительскому классу. Можно сказать, что порожденный класс наследует родительский. Порожденный класс имеет доступ к родительскому классу только через public interface.

integral domains (целочисленный домен)
Integral domains are used for representing natural numbers. They are divided in two main categories for signed and unsigned numbers. The predefined domains integer and unsigned rep-resent signed and unsigned numbers with natural representation length for the processor architec-ture (i.e. 32-bit on a 32-bit machines). Integral domains can also have different representation size.
Целочисленные домены используется для представления натуральных чисел. Они делятся на две главные категории: числа со знаком и без знака. Предопределенные доме-ны integer и unsigned представляют знаковые и беззнаковые числа с длиной, зависящей от архитектуры процессора, т.е. 32 бита для 32-битных процессоров.

interface name domains (домены интерфейсных имен)
Declaration of each interface declares a domain correspondent to the interface name. This domain can be used as any other domain in declarations of predicates and other domains.
При объявлении каждого интерфейса, объявляется домен, соответствующий интер-фейсному имени. Этот домен может использоваться, как любой другой домен в объявле-ниях предикатов и других доменов.

internal fact database (внутренняя база данных фактов)
Visual Prolog internal fact database is composed of facts that you can add directly into and remove from your program at runtime. You declare the predicates describing the internal data-base facts and fact variables in facts sections, and you call these database facts the same way as you call ordinary predicates. However, in difference to ordinary predicates you can add database facts at runtime using the assert predicates and remove existing facts using the retract predicates. You can name a facts database, then an additional compound domain is implicitly defined. This domain has the same name as the facts section.
Факты внутренней базы данных VIP можно добавить непосредственно в базу данных или удалить из нее во время работы программы. Вам нужно объявить предикаты, описы-вающие факты внутренней базы данных и факты-переменные в разделе facts, и вы можете манипулировать фактами базы данных точно также, как обычными предикатами. Но, в отличие от обычных предикатов, факты можно добавлять в базу данных, используя пре-дикат assert, и удалять имеющиеся факты с помощью предиката retact. После того, как вы зададите базе данных фактов имя, неявным образом будет добавлен соответствующий со-ставной домен. Этот домен будет иметь тоже имя, что и раздел facts.

internal goal (внутренняя цель)
A goal hardcoded in the goal section of a program. Such goals are known as internal goals, because they are part of your program source text and they are compiled right in the program code. As counterpart, some Prolog environments support so-called External Goals. When such Prolog environment runs a program that does not contain an internal goal, then the environment displays the special dialog in which you can enter an external goal at runtime.
Жестко закодированная цель в разделе goal программы. Такие цели известны, как внутренние, т.к. они являются частью исходного текста программы и компилируются прямо в программный код. Заметим, что некоторые среды языка Пролог поддерживают так называемые Внешние Цели. Когда в среде такого Пролога запускается программа, не содержащая внутренней цели, то среда отображает специальный диалог, в котором можно ввести внешнюю цель прямо во время работы программы.

keywords (ключевые слова)
The keywords are reserved words. You should not employ them as user-defined names in your programs. The Visual Prolog keywords are: align, and, anyflow, as, bitsize, class, clauses, constants, constructors, determ, digits, div, domains, delegate, end, erroneous, externally, facts, failure, from, implement, interface, inherits, goal, guards, language, mod, monitor, multi, nonde-term, open, or, predicates, procedure, reference, resolve, single, supports, to.
Ключевые слова являются зарезервированными словами. Вам не следует применять их в качестве имен в ваших программах. Перечень ключевых слов в VIP : align, and, any-flow, as, bitsize, class, clauses, constants, constructors, determ, digits, div, domains, delegate, end, erroneous, externally, facts, failure, from, implement, interface, inherits, goal, guards, lan-guage, mod, monitor, multi, nondeterm, open, or, predicates, procedure, reference, resolve, sin-gle, supports, to.

language (язык)
Ключевое слово language говорит компилятору о том, какое соглашение о вызовах применить. Требуется только для объявления доменов процедур, написанных на других языках программирования. Соглашение о вызовах определяет каким образом аргументы передаются предикату. Оно также определяет правила формирования связующих имен из имен предикатов. В отношении Пролога соглашение о вызовах по умолчанию пропускает-ся.

last call optimization (оптимизация последнего вызова)
Action taken internally by the Visual Prolog system to reduce the space/time overhead of tail recursion in rules. Also it is known as "tail recursion optimization".
Действия, предпринимаемые системой VIP для снижения затрат памяти и времени на выполнение рекурсии. Известна также, как оптимизация хвостовой рекурсии.

link name (связующее имя)
Связующим именем предиката является имя, с помощью которого к предикату мож-но обратиться извне скомпилированной единицы, в которой оно определено. Обычно свя-зующее имя используется для обращения к предикату из других языков программирова-ния, или для объявление предиката, вызывающего функцию из внешних модулей, напи-санных на других языках. Связующее имя может иметь только предикат класса. Если свя-зующее имя не задано, то оно формируется из имени предиката способом, определенным в соглашении о вызовах.

lists (списки)
A term consisting of a collection of zero or more elements enclosed in square brackets [ ] and separated by commas. (See also: List Domains.)
Терм, состоящий из нуля и более элементов, заключенных в квадратные скобки и разделенные запятыми.

literal (литерал)
Invariant program elements are called "literals". Literals fall into following categories: in-teger, character, floating-point, string, binary and list.
Независящие от программы элементы называются литералами. Литералы делятся на следующие категории: integer, character, floating-point, string, binary and list.

logical operators (логические операторы)
A goal made up of two or more parts is known as a compound goal, and each part of the compound goal is called a sub-goal. You can use a compound goal to find a solution where both sub-goal A and sub-goal B are true (a conjunction of sub-goals), by separating the sub-goals with a logical operator and synonyms to the comma ' , '. You can also find a solution where at least one of sub-goal A or sub-goal B is true (a disjunction of sub-goals), by separating the sub-goals with the logical operator or synonyms to the semicolon ' ; '. That is in Visual Prolog programs you can use 2 logical operators the ' , ' (and) and the ' ; ' (or) to combine sub-goals in logical ex-pressions.
Цель, состоящая из двух или нескольких частей называется составной целью, каждая из частей является подцелью. Можно использовать составную цель для поиска единого решения, при котором подцель А и подцель В успешно выполняются (коньюнкция). В этом случае обе подцели разделяются запятой - ', '. Можно искать решения, когда успеш-но исполняется хотя бы одна подцель, А или В (дизьюнкция). В этом случае обе подцели разделяются точкой с запятой - ' ; '. В программе VIP можно использовать оба оператора для объединения подцелей в одном логическом выражении.

mode of predicates and facts
Most languages are deterministic. Contrary, Visual Prolog naturally supports non-deterministic inference based on non-deterministic predicates. Determinism monitoring mainly deals with the program optimization. Visual Prolog determinism checking system enforces to declare the following behavior aspects of a predicate: whether the predicate/fact call:
1. Can the predicate fail?
2. Can the predicate succeed?
3. Whether a backtracking point will be set to the predicate call.
Which combination of these aspects should be applied to a predicate of a fact is determined by the predicate/fact mode. When declaring a predicate the mode can be omitted. Inside an im-plementation (i.e. for a local predicate), the needed flows and modes are derived from the usages of the predicate. Inside an interface or a class declaration (i.e. for a public predicate) omitting the predicate mode means procedure.
Большинство языков являются детерминированными. Это означает, что набор ис-ходных значений приводит к единственному набору инструкции и вызываемая функция может выдать только единственный набор конечных значений. VIP, наоборот, естествен-ным образом поддерживает недетерминированный вывод, используя недетерминирован-ные предикаты. VIP имеет строго типизированную систему по контролю за детерминиз-мом. Причиной наблюдения за детерминизмом является стремление к оптимизации про-грамм. Система по контролю за детерминизмом в VIP принуждает объявлять следующие два аспекта поведения предиката: может ли обращение к предикату привести к неудаче? и какое число решение может выдать предикат? В большинстве прологовых программах следует определять свойства детерминизма:
4. Может ли работа предиката закончиться неудачей?
5. Может ли работа предиката закончиться успехом?
6. Будет ли установлена точка бэктрекинга при обращении к данному предикату?
Комбинация свойств, которую следует применить к предикату или факту, определя-ется модой. Если объявляется предикат, то мода может быть пропущена, так, как внутри раздела implementation, т.е. для локальных предикатов, нужные шаблоны ввода-вывода и мода определяется автоматически, исходя из контекста. Внутри объявления интерфейса или класса, т.е. для публичных предикатов, пропуск моды означает, что предикат имеет моду procedure.

module (модуль)
A Visual Prolog compilation unit, with global declarations, forming part of a project. (See also: Compilation Units.)
Компилируемый фрагмент исходного текста с глобальными объявлениями. Состав-ная часть проекта.
multiple predicate declarations (многократное объявление предиката)
Any predicate can have several declarations (for the same arity), each having different do-main

specifications for the argument(s).
Любой предикат может иметь несколько объявлений для одной и той же арности, каждый из которых имеет разные домены, объявленные для аргументов.

mutable elements (многозначные элементы)
Visual Prolog types are divided into object types and value types. We use the term value domain to specify domains whose elements are immutable (unchangeable). Here we can say that objects, belonging to domains correspondent to interface names, have mutable state and terms of any other domains are immutable. So actually, value types are everything except object types. Variables in Prolog are immutable; once they are bound to a value, they retain that value, unless backtracking unbinds the variable again during the process of restoring a previous program state. Otherwise, a bound variable is immutable. If the variable contains an object, then the object still has mutable state. However, it is immutable to which object the variable is bound to.
Типы в VIP делятся на типы объектов и типы значений. Мы используем термин до-мен значений для указания доменов, чьи элементы не изменяемы. Можно отметить, что объекты, принадлежащие доменам, связанным с интерфейсными именами, имеют множе-ственное состояние, а термы любого другого домена являются неизменяемы. В этом от-ношении типы объектов являются исключением. Переменные в Прологе неизменяемы. Получив назначение, переменные остаются с ним до тех пор, пока процесс бэктрекинга не восстановит предыдущее состояние и переменная вновь окажется свободной. Во всех дру-гих случаях переменные неизменяемы. Если переменная содержит объект, то объект все еще многозначен. Однако, неизменным остается тот объект, которому переменная назна-чена.

name restrictions (ограничения на имена)
Next important restrictions are imposed on names:
1. Names of symbolic constants in clause sections must start with lower-case letters.
2. Names of variables must start with upper-case letters or the underscore ' _ ' character.
3. Symbolic filenames must start with lower-case letters.
The Visual Prolog compiler does not make a distinction between upper and lower case let-ters, except for the first letter. (See also: names, names belongin
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прога для перевода с английского kadriolina Любые вопросы от новичков 11 02.11.2011 01:21
Сервис BITS - попытка изменить. Str 3 Любые вопросы от новичков 4 01.05.2011 04:27
8 разных виндоусов семь+1 попытка ХР pocex Любые вопросы от новичков 16 08.04.2011 01:16
Программа перевода числа из 10 СС в 2 СС Gock C++ Builder 18 25.02.2010 09:11
[SWI-Prolog] Попытка реализовать локальные БД, нужен совет Alkid Prolog 1 11.07.2008 22:43
Попытка реализации miniHyper (Братко) на VIP7 z556 Prolog 0 13.04.2007 21:56
Попытка отправить sms через свой софт imported_DS_ Delphi 7 05.09.2006 21:32
Продолжение перевода Глоссария VIP 6.3 5565610 Prolog 0 07.08.2006 12:37
Методы машинного перевода! imported_Любитель Prolog 3 02.05.2005 10:20
Генерация бланка почтового перевода Destructor PHP 0 30.10.2004 00:21
Выбор инструмента для перевода данных Eugene Программирование графики 0 15.04.2003 00:33
Функция перевода строки в программе pas->cpp valera Kolupaev Вопросы начинающих программистов 4 28.01.2003 22:11



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов