معنیشناسی (علوم رایانه)
در نظریه زبانهای برنامهنویسی، معنیشناسی (به انگلیسی: semantics) یک پهنه است که متوجه مطالعهٔ ریاضیوار دقیق معنی زبانهای برنامهنویسی است. این کار با ارزیابی معنی رشتههای مجاز نحوی، که توسط زبان برنامهنویسی خاص تعریف شدهاند، انجام میشود، که در نهایت «محاسبات درگیر» را نمایش میدهد. اگر نتیجه ارزیابی، رشتههای غیرمجاز نحوی باشد، نتیجه آن است که «بدون محاسبه» را در خروجی بدهد.[۱]
سازوکار معنیشناسی
ویرایشمعنیشناسی فرایندهایی را که یک رایانه در هنگام اجرای یک برنامه، در آن زبان بهخصوص، از آن پیروی میکند را توصیف میکند. این فرایندها میتواند توسط توصیف رابطهٔ بین ورودی و خروجی یک برنامه نشان داده شود، همچنین میتوان توسط توضیحدادن آنکه چگونه یک برنامه در سکوی مشخصی اجرا میشود نشان داده شود. از این رو معنیشناسی یک مدل محاسباتی میسازد.[۱]
معنیشناسی قراردادی، برای مثال، در این موارد کاربرد دارد: کمک به نوشتن کامپایلرها، فهم بهتر آنکه برنامه چه کاری انجام میدهد، اثبات رفتار برنامه و غیره.[۱]
مثال
ویرایشعبارت if زیر
if 1 == 1 then S1 else S2
معنیشناسی در زبان برنامهنویسی (کامپایلر) تشخیص میدهد که تأثیر این عبارت همان S1 تنها میباشد.[۱]
بررسی اجمالی
ویرایشپهنه معنیشناسی صوری شامل این موارد است:
- تعریف مدلهای معنایی
- ارتباط بین مدلهای معنایی مختلف
- رابطه بین دیدگاههای مختلف برای معنا
- رابطه بین محاسبات و پهنه ساختارهای ریاضی اساسی مثل منطق، نظریه مجموعهها، نظریه مدل، نظریه رستهها و غیره.
معنیشناسی رابطههای نزدیکی با دیگر زمینهها علوم رایانه مثل طراحی زبانهای برنامهنویسی، نظریه نوعها، کامپایلرها و مفسرها، درستییابی برنامه، و وارسی مدل دارد.[۱]