Головна

Вступ

  1.  I. Вступ
  2.  I. Вступ
  3.  I. Вступ
  4.  I. ВСТУП В лінійної алгебри. КОРОТКИЙ ОГЛЯД
  5. " СВІТОВА ІСТОРІЯ ФІЛОСОФІЇ. ВСТУП "- текст Ясперса (1951-1952).
  6. " ГОЛОС І ФЕНОМЕН: введення в проблему знаків в феноменології Гуссерля "(" La voix et le phenomene ". Paris, 1967) - робота Дерріда.
  7.  V.2.3. Введення Інституцій Гая в науковий обіг

Мова предикатного програмування P (Predicate programming language) є універсальним і може використовуватися для розробки широкого класу програм. Щонайменше, цей клас включає програми, що розробляються зазвичай на мові ФОРТРАН, для задач обчислювальної математики. З метою специфікації і реалізації програм для реактивних систем мову P розширено засобами для опису процесів, передачі повідомлень і породження процесів, що працюють паралельно з процесом-батьком. У меншій мірі мова P придатний для задач системного програмування, де зазвичай використовуються об'єктно-орієнтовані засоби, яких немає в ядрі мови P.

За сформованою класифікації мову P слід віднести до класу мов функціонального програмування. Мова P поєднує функціональний і операційний (предикатний) стилі записи алгоритмів і володіє значно більшою виразністю в порівнянні з чисто функціональними мовами. У цьому сенсі мова P ближче до мов логічного програмування. Однак на відміну від логічних мов процес обчислення програми на мові P реалізується логічним висновком, а явним виконанням, характерним для імперативних і функціональних мов.

Функціональний мова зручніше імперативного для розробки алгоритму. Однак отримання ефективної програми для функціональних мов проблематично навіть із застосуванням витонченої оптимізації в процесі трансляції. Тому після налагодження програми на функціональній мові для досягнення необхідної ефективності її доводиться переписувати на імперативний мовою. Приемущество технології предикатного програмування в тому, що вона є наскрізною: до предикатной програмі застосовується набір трансформацій з отриманням ефективної програми на імперативний розширенні мови P (див. Розд. 6.11), після чого програма може конвертуватися на будь-який з імперативних мов: C, C ++, ФОРТРАН і ін. Базовими трансформаціями є:

- Склеювання змінних, що реалізує заміну кількох змінних однієї;

- Заміна хвостовій рекурсії циклом;

- Підстановка визначення предиката на місце його виклику;

- Кодування структурних об'єктів низькорівневими структурами з використанням масивів і покажчиків.

За допомогою даних трансформацій можна отримати програму граничної ефективності, проте важко це зробити автоматично.

Мова предикатного програмування P вперше представлений в роботі [1]. Повний опис мови P дається в препринті [2]. Наступні модифікації і розширення мови ініційовані використанням мови для опису різних алгоритмів [3-5]. Введено кошти специфікації визначень предикатів у вигляді передумов і постусловіем. Є досвід використання мови P в якості мови публікації алгоритмів. Мова P розширено для специфікації і реалізації реактивних систем, які визначаються у вигляді сукупності взаємодіючих процесів [5]. Введено кошти зображення процесів, оператори прийому і посилки повідомлень, засоби динамічного породження процесів.

Всі попередні версії мови P по стилю були ближче до мов Паскаль і Модула-2. Остання версія мови P, представлена ??в даному описі, по синтаксису, набору операторів і операцій і інших особливостей істотно наближена до стилю мов типу C. Як наслідок, мова P стане більш комфортним для програмують на мовах C, C ++, Java, C #. Зміни синтаксису мови P стали причиною проведення серії серйозних модифікацій у всьому мовою. Певний вплив на нову версію мови P надав мову спеціфікаіцій PVS [7]. Введено алгебраїчні типи. Послідовності замінені списками.

Синтаксис описується на розширеному мовою Бекусовскіе нормальних форм (БНФ) з наступними особливостями:

- Термінальні символи виділені жирним шрифтом;

- [Фрагмент] - означає можливе відсутність в синтаксичному правилі укладеного в квадратні дужки фрагмента; фрагмент визначає послідовність термінальних і нетермінальних символів;

- (Фрагмент) * - визначає повторення фрагмента нуль або більше разів; круглі дужки можуть бути опущені, якщо фрагмент складається з одного символу;

- (Фрагмент) + - визначає повторення фрагмента один або більше разів;

- Запис виду [: CLASS:] позначає символ зазначеного класу; використовуються наступні класи символів:

alpha - буквений символ, що належить латинської або російській алфавітом; дозволяються великі і малі літери;

digit - цифра (0, 1, 2, 3, 4, 5, 6, 7, 8 або 9);

alnum - символ, що належить alpha або digit;

blank - пропуск чи табуляція;

xdigit - шістнадцяткова цифра (digit - заголовна або рядкова буква від A до F);

print - символ, для якого визначено накреслення (т. е. символ з alnum, blank або будь-якої іншої символ, який можна відобразити).




 Система типів даних |  Логічна і операційна семантика мови CCP |  Семантика виклику предиката |  оператор суперпозиції |  умовний оператор |  конструктор предиката |  конструктор масиву |  програма |  Рекурсивні означення предикатів |  однозначність предикатів |

© 2016-2022  um.co.ua - учбові матеріали та реферати