ویژوال پرولوگ

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به ناوبری پرش به جستجو


ویژوال پرولوگ
تصویر IDE
تصویر IDE
توسعه‌دهنده(ها)مرکز توسعه‌ی پرولوگ
نسخهٔ پایدار
7.5، ساخنه شد 7501 / ۸ دسامبر ۲۰۱۴؛ ۵ سال پیش (۲۰۱۴-۱۲-08)
سیستم‌عاملمایکروسافت ویندوز /ویندوز ویستا/ویندوز ۷/ویندوز ۸
گونهزبان برنامه‌نویسی
پروانهاختصاصی
وبگاهwww.visual-prolog.com

ویژوال پرولوگ ،که در گذشته با اسم‌های PDC Prolog و Turbo Prolog شناخته شده‌بود،یکی از قوی‌ترین طبقه‌بندی‌های گسترش یافتهٔ پرولوگ شیءگرا است.به عنوان مثال Turbo Prolog توسط بورلند به بازار عرضه شد،اما اکنون توسط شرکت Danish،مرکز توسعهٔ پرولوگ (PCD)،توسعه یافته و به بازار عرضه شد.ویژوال پروگ می‌تواند کاربرد-واسط گرافیکی کاربر مایکروسافت ویندوز، کاربرد کنسول[۱]، DLLs[۲](پیوندهای پویای کتابخانه‌ها)،و برناهای-CGI را بسازد.ویژوال پرولوگ همچنین می‌تواند با استفاده از ODBC[۳] به الگوی جزء تشکیل دهنده شیء و پایگاه داده‌ها پیوند برقرار کند.
زبان‌های منطقی به‌طور سنتی تفسیری هستند، ولی ویژوال پرولوگ کامپایلری است که این پیشرفت مهمی را در تبدیل سنتی خطاهای معمولیِ زمان اجرا به هشدارهای کامپایلر،فراهم کرده‌است،که یک استحکام [۴] بهتری از کاربردهای خاتمه یافته را تضمین می‌کند.
هستهٔ ویژوال پرولوگ مانند پرولوگ سنتی بندهای horn[۵]، نوع دادهٔ جبری [۶]، تطبیق الگو و الگوریتم‌های غیر قطعی[۷] کنترل شده هستند،و بر خلاف پرولوگ سنتی،ویژوال پرولوگ همواره از نوع دادهٔ ایستا و شدید است.

تاریخچه‌ی انتشار بصورت مختصر[ویرایش]

نسخه 7.5 شامل سرور http و مولد تجزیه کنندهٔ (1)LALR است. (همچنین نگاه کنید به ویژگی‌های جدید ویژوال پرولوگ 7.5)
نسخه 7.4 می‌تواند کد ویندوز 64بیتی را تولید کند. (همچنین نگاه کنید به ویژگی‌های جدید ویژوال پرولوگ 7.4)
نسخه 7.3 کلاس‌های ژنریک و رابط‌ها را معرفی کرد.(نگاه کنید به برنامه‌های ژنریک[۸])،حفاظت از مانیتورها (همچنین نگاه کنید به ویژگی‌های جدید ویژوال پرولوگ 7.3)
نسخه 7.2 گزاره‌های ناشناس را معرفی کرد.(وابستگی منطقی با تابع‌های ناشناس) و فضای نام‌ها (namespaces).(همچنین نگاه کنید به ویژگی‌های جدید ویژوال پرولوگ 7.2)
نسخه 7.0 پارامترهای چندریختی را معرفی کرد.
از نسخهٔ 6.0 زبان کاملاً شیءگرا شد.

مثال هانوی[ویرایش]

در مثال 'برج هانوی'،موتور استنتاج پرولوگ دریافت که چگونه یک پشته شامل تعدادی از دیسک‌های به تدریج کوچک‌تر را در مسیر شرح داده شده یکی یکی از قطب چپ ("left") به قطب راست ("right")جابجا کند،به این معنی که قطب میانی ("centre") به عنوان راه عبور است،طوری که هیچ دیسک بزرگ‌تری روی دیسک کوچک‌تری وجود نداشته باشد.به عنوان استدلال اولیه،استنتاج "هانوی" یک عدد صحیح برابر با تعداد دیسک‌ها اختیار می‌کند.در واقع،ویژوال پرولوگ به ویژه برای مسائل پیچیده همانند برنامه‌ریزی منابع و... مناسب است.همانطور که مثال نشان می‌دهد،ویژوال پرولوگ می‌تواند برای برنامه‌نویسی سریع در سطح کوچک استفاده شود،ولی اکثراً برای کاربردهای بزرگ قدرت صنعتی بکار گرفته می‌شود.

class hanoi 
   predicates 
       hanoi : (unsigned N). 
end class hanoi

implement hanoi 
   domains 
       pole = string.

   clauses 
       hanoi(N) :- move(N, "left", "centre", "right").

   class predicates 
       move : (unsigned N, pole A, pole B, pole C). 
   clauses 
       move(0, _, _, _) :- !. 
       move(N, A, B, C) :- 
           move(N-1, A, C, B), 
           stdio::writef("move a disc from % pole to the % pole\n", A, C), 
           move(N-1, B, A, C). 
end implement hanoi

goal 
   console::init(), 
   hanoi::hanoi(4).

برنامه‌های کنسول[ویرایش]

برای آشنایی بیشتر با برنامهٔ کنسول به مثال آورده شده توجه کنید:
میخواهیم فاکتوریل یک عدد را حساب کنیم،دستورالعمل‌های زیر را دنبال کنید

  • یک پروژهٔ جدید ایجاد کنید . کادر project setting را با توجه به اطلاعات زیر تکمیل کنید:
General
project name:facfun
UI Strategy:console.

یک عدد در قسمت اعلان تایپ کنید و فاکتوریل آن را دریافت خواهید کرد.

implement facfun
class predicates
  fact:(integer N,integer Res)procedure(i.o).
clauses
   classinfo("facfun","1.0").

fact(N,1):-N<1,!.
fact(N,N*F):-fact(N-1,F).

run:-console::init(),
   fact(stdio::read(),F),stdio::write(F),stdio::nl.
end implement facfun
goal
  mainExe::run(facfun::run).

توجه: برای آزمایش و اجرای یک برنامهٔ کنسول از گزینه Build/Run in Window استفاده کنید نه Execute.

ویدئوهای آموزشی ویژوال پرولوگ[ویرایش]

کتاب‌های مرتبط با ویژوال پرولوگ[ویرایش]

جستارهای وابسته[ویرایش]

منابع[ویرایش]

مشارکت‌کنندگان ویکی‌پدیا. «Visual Prolog». در دانشنامهٔ ویکی‌پدیای انگلیسی.

پیوند به بیرون[ویرایش]

  • en.wikipedia.org