що таке семантика?


13

Є багато популярних мов. Але, вчені-комп’ютери говорять нам, що для того, щоб зрозуміти поведінку програм на цих мовах однозначно і недвозначно сперечатися з поведінкою програми (наприклад, довести їх ідентичність), нам потрібно перекласти їх на іншу, добре зрозумілу мову. Вони називають таку мову "семантикою". Автори пропонують одну з багатьох семантик. Вони пояснюють значення їх конструкцій і те, як ви можете перекласти свою мову на їхню. Як тільки ви це зробите, всі зрозуміють вашу програму, кажуть вони.

Виглядає добре, все ж я щось не розумію. Чи кажуть нам, що вони вводять іншу мову, щоб зрозуміти першу? Чому ми розуміємо це краще, ніж оригінальний? Чому ця семантика краща за це? Чому б не вивчити семантику С відразу, а не вигадувати іншу мову для опису семантики С? Те саме стосується синтаксису. Чому я не задаю те саме питання щодо синтаксису?

PS У коментарях я чую, що семантика не означає іншої мови чи перекладу на неї. Але формальна семантика для VHDL говорить про те, що якщо ви щось розумієте лише одним способом, ви цього не розумієте, і "значення сенсу" можна вказати, якщо ми надамо мові механізм, який переводить її на іншу (відому) мову. Тобто "семантика - це відношення між формальними системами". У семантиці мов програмування Хеннесі говорить, що семантика дозволяє формально обробити програму «значенням», коли семантика подається як BNF або синтаксична діаграма. Що таке формальна система, якщо не мова?

PS2 Чи можна сказати, що синтез HW даної програми HDL у взаємозв'язок воріт є процесом вилучення семантики? Потім ми перекладаємо (опис високого рівня) на мову (низький рівень), яку ми розуміємо.


Які діаграми ви маєте на увазі? Я працюю з семантикою, але практично ніколи не використовую діаграми.
Дейв Кларк

1
{0,1}+value(w)=i=1|w|wi2ni+1

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

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

Так, але вони витягують "значення" з опису.
Вал

Відповіді:


15

Чому б не вивчити семантику С відразу, а не вигадувати іншу мову для опису семантики С?

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

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

  1. про те, яку математичну функцію програма обчислює ( денотаційна семантика ),
    lambda x: x + x =(x2x)
  2. про властивості, які мають міститись до та після програми ( аксіоматична семантика ),
    {a>0} x = a; y = 0; while(1 < x){ x = x/2; y++; } {y=log(a)}
  3. про те, як зменшиться програма ( оперативна семантика ). де являє вашу пам’ять до і після. У цьому випадку і якщо і - комірки пам'яті дляі, а якщо .
    (σ, while(x){x--;y++;})σ
    σ,σσ=(xa,yb)σ=(xa+b,y0)xyxya

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

Якщо читання семантики не настільки значуще, читання та узгодження семантики щодо основних елементів мови є дуже важливим, наприклад, щоб однозначно пояснити, як Cпримітивні твори.continue

На закінчення:

Чи кажуть нам, що вони вводять іншу мову, щоб зрозуміти першу?

Технічно ні, мова - математика. Крім того, він в основному однаковий для всіх мов програмування, тому навіть введення нової мови, якщо вона однакова для всіх, було б майже добре.

Чому ми розуміємо це краще, ніж оригінальний?

Тому що це математика, тому це може бути важче зрозуміти, але це спосіб більш точний і повний.

Те саме стосується синтаксису.

Є роботи з перевіреними парсерами, але питання про те, що означатиме семантика парсера, не є тривіальним.


2
"математика [...] - спосіб більш точний і повний." - що, звичайно, ставить питання щодо формального синтаксису та семантики самої математики. ;)
Рафаель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.