موضوع مقاله: پرولوگ | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # پرولوگ | مقدمه: پرولوگ یک زبان برنامه‌نویسی منطقی چند منظوره مبتنی بر مفاهیم هوش مصنوعی و زبان‌شناسی محاسباتی است. | ## بخش 1: پرولوگ | این زبان بر پایه منطق ریاضی بنا نهاده شده و آن را به عنوان زبان کاملاً منطقی می‌شناسند و حتی به آن پرلوگ خالص نیز گفته می‌شود و می‌توان گفت متفاوت از سایر زبان‌های برنامه‌نویسی است. این زبان، ریشهٔ خود را بر خلاف بسیاری از زبان‌های برنامه‌نویسی دیگر از منطق صوری گرفته‌است. پس منطق برنامه را از لحاظ روابط بیان کرده و اجرای آن‌ها بیشتر از طریق پرس و جوها حول این روابط انجام می‌شود. منطق گرا بودن این زبان، آن را برای به‌کارگیری در بانک‌های اطلاعاتی، ریاضیات نمادین، زبان تجزیه و کاربردهای دیگر سودمند ساخته‌است. تاریخچه این زبان برای اولین بار در اوایل ۱۹۷۰ توسط گروهی به سرپرستی «آلن کلمرار» در مارسی فرانسه به وجود آمد و اولین سیستم Prolog در سال ۱۹۷۲ توسط کلمرار و فیلیپ راسل توسعه داده شد. Prolog یکی از زبان‌های برنامه‌نویسی منطق مرتبه اول بود، و امروزه رایج‌ترین این گونه زبان‌ها باقی مانده‌است، همراه با تعداد زیادی از پیاده‌سازی‌های آن که به صورت رایگان و تجاری در دسترس هستند. در حالی که در ابتدا با هدف پردازش زبان طبیعی ساخته شد اما به تدریج بخاطر استفاده و پشتیبانی سیستم‌های خبره، بازی‌ها، سیستم پاسخ خودکار، ontologies و سیستم‌های کنترل پیچیده، تغییر کرد و محیط‌های Prolog مدرن و با حمایت از ایجاد واسط کاربر گرافیکی، به عنوان برنامه‌های اداری و شبکه.. معرفی گردید و الحاقات بعدی از Prolog که توسط تیم اصلی ایجاد گشت محدودیت توانایی در منطق برنامه‌نویسی را در پیاده‌سازی از بین بردند. بعداً در نسل پنجم رایانه‌ها نیز از پرولوگ برای نوشتن کرنل سیستم‌عامل نیز در ایجاد پروژه سیستم FGCS استفاده شد. انواع داده‌ها نوع داده در پرلوگ به صورت ترم‌ها تعریف می‌شود که این ترم‌ها می‌توانند اتم، اعداد، متغیرها یا ترکیبی از ترم‌های دیگر باشند. اتم‌ها به‌طور کلی هیچ معنای ذاتی ندارند و یک سری رشته از حروف یا اعداد هستند که خواننده پرلوگ آن‌ها را تجزیه کرده‌است. اتم کلمات آشکار در کد می‌باشند که هیچ نحو خاصی برای آن‌ها در نظر گرفته نشده‌است مثل: x, blue,some,atom اعداد که می‌توانند به صورت اعداد شناور یا صحیح باشند و حتی اعدا گویا. متغیر که یک رشتهٔ متشکل از حروف است که می‌تواند نشان دهندهٔ یک واژه باشند و ارزش آن‌ها با توجه به پرلوگ مقداردهی داده می‌شود. یک ترم مرکب (عمل‌کننده یا functor) ترکیبی از اتم‌ها است که به صورت یک متغیر با آن رفتار می‌کنیم و نیز مجموعه‌ای از استدلال هاست که یک نتیجه نهایی درست یا غلط را دربرمی گیرد. | ## بخش 2: پرولوگ | واژه‌های مرکب در یک پرانتز تعریف می‌شوند و به آنها عبارت‌های مرکب نیز گفته می‌شود. رشته‌ها که مجموعه ایی از کارکترها هستند برای نگهداری یونیکدها و نام‌های شخصیت‌های محلی. در نتیجه، ماژول‌های نوشته شده در یک کامپایلر Prolog لزوماً بر روی دیگری کار نمی‌کنند. برنامه‌نویسی در پرولوگ برنامه پرلوگ مجموعه‌ای از روابط است که توسط بندهای خاص تعریف شده‌اند. سر یک عضوی از بدن است؛ و بعد با پرس و جوهای انجام شده با توجه به قوانین موجود و حقایق اولیه نتایج ثانویه که حقایق جدیدی هستند شکل می‌گیرد. پرس و جوها می‌توانند براساس لیست‌های پیوندی نیز باشد و طبق قوانین از پیش تعیین شده نتایجی را در اختیار کاربر گذاشت. به همین خاطر مجموعه‌ای از کتابخانه‌های این زبان شکل گرفته‌است و در راستای آن هم دستورهایی برای چاپ داده‌ها و امثال آن شکل گرفته‌است. بررسی بررسی ابتدا با یک پرس و جو شروع می‌شود و با توجه به حقایق موجود که درست یا غلط است نتیجه منتقل می‌شود. اساس کار بدین گونه است که به‌دنبال اولین غلط یا تکذیب مسئله می‌یابد و با توجه به نوع مسئله در صورت نیافتن آن همین روال را برای دیگر داده‌ها نیز انجام می‌دهد و در صورت حصول نتیجه حقیقت داده‌های قبلی به صورت بازگشتی معلوم می‌گردد. Yes طبق قانون وقتی دونفر خواهر و برادرند که والدین آن‌ها یکی باشد پس زبان به دنبال والدین می‌گردد و آن‌ها را برمی‌گرداند و جواب را به جای گزاره‌های مذکور می‌گذارد و طبق قانون اگر دو گزاره یکی باشند درست برمی‌گرداند. سیستم‌های Prolog معمولاً به روش بهینه‌سازی معروفی به نام تماس دم (tco) پایبندند که ملتزم به بازگشت قطعی است و حتماً در این روش بهینه‌سازی می‌بایست به دم برسد. به همین خاطر در روش بازگشتی از یک پشته با یک نوع محدودیت بهره می‌گیرد و بدین وسیله می‌تواند حلقه‌های متعدد و بازگشتی را با اطمینان به بازگشت به جواب را جوابگو باشد. حالت دیگری نیز دربردارد بدینگونه که برای اثبات یک استدلال دنباله بازگشتی آن را تا رسیدن به یک دم یا انتها می‌رود و در صورتی که نتواند حقیقتی برای آن پیدا کند در حقیقت نتوانسته آن را اثبات کند اما شاید هم حقیقتی مربوط به نفی آن پیدا شود که در صورت آن را نفی می‌کند. یک قاعده تعریف شده به عنوان -> به جای -: که با استفاده از آن می‌توان به تجزیه کردن و ایجاد یک رابط مناسب برای یک لیست بکار گرفت. | ## بخش 3: پرولوگ | DCGها اغلب برای نوشتن تجزیه‌گر یا ژنراتورهای لیست استفاده می‌شوند، زیرا آن‌ها همچنین یک رابط کاربری مناسب برای لیست‌های متفاوت فراهم می‌کنند. برنامه‌نویسی سفارشی یکی دیگر امکاناتی که در پرلوگ با توجه به ماهیت آن به وجود آمده‌است برنامه‌نویسی سفارشی است. با توجه به روند BachTracking و روش بهینه‌سازی بازگشت قطعی می‌توانیم حالاتی را ایجاد کنیم که از آن طریق برنامه به‌طور خودکار و تنها با داشتن یک قاعده ساده به دنبال جواب در یک لیست پیوندی بگردد. به دلیل آنکه برنامه‌های به زبان پرلوگ دنباله‌ای از اصطلاحات خود این زبان است، خواندن آن راحت و مکانیزم ساده ایی جهت ترجمه را دارا است. برای ترجمه بهتر و نزدیک تر بودن به زبان ماشین واقعی برای عملکرد بهتر نیاز به تحقیقات مبتنی بر جامعه منطقی برنامه‌ریزی شده‌است که دو کار اساسی براساس قواعد منطقی انجام می‌دهد یک باینری کردن عبارات و بندها و دیگری فراهم کردن پشته مبتنی بر ماشین مجازی. در نسل پنجم سعی شده‌است ماشین‌ها و سیستم‌های مبتنی بر پرلوگ نیازهای سخت‌افزاری این نوع برنامه‌سازی منطقی را نیز فراهم سازند تا سرعت اجرای آن هزاران برابر شود. به‌علاوه این پرلوگ این توانایی را نیز دارد که با پردازش موازی بندها سرعت را بهبود بخشد. توسعه دهندگان اظهار داشتند: "ما نیاز به یک زبان داشتیم که می‌توانستیم به راحتی قوانین تطبیق الگوی بر روی درختان تجزیه و سایر حاشیه نویسی‌ها (مانند نتایج نامفهوم نامیده شده) را بیان کنیم و یک تکنولوژی که بتواند این قوانین را بسیار مؤثر اجرا کند. توسعه دهندگان اظهار داشتند: "ما نیاز به یک زبان داشتیم که می‌توانستیم به راحتی قوانین تطبیق الگوی بر روی درختان تجزیه و سایر حاشیه نویسی‌ها (مانند نتایج نامفهوم نامیده شده) را بیان کنیم و یک تکنولوژی که بتواند این قوانین را بسیار مؤثر اجرا کند.. Ls = [m, j, a, u] ضمیمه‌ها درحال حاضر تلاش در راستای توسعه این زبان برای گسترش قابلیت‌های برنامه‌سازی در جهات مختلف صورت می‌گیرد که این قابلیت‌ها عبارتند از محدودیت‌های برنامه‌نویسی منطقی (CLP بیشتر در تنظیمات صنعتی مانند جدول‌های زمان‌بندی)، برنامه‌نویسی شی گرای منطقی (OOLP)، همزمانی، منطق خطی و قابلیت همکاری با پایگاه‌های دانش. این محدود به روابطی است که ممکن است طبقه‌بندی شوند و شرایط ترکیب را اجازه ندهند. همچنین پشتیبانی از برخی از الحاقات را به Prolog از جمله محدودیت‌های برنامه‌نویسی بیش از یک دامنه محدود، با استفاده از تجزیه grammars بند تصریح شده، و یک سیستم‌عامل و رابط را داراست. کامپایلر تبدیل کد منبع را تبدیل به بایت کد می‌کند که می‌تواند توسط یک دستگاه مترجم یا مفسر وارون انتزاعی آن را به کد اجرایی رایج تبدیل کند. | ## جمع‌بندی | مجموعه مقالات کنفرانس در سال ۱۹۷۷ در سمپوزیوم هوش مصنوعی و زبان‌های برنامه‌نویسی، ص ۱۰۹–۱۱۵.