Чому переписування термінів?


12

Я трохи зробив гугл і трохи прийшов.

Мені цікаво, які основні причини для обчислювальної роботи вчених, програмістів для вивчення переписування термінів та / або переписування терміна.

Наскільки я можу сказати, це просто допомагає для основних міркувань щодо функціональних програм та (імперативного) контролю програм. Мабуть, це тема, яка цікавить логіків та тих, хто вивчає конструктивні абстрактні алгебри.

Будь-яка допомога буде дуже вдячна!

Відповіді:


11

Я не впевнений, що це принесе вам більше, ніж ви вже знаєте. Але тоді я можу не зрозуміти причин, які змушують замислитися над переписуванням терміна. Це допомагає.

Як ви можете знати, граматики - це системи переписування рядків. На вершині ієрархії Хомського ви маєте граматики типу 0, які визначають рекурсивно перелічені (RE) відповіді і мають обчислювальну потужність машин Тьюрінга.

Отже, це говорить про те, що системи перезапису взагалі мають багато спільного з алгоритмами вираження.

Проблема з рядками в цілому полягає в тому, що немає очевидного способу приєднання до них семантики. Це свого роду аморфне переписування.

Що зазвичай цікавить людей, це вираження алгоритмів у конкретних областях, які мають структуру та властивості. Такі домени часто визначаються від елементарних (атомних) сутностей і закриваються різними операціями, можливо, посилаються на співвідношення еквівалентності тощо. Їх часто називають алгебрами.

Ці домени часто абстрактні. Але обчислення їх елементів можна виразити лише на конкретних уявленнях. Терміни - це природна репрезентація цих елементів, оскільки вони виражають, як елементи можна отримати для інших елементів шляхом застосування операцій, рекурсивно розташованих до атомних елементів (хоча загальні властивості не завжди повинні йти зовсім вниз). Терміни - це свого роду синтаксис структури дерева, яким можна керувати для вираження алгоритмів (як для рядка). Але структура операндів операторів термінів також дозволяє асоціювати їх семантику в деякій абстрактній області за допомогою гомоморфізмів.

Замість того, щоб сприймати дуже формальний погляд на вікіпедію та багато текстів на цю тему, просто розгляньте програми. Зазвичай визнається, що зручним синтаксичним поданням програм є те, що називається абстрактним синтаксичним деревом (AST). Але AST - це лише термін, який представляє об’єкт програми. Денотаційна семантика - це спосіб визначення абстрактних доменів та асоціації значень цих доменів з AST (або AST-підтрубками) за допомогою гомоморфізмів. Програми у формі AST можна перетворити або оптимізувати, застосувавши правила перезапису (я не запевняю, що всі оптимізації можна чи потрібно робити так).

Перетворення алгебраїчних виразів для різних цілей може бути виражене переписанням терміна. Наприклад, спрощення деяких виразів. Різні типи обчислень також можна природно виразити як переписування термінів, наприклад, обчислення похідних. Переписування термінів також іноді використовується для визначення канонічних форм в алгебрах, коли одне і те ж смислове утворення може мати кілька синтаксичних уявлень.

Я пропоную вам ознайомитися зі статтею вікіпедії на цю тему .


6

Думаю, це тому, що термін переписування - це щось надзвичайно фундаментальне, і це дозволяє описувати речі надзвичайно низьким рівнем, незалежно від будь-якого обладнання.

Переписування термінами може описувати граматики, але це також дає механіку описаним логічним системам, таким як логіка першого порядку тощо. Доведення та відрахування можна записати як термінові написання. Тоді заміна термінового переписування - це справді єдина операція, яку ви маєте. Простота тут цінна тим, що ви описуєте логіку, тому не можете використовувати всю складність логіки для опису вашої системи (оскільки це система, яку ви намагаєтесь описати).

Потім це дає вам механіку, яку вам потрібно поговорити про обчислення лямбда як логічну / аксіоматичну систему, що дає вам надзвичайно формальну, фундаментальну версію обчислення.

Машини Тьюрінга є корисними, але їх основні визначення вимагають від вас мати концепцію наборів, функцій тощо. Існує набагато більше математики, яка, як передбачається, була побудована.

Обчислення лямбда, з іншого боку, визначається з точки зору логіки, тому ви можете використовувати його без особливих зусиль у визначенні для теорії множин, функцій тощо.

Переписування термінів, модельоване логікою, не стосується лише функціонального програмування. Коли ви робите офіційну перевірку апаратних чи програмних засобів, ви завжди збираєтеся робити якісь міркування, і це міркування можна моделювати переписуванням терміна.


2

Однією з практичних причин є те, що це призводить до побудови систем перетворення програм , інструментів, які дозволяють маніпулювати кодом для програм як термінів (абстрактні синтаксичні дерева), використовуючи поверхневі синтаксичні переписування.

Один із прикладів цієї моєї системи - інструментарій реінжинірингу програмного забезпечення DMS , який використовувався для широкого спектру програмних завдань та масштабних завдань трансформації. Ви можете бачити, як DMS виражає переписування . Ці переписки застосовуються асоціативно-комутативною системою переписування терміна, яка діє за кадром.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.