معنی‌شناسی (علوم رایانه)

در نظریه زبان‌های برنامه‌نویسی، معنی‌شناسی  یک پهنه است که متوجه مطالعهٔ ریاضی‌وار دقیق معنی زبان‌های برنامه‌نویسی است. این کار با ارزیابی معنی رشته‌های مجاز نحوی، که توسط زبان برنامه‌نویسی خاص تعریف شده‌اند، انجام می‌شود، که در نهایت «محاسبات درگیر» را نمایش می‌دهد. اگر نتیجه ارزیابی، رشته‌های غیرمجاز نحوی باشد، نتیجه آن است که «بدون محاسبه» را در خروجی بدهد.

سازوکار معنی‌شناسی 
معنی‌شناسی فرایندهایی را که یک رایانه در هنگام اجرای یک برنامه، در آن زبان به‌خصوص، از آن پیروی می‌کند را توصیف می‌کند. این فرایندها می‌تواند توسط توصیف رابطهٔ بین ورودی و خروجی یک برنامه نشان داده شود، همچنین می‌توان توسط توضیح‌دادن آنکه چگونه یک برنامه در سکوی مشخصی اجرا می‌شود نشان داده شود. از این رو معنی‌شناسی یک مدل محاسباتی می‌سازد.

معنی‌شناسی قراردادی، برای مثال، در این موارد کاربرد دارد: کمک به نوشتن کامپایلرها، فهم بهتر آنکه برنامه چه کاری انجام می‌دهد، اثبات رفتار برنامه و غیره.

مثال 
عبارت if زیرif 1 == 1 then S1 else S2معنی‌شناسی در زبان برنامه‌نویسی (کامپایلر) تشخیص می‌دهد که تأثیر این عبارت همان S1 تنها می‌باشد.

بررسی اجمالی 
پهنه معنی‌شناسی صوری شامل این موارد است:
 تعریف مدل‌های معنایی
 ارتباط بین مدل‌های معنایی مختلف
 رابطه بین دیدگاه‌های مختلف برای معنا
 رابطه بین محاسبات و پهنه ساختارهای ریاضی اساسی مثل منطق، نظریه مجموعه‌ها، نظریه مدل، نظریه رسته‌ها و غیره.

معنی‌شناسی رابطه‌های نزدیکی با دیگر زمینه‌ها علوم رایانه مثل طراحی زبان‌های برنامه‌نویسی، نظریه نوع‌ها، کامپایلرها و مفسرها، درستی‌یابی برنامه، و وارسی مدل دارد.

منابع 

روش‌های صوری
زبان‌های توصیف صوری
معنی‌شناسی زبان‌های برنامه‌نویسی
منطق در علوم کامپیوتر