زبانهای هوشمند!
زبانهای هوش مصنوعی ابزار اصلی بررسی و ساخت برنامه های رایانهای است که می تواند در شبیه سازی فرآیندهای هوشمند مانند یادگیری، استدلال و فهم اطلاعات به کار برود.
هر چند زبان رایانه برای استفاده محاسبات و بررسی ریاضی روی اعداد طراحی شده بود، اما مهندسان این حوزه دریافتند که با رشتهای از بیتها میتوان اشیای دلخواه را نیز نمایش دهند. عملیات روی این نمادها و سمبل ها می تواند به عنوان قوانینی در جهت ساخت یا ارتباط بین آنها به کار رود. این محاسبات منطقی به عنوان الگوریتمهایی که هر گونه اطلاعات را پردازش میکند، میتواند برای شبیه سازی هوش انسان به کار برود.
در زمینه هوش مصنوعی با توجه به این که در بسیاری از زمینههای خاص گرایش وجود دارد، لذا روشهای ذهنی نیز باید به وسیله تولید و آزمون (Generate and test) توسعه یابد. در برنامه نویسی Articial Intelligence ) AI) پیاده سازی در واقع جزئی از پردازش مشخصات مسأله است.
با توجه به مشخصات محاسبات رایانهای و برنامه نویسی هوشمند 2 روش جدید برنامه نویسی به وجود میآید، روش برنامه نویسی تابعی و روش برنامه نویسی منطقی که هر دو بر مبنای ریاضیات و نظریه توابع بازگشتی طرح ریزی شده است.
اولین زبان برنامه نویسی AI که هنوز به طور گسترده استفاده میشود، زبان برنامه نویسی LISP است که نظریه توابع ریاضی در اواخر دهه 1950 توسط جان مک کارتی به وجود آمد. اوایل دهه 1970 یک الگوی برنامه نویسی جدید به نام برنامه نویسی منطقی بر اساس محاسبات گزارهای رایج شد. اولین و مهمترین زبان برنامه نویسی منطقی prologاست که توسط آلن کولمرائور و فیلیپ راسل توسعه یافت. مسائل در prolog به صورت حقایق و قوانین منطقی برای استدلال و استنتاج بیان می شود.
برنامه نویسی تابعی
یک تابع ریاضی نگاشتی از یکی مجموعه (دامنه) به مجموعه دیگر (برد) است. تعریف یک تابع توصیفی این نگاشت است که یا به صراحت به وسیله شمارش یا به طور ضمنی به وسیله یک عبارت است.برنامه نویسی در یک زبان تابعی شامل ساختمان تعریف توابع و به کاربردن رایانه برای ارزیابی عبارات است، یعنی به کاربردن توابع با آرگومان های واقعی. کار اصلی رایانه، ارزیابی توابع فراخوانی شده و چاپ حاصل مقادیر تابع است. یک خاصیت برنامه نویسی تابعی علاوه بر انعطاف پذیر بودن آن، این است که اگر عبارت به خوبی مقداردهی شود، آن گاه توالی انجام ارزیابی در نتایج آن تاثیری ندارد.
بنابراین، نتیجه ارزیابی یک عبارت تنها مقدار آن است و درواقع در مفهوم زبان های دستوری متغیر وجود ندارد و روشهای اصلی کنترل توابع تکرار (بازگشتی) و به عبارتی شرطی است. برنامه نویسی تابعی خصوصیات توابع مرتبه بالا را پشتیبانی میکند. توابع مرتبه بالا تعریف تابعی است که اجازه می دهد آرگومان ها یا مقدار بازگشتی توابع، مقدار خروجی خود تابع باشد.
LISP اولین زبان برنامه نویسی تابعی است که با استفاده از لیستهای پیوندی (Linked List) به عنوان ساختار مرکزی دادهها ابداع شد.
اولین نگارش محیط برنامه نویسی LISP سال 1960 آماده شد که شامل یک مفسر، یک کامپایلر و مکانیزم تخصیص حافظه و برگشت حافظه پویا بود. یک سال بعد اولین زبان استاندارد با نام LISPY.S معرفی شد، پس از آن تعدادی از نسخه ها و محیطهای برنامه نویسی LISP توسعه یافتند، مانند: InterLISP، MacLISP، FranzLISP و... . هرچند در بعضی از جزئیات خاص متفاوتند، ولی هسته اصلی ساختار جملات (Syntax) و ارتباط بین آنها (Semantic) اساساً یکسان است. پراستفادهترین نسخههای LISP Common ، LISP و Schema هستند. در کنار LISP تعدادی از زبانهای برنامه نویسی تابعی دیگر نیز توسعه یافتند، برای مثال ML که برگرفته از Language Meta است، یک زبان برنامه نویسی تابعی با دامنه ایستا (Static) است و تفاوت اصلی آن با زبان LISP در Syntaxk (گرامر) آن است. بیشتر شبیه زبان برنامه نویسی پاسکال است.
Haskell نیز دارای خاصیت گرامری مشابه با ML با دامنه ایستاست و تفاوت آن زبان ML در آن است که شامل هیچ گونه ویژگی دستوری نیست. لیستها رایجترین ساختار داده در Haskell هستند.
برنامه نویسی منطقی
دهه 1970 یک الگوی دیگر برای محاسبات در برنامه نویسی AI ارائه شد. Prolog یا همان برنامه نویسی منطقی (Programming Logic) اولین زبان برنامه نویسی بر مبنای منطق است. اساس Prolog شامل یک روش برای مشخص کردن گزاره های محاسبات گزارهای و تصمیمات محدود است. برنامه نویسی در Prolog شامل مشخصات حقیقی در مورد اشیا و ارتباط بین آنها و قوانینی است که این رتباطات را مشخص میکند. Prolog با برنامه نویسی تابعی در نحوه محاسبه نتیجه کاملا متفاوت است، زیرا نحوه محاسبه نتیجه را مشخص نمیکند، بلکه تنها ساختاری منطقی نتیجه را ارائه می دهد.با استفاده از Prolog برنامه نویسی میتواند در یک سطح خیلی خلاصه و کاملا نزدیک به مشخصات یک مساله انجام گیرد. Prolog هنوز هم تهیه زبان و برنامه نویسی منطقی است.
Prolog در بیشتر زمینههای AI مانند سیستمهای خبره، پردازش زبان طبیعی به طور موفقیت آمیزی
استفاده شده که امتحان خود را در زمینه های دیگری مانند سیستم های مدیریت پایگاه داده نیز پس داده جملات برنامههای Prolog شامل مجموعه ای از جملات به نام بند (Clause) هستند که برای نمایش دادهها و برنامه ها استفاده میشوند.
یک واژه میتواند یک ثابت (نام های نمادین یا حروف بزرگ)، یک قیفر (نمادهایی که با حروف کوچک شروع میشوند مانند (xیا یک تابع باشد. فرآیند استنتاج Prolog شامل 2 مولفه اصلی است:
روش جستجو Search : برای جستجو میان حقایق و قوانین در پایگاه دانش به کار می رود.
یکسان کننده Unier: برای تطبیق الگو و باز گرداندن اتصالاتی که یک عبارت صحیح می سازد، کاربرد دارد. یکسان سازی در Prolog بسیار مهم و دارای پیچیدگیهای خاص خود است و معمولا روی 2 واژه به کار می رود و سعی می کند با ترکیب آن دو یک واژه جدید تشکیل بدهد. Prolog از یک روش جستجوی عمقی (Depth first search) استفاده می کند. که عمقی این روش برای پیمایش فضای جستجو به کار می رود.
بخش دانش و زندگی تبیان
منبع: jamejamonline