موضوع مقاله: برنامه‌نویسی مفهوم | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # برنامه‌نویسی مفهوم | مقدمه: برنامه‌نویسی مفهوم یک پارادایم برنامه نویسی است، که بر چگونگی ترجمهٔ مفاهیمی که در ذهن برنامه‌نویس شکل می‌گیرد به آنچه در فضای کد قابل دستیابی است، تمرکز می‌کند. | ## بخش 1: برنامه‌نویسی مفهوم | شبه سنجه‌ها برنامه‌نویسی مفهوم شبه سنجه‌ها را برای ارزیابی کیفیت کد به کار می‌گیرد. بدین دلیل به این‌ها شبه سنجه گفته می‌شود که فضای مفهوم و فضای کد را به هم مربوط می‌سازند. با درک روشنی از اینکه فضای مفهوم را نمی‌توان به اندازهٔ کافی محدود به قالب بندی‌هایی کرد تا بتوان سنجه‌های واقعی را تعریف نمود. شبه سنجه‌های برنامه‌نویسی مفهومی در برگیرندهٔ موارد زیر می‌شوند: اعوجاج نحوی تفاوت میان مفهوم و نحوی که برای نمایش آن به کار گرفته شده‌است را اندازه‌گیری می‌کند. به عنوان مثال: نقطه ویرگول در انتهای دستورها در زبان C می‌تواند به عنوان اعوجاج نحوی در نظر گرفته شود چون در فضای مفهوم معادلی ندارد. اعوجاج معنایی فاصلهٔ معنا یا رفتار مورد انتظار از مفهوم با معنا با رفتار واقعی درون کد را اندازه‌گیری می‌کند. به عنوان مثال: این حقیقت که انواع دادهٔ حسابی سرریز می‌کنند (در حالیکه اعداد حسابی ریاضی چنین نیستند.) صورتی از اعوجاج معنایی است. | ## بخش 2: برنامه‌نویسی مفهوم | پهنای باند این را اندازه‌گیری می‌کند که به چه میزان از فضای مفهوم را یک ساختار کد از پیش تعیین شده می‌تواند معرفی نماید. به عنوان مثال: عملگر جمع اضافه بار شده در زبان C پهنای باند بیشتری از دستور جمع در زبان اسمبلی (Add) دارد چون عملگر زبان C می‌تواند عمل جمع را با اعداد ممیز شناور (و نه فقط اعداد حسابی انجام دهد.) نسبت سیگنال به اعوجاج این را اندازه‌گیری می‍کند که چه کسری از فضای کد در برابر اطلاعات پیاده‌سازی شده برای نمایش مفاهیم واقعی به کار گرفته شده‌است. قانون برابری، شکست برابری قانون برابری هنگامی تأیید می‌شود که رفتار کد با مفهوم اصلی همخوانی داشته باشد. سرریز کردن اعداد حسابی برابری میان مفهوم ریاضی اعداد حسابی و تقریب کامپیوتری شده از این مفهوم را برهم می‌زند. به راه‌های بسیاری در شکست برابری اسامی ویژه‌ای داده شده‌است زیرا این موارد خیلی رایج هستند: خطای دامنه وضعیتی است که در آن کد خارج از دامنهٔ برابری اجرا می‌شود، که این دامنه ایست که در آن مفهوم و پیاده‌سازی منطبق می‌شوند سرریز عدد حسابی مثالی از خطای دامنه است. قالب مفهوم (همچنین قالب بندی دوباره مفهوم یا مفهوم را دوباره قالب بندی کردن) بازنویسی یک مفهوم به صورت مفهومی دیگر است بدین سبب که مفهوم اصلی را نمی‌توان به وسیله ابزارها پیاده‌سازی نمود در زبان C به کار بردن اشاره گرها برای آرگومان‌های خروجی به این دلیل که زبان C از آرگومان‌های خروجی به صورت صریح پشتیبانی نمی‌کند، مثالی از قالب مفهوم است. وارونگی اولویت صورتی از اعوجاج نحوی یا معنایی است که به وسیله برخی قوانین عمومی دیکته شده از سوی زبان به وجود می‌آید. | ## بخش 3: برنامه‌نویسی مفهوم | در Smalltalk هر چیزی یک شی است و این قانون به این دستاورد ناخواسته منجر می‌شود که عبارتی شبیه به ۲+۳*۵ از توالی مرسوم عملیات پیروی نمی‌کند (در Smalltalk ابتدا ۲ با ۳ جمع شده، حاصل آن در ۵ ضرب می‌شود که در نهایت عدد ۲۵ به جای ۱۷ بدست می‌آید.) روش شناسی برای نوشتن کد برنامه‌نویسی مفهوم این گام‌ها را پیشنهاد می‌دهد: مفاهیم مرتبط را در فضای مفهوم شناسایی و تعریف نمایید. ترکیبی از ساختارهای برنامه‌نویسی را شناسایی کنید که اجازه می‌دهد مفاهیم به راحتی به قالب کد درآیند، که یافتن نماد کدی که با نماد شناسایی شده در مرحله قبل تا حد ممکن نزدیک باشد، را در بر می‌گیرد. کدی بنویسید که تا حد ممکن رفتار و معانی مورد انتظار از جنبه‌های مرتبط مفهوم اصلی را حفظ و نگهداری می‌کند. بنابراین برنامه‌نویسی مفهوم در برخی موارد نیازمند استفاده از پیش پردازنده‌ها، زبان‌های مختص به دامنه یا روش‌های فرا برنامه‌نویسی است. زبان‌ها زبان برنامه‌نویسی XL تنها زبان شناخته شده ایست که تا به امروز به‌طور واضح برای برنامه‌نویسی مفهوم ایجاد شده‌است. اما برنامه‌نویسی مفهوم تقریباً در هر زبانی با درجات متفاوتی از موفقیت قابل اجراست. زبان‌های برنامه نویسی Lisp و Forth و مشتقات آن‌ها نمونه‌هایی از زبان‌های از قبل موجود هستند که به خوبی قابلیت استفاده به عنوان برنامه‌نویسی مفهوم را دارند. | ## جمع‌بندی | کارهای مشابه پروژه‌هایی هستند که از ایده‌های مشابه بهره‌برداری کرده‌اند تا با سطح بالایی از انتزاع کد تولید کنند.