تبلیغات
وبلاگ هوش مصنوعی موسسه آموزش عالی خیام مشهد - تكنیك ها وزبانهای برنامه نویسی هوش مصنوعی - قسمت چهارم

5-قابلیت خواندن برنامه و مستندسازی آن

به دلیل اینكه اغلب برنامه های AI به طور گسترده ای از طریق خودشان توصیف می شوند ولی این نكته حائز اهمیت است كه كد بتواند قابل خواندن و قابل مستندسازی باشد. در عین حالیكه هیچ نوع جایگزینی برای محتوی زبانهای معمول در كد وجود ندارد، ولی با این حال زبـــان هـــای AI همـــراه بـا Moduleهای با ساختار سطح بالا باعث ساده شدن این عمل می شوند.

6-مفسرها

بیشتر زبانهای AI قبلاً ترجمه شده هستند نه اینكه در طول برنامه بخواهند ترجمه شوند. این بدان معنی است كه برنامه نویس لازم نیست به مدت طولانی هر زمان كه كد تغییر كرد برنامه را تعریف مجدد كند.

با توجه به مسائل عملكردی در ترجمه كد، زبانهای AI مدرن به Module های ویژه اجازه تعریف مجدد برای یك موقعیت متوسط را می دهند كه از این طریق برنامه های سطح بالاتر بهتر تعریف می شوند. علاوه بر این بسیاری از كاربردها به برنا مه ها اجازه تكمیل شدن نهایی برنامه ها را می دهند.

7-محیطهای توسعه

زبانهای جدید AI در برگیرنده محیطهای برنامه ریزی می شوند كه ابزارهای ایجاد كلی و یا بخشـــی از برنامه را فراهم می كنند.بسیاری از كاربردهای زبانی شامل ویرایش هوشمند می شــوند كه اشتباهات را به عنوان یك كد نوشتاری در نظر می گیرد. به دلیل پیچیدگی برنامه های AI و مشكل بودن پیش بینی عملكرد هر سیستم تولید، اهمیت این پشتیبانی های سهل نمی تواند قابل تصور باشد.

Dynamic Binding and constraint propagation

زبانهای معمول نیاز به این دارند كه بیشتر برنامه های مرتبط با آن در یك مدت زمان خاص تشخیص داده شوند.

شامل اتصال دادن متغیرها به محیط حافظه و انتقال روش های به نام هایشان می باشد. با این حال بسیاری از روش های برنامه نویسی پیشرفته مثل، برنامه نویسی های شیء گرا نیاز به این اتصال ها برای تشخیص دینامیكی دارند.

برنامه های Prolog و LISP پشتیبان قیدگذاری دینامیكی هستند. از یك نقطه نظر AI یكی از مهمترین منافع قیدگذاری دینامیكی پشتیبانی از برنامه نویسی ساختاری است. اغلب مسائل مربوط به یك برنامه AI نیـــاز به ایــــن دارد كه ارزش های مشخصه های خاص ناشناخته باقی می ماند تا زمانی كه اطلاعات لازم جمع آوری شوند.

این اطلاعات ممكن است به گونه یك سری از ساختارها بر اساس ارزش ها باشد كه یك متــغیر از آن انتظار دارد. هم چنانكه ساختارها جمع شوند یك سری از احتمالات كاهش می یابد و در نهایت به یك راه حل منتهی می شود كه تمامی ساختارها را تحت پوشش مطلوب قرار می دهد.

یك نمونه ساده از این نظریه ممكن است در یك سیستم تشخیص پزشكی دیده شود كه اطلاعات دربارة نوع بیماری مریض جمع آوری می شود تا زمانی كه اطلاعات مربوطه محدود به نوع خاصی از بیمار شوند زبان برنامه نویسی مقایسه ای این روش از نوع متغیر قیدگذاری اولیه یا توانایی حصول یك متغیر نامركب می باشد در حالیكه آن را در كد برنامه جمع می كند.

LISP و PROLOG به متغیرها اجازة ترجمه وافزایش غیرمركب را می  دهند، در حالیكه توصـــیف ارتبـــاطات و وابستگی های بین این متغیرها و دیگر واحدهای برنامه را انجام می دهد. این موجب كاربرد آسان و طبیعی نوع قید می شود.

 

6.   تعاریف مشخص و واضح

لازم است كه زبانهای AI همراه با زبانهای دیگر برنامه نویسی برای توسعه گسترده كامل و در عین حال منطقی سیستم، به كار گرفته شوند.

متأسفانه زبانهای برنامه نویسی معمول مثل Fortran و پاسكال دارای تعاریف مشكل و پیچیده ای هستند این موارد می تواند ناشی از واقعیت خود زبان باشد كه اصولاً دارای خصوصیات ساختاری سطح بالایی در كامپیوتر دارند و در خودشان سیستم های فیزیكی و پیچیده ای دارند. به دلیل اینكه زبانهای AI دارای اساس و پایه ریاضی هستند مثل PROLOG و LISP ،‌آنها می بایستی معانی ساده تری باشند كه دارای قدرت و ظرافت نهفته در ریاضی باشند.

این موجب می شود كه این زبانها عمدتاً برای تحقیقات در محدودة به كارگیری دانش ابزارهای زبان، ایجاد برن امه درست،‌و اتوماتیك كردن تأثیر گذاری كد، مفید واقع شوند.

بقیه این مقاله در ادامه مطلب

همـــچنین بـــاید توجه داشت كه گر چه عملكرد بسیاری از برنامه های AI كاملاً پیچیده می باشد ولی كدی كه دارای این عملكرد است باید ساده و مشخص باشد.

بلوك های بزرگ مركب و پیچیده با كد مشخص دارای AI مناسب نمی باشند یك زبان خوب توصیف شده،‌یك ابزار مهم برای دریافت این اهداف می باشد.

 

خلاصه ای دربارة LISP و PROLOG

به وسیله برآورده كردن نیازهای گفته شده، LISP و PROLOG هر دو دارای زبانهای برنامه نویسی غنی و كاملی هستند وقتی كه این زبانها را فرا می گیریم، دانشجو در ذهن و فكر دربارة روشهایی كه آنها به وسیله ویژگیهای خاص هر زبان پشتیبانی می كنند، نیازها را نگه داری می كنند.

PROLOG

PROLOG یكی از بهترین نمونه و مثال یك زبان برنامه نویسی منطقی است. یك برنامه منطقی دارای یك سری ویژگیهای قانون و منطق است . PROLOG از محاسبة اولیه استفاده می كند. در حقیقت خود این نام از برنامه نویسی PRO در LOGIC می آید یك مفسر برنامه را بر اساس یك منطق می نویسد. ایده استفاده توصیفی محاسبه اولیه برای بیان خصوصیات حل مسئله یكی از محوریت های مشاركتPROLOG می باشد كه برای علم كامپیوتر به طور كلی و به طور اخص برای زبان برنامه نویسی هوشمند مورد استفاده قرار می گیرند. نفع اسفتاده از محاسبه اولیه برای برنامه نویسی شامل یك ساختار ظریف و ساده و قابل معنی می شود.

به دلیل همین خصوصیات است كه PROLOG به عنوان یك محرك اصلی و مفید برای تحقیقاتی مثل موارد برنامه نویسی آزمایشی به عنوان یك كد، متغیر كردن برنامه و طراحی ویـــژگیهـای زبان سطح بالا، مطرح است. PROLOG و دیگر زبانهای منطقی یك سبك برنامه نویسی مشخصی را دنبال می كنند كه در آنها برنامه ها به صورت دستورات پشت سرهم و متوالی برای ایجاد یك الگوریتم، نوشته می شوند. این نوع برنامه اصولاً به كامپیوتر می گوید كه «چه چیزی درست است» و «چه چیزی باید صورت گیرد» و این به برنامه نویس اجازه می دهد كه بر روی حل مسئله به صورت یك سری خصوصیات از یك محدوده تأكید كند تا اینكه بخواهد به جزئیات نوشتاری سطح پائین ساختارهای الگوریتمی برای بعد بپردازد.

اولین برنامه PROLOG در مارسی فرانسه در اوایل 1970 به عنوان بخشی از زبان معمول یك پروژه نوشته شد. تئوری نهفته در پشت این زبان در كارهای كوالسكی،‌هیز و دیگران آورده شده است. عمدة  توسعة PROLOG بین سالهای 1975 تا 1979 در بخش هوش مصنوعی دانشگاه ادینبورگ صورت گرفت.

در آنجا یك گروه مسئولیت كاربرد اولین PROLOG را به عهده داشتند كه آقای David H.D مسئول آن بود. این گروه اولین  PROLOG را ساخت كه می توانست محاسبات كلی را انجام دهد. این محصول بر اساس سیستم DEC-10 ساخته شده بود و می توانست در مدهای توصیفی و مقایسه ای كارآئی داشته باشد.

مزیت این زبان به وسیله پروژه هایی كه برای ارزیابی و گسترش قدرت بیان برنامه های منطقی نوشته شده اند،‌ اثبات شده است.

بحث دربارة یك چنین كاربردهایی می تواند در سمینار و گردهمائی های مربوط به زبان برنامه نویسی هوش مصنوعی در سطح بین المللی مطرح شود.

LISP

LISP اولین بار به وسیله JACK MCCARTHY در اواخر دهه 1950 مطرح شد این زبان به عنوان یك مدل پیوسته محاسباتی بر اساس تئوری عملكرد مجدد،‌معرفی شد.

در مقالات اولیة مك كارتی (1960) اهداف خود را مشخص می كند: ایجاد یك زبان سمبولیك تا یك زبان محاسباتی. ایجاد زبانی كه بتوان از آ‌ن به عنوان یك مدل محاسباتی بر اساس تئوری عملكرد مجدد استفاده كرد و از آن بتوان برای تعریف دقیق یك ساختار و تعریف زبانی استفاده كرد.

گر چه LISP یكی از قدیمی ترین زبانهای محاسباتی است كه هنوز فعال است، ولی دقت كافی در برنامه نویسی و طراحی توسعه باعث شده كه این یك زبان برنامه نویسی فعال باقی بما ند.

در حقیقت این مدل برنامه نویسی طوری مؤثر بوده است، كه تعدادی از دیگر زبانها بر اساس عملكرد برنامه نویسی آن واقع شده اند مثل FP ، ML و SCHEME .

این لیست اساس برنامه ها و ساختارهای اطلاعاتی در LISP است، LISP خلاصه شده نام پروسه LIS است. این برنامه یك سری لیست های عملكردی درون ساختاری دارد.

LISP به برنامه نویس قدرت كامل برای اتصال به ساختارهای اطلاعاتی را می دهد.

اصولاً LISP یك زبان كامل است كه دارای عملكردها ولیست های لازمه برای توصیف عملكردهای جدید، تشخیص تناسب و ارزیابی معانی می باشد.

تنها هدف كنترل برنامه بازگشت و شرایط منحصر به فرد است. عملكردهای كامل تر هنگامی كه لا زم باشد در قالب این اصول تعریف می شوند. در طی زمان بهترین عملكردها به عنوان بخشی از زبان می شوند. پروسه توسعة زبان به وسیلة اضافه كردن عملكردهای جدید موجب توسعه محورهای زیادی از LISP می شوند كه اغلب شامل صدها عملكرد بخصوص برای ایجاد اطلاعات كنترل برنامه، خروجی و ورودی، Edit كردن عملكردهای LISP می شوند.

این ارتباطات محركه ای هستند كه به وسیله LISP از یك مدل ساده و ظریف به یك مدل قوی و غنی و عملكردی برای ساخت سیستم های نرم افزاری بزرگ، تبدیل می شود.

یكی ازمهم ترین برنامه های مرتبط با LISP برنامه SCHEME می باشد كه یك تفكر دوباره دربارة زبان در آن وجود دارد كه به وسیله توسعه AI وبرای آموزش اصول مفاهیم علم كامپیوتر مورد استفاده قرار می گیرند.

 

7.   برنامه نویسی شیء گرا

برخلاف برنامه LISP و PROLOG ،‌برنامه شیء گرا ریشه در مهندسی نرم افزار دارد. اولین بار در سال 1970 توسعه یافته كه به وسیله  Alan Kay این تحقیقات صورت گرفته است.

ساخت ایده ها از محرك، كه زبان نروژی تظاهر می كند در سال 1960  و مقاله Symour در استفاده از LOGO برای آموزش كودكان، صورت پذیرفته است.

استفاده از Dyna book برای اولین بار به عنوان یك كامپیوتر، كه افرادی به غیر متخصصان علم كامپیوتر با آن سروكار داشتند.

بـــه دلیل اینكه كاربر افراد معمولی بودند سیستم عملكرد و كاربرد نرم افزار نباید تكنیكی می بود و به سادگی قابل تشخیص بود. راه حل آنها برای این مسئله یك مداخلة گرافیكی است با استفاده از منوها و آیكون های گرافیكی و اشاره گرها، یك موس یا یك سری برنامه ها برای ادیت كردن، داده ها می باشد.

دخالت كاربر در طراحی یك notebook متأثر از طراحی كاربرها برای یك سری كامپیوترهای تخصصی مثل سیستم های به كارگیری كامپیوتر شخصی مثل مكینتاش، ماكروسافت و محل های مربوط به ویندوز می باشد.

در یك برنامه small talk ،‌همه چیز در قالب هدف و یك ساختار قابل محاسبه مرك و قراردادی مطرح می شود. اهداف نه فقط شامل انواع اطلاعات برای محاسبه بلكه شامل انواع روشهای لازم برای محاسبه حالت و وضعیت هدف نیز می شوند.

ارزشهای یك هدف به صورت كلاس ها بیان می شود. اهداف ممكن است اهداف طبقه بندی شده كه توصیف كنندة تمامی مواد یك نمونه باشد و بیانگر نوع ذات و توصیف تما می موارد یا مواردی كه بیانگر یك عضو واحد هستند را شامل شود.

وقتی مواردی از یك نوع اطلاعات به وسیله اهداف توصیف می شود این موارد ذاتاً دارای نوع توصیف و روشهای توصیفی از عملگرهایشان می باشند،‌برای شكل دادن یك عملیات بر روی یك هدف، یك پیام به سمت هدف فرستاده شده كه حاصل روش مناسبی می باشد. به عنوان مثال، اضافه كردن 3 و 4 پیام 4+ به سمت شیء 3 فرستاده می شود و 3 پاسخ می دهد می شود 7  .

به وسیله ایجاد انواع تركیب اطلاعات و عمل بر روی آنها در یك عمل واحد مربوط به هدف، small talk از كد Modular (پیمانه ای) توسعه و نوع كاربرد برای عناصر اطلاعات و كد مربوط به تكثیر آنها، پشتیبانی می كند.

به دلیل اینكه اهداف  small talk در قالب یك كلاس شبكه ای همراه با اهداف كاملاً ویژه كه بخشی از تمامی روش هــای كاملاً كلی است ، بسیار ساده است كه یك ساختار جدید برنامه ای توصیف كنیم كه عملاً با اهداف موجود در برنامه همراه باشد. بنابراین یك برنامه اصولاً می تواند قدرت كامل یك سیستم باشد كه شامل گرافیك،‌بازنگری و ارتباط است.

علاوه بر این روش های توسعه نرم افزاری مثل ارائه اطلاعات و زبانهای نهفته، فشار بر اپراتور و استفاده از كدها از طریق یك گروه اصلی و زبانهای نهفته در قالب یك مدل رایج پشتیبانی می شوند.

زبانهای شیء‌گرا همراه با بسیاری از خصوصیات مندرج در یك كلاس اطلاعاتی، شامل كلاس اصلی و توانایی پاسخ در ساختار اطلاعات می شود به همین دلایل زبانهای شیءگرا در برنامه نویسی AI استفاده می شوند.

محیطهای هیبرید

نیاز به برنامه نویسی اطلاعاتی موجب توسعة تعدادی برنامه نویسی و تكنیك های زبان، شامل سیستم های تولید،‌قوانین و كلاس شیء‌گرا می شود.

یك سیستم هیبرید بیانگر نمونه های چند منظوره در قالب یك محیط برنامه نویسی خاص مــی باشد. گر چه محیطهای هیبرید متفاوت می باشد. ولی عموماً شامل خصوصیات ذیل می شوند.

 1-نمایش شیء گرا از محدوده اشیاء

یك چنین سیستم هایی ذاتاً ویژگیهای كلاس را پشتیبانی می كنند و اغلب شامل یك مكانیسم انتقال پیام برای عكس العمل هدف می باشند.

2-قوانین نمایش اطلاعات neuristic

گر چه چهارچوب اهداف به معنی توصیف طبقه بندی اهداف، می باشند. قوانین به عنوان عمدة نظر توصیف مسائل اطلاعاتی می باشند.

ساختار then …. if ….. مناسب شیوة تخصص انسانی است كه بیانگر پروسة تصمیم گیر است. قوانین دریافت اطلاعاتی از اهداف را دارند كه با استفاده از یك زبان كه مستقیماً در چارچوب یك هدف می خواند و می نویسد و یا به وسیلة استفاده از پیام كه مستقیماً وارد هدف می شود صورت می پذیرد.

3-پشتیبانی از انواع روش های جستجو

بیشتر سیستم های پشتیبانی از جستجوی اولیه و انتهایی حمایت می كنند عموماً بیان یك هدف در قالب جستجویی ،‌تغییر به سمت عقب می باشد . علاوه بر این یك واقعیت تازه دربارة حافظه كاركرد ممكن است ایجاد علت های اولیه از قوانین كند كه به وسیله این واقعیت جدید پشتیبانی می شوند.

4-توصیف دامنة كاربرد عملكرد متقابل و تأثیرات جانبی

یك demon فـــرآیندی اســـت كه به وسیله عملكردهای جانبی بعضی از اعمال مشخص می شود. یك نمونه از استفاده demon كنترل در یك سیستم زمانی است كه بیانگر دوره ای در مانیتور یك چاپگر و یا دیگر وسایل می باشد.

demon به وسیله یك زمان مشخص می شود. محیطهای AI این ایده را توسعه می دهند و باعث ایجاد demon می شوند كه هنگامی كه هدف تولید یا توصیف شود به كار می آیند.

چنین demonهایی برای به زمان نگه داشتن یك نشانگر در پاسخ به تغییر مقدار مورد استفاده قرار می گیرند. Demon های مهم و مطرح اصولاً دارای مقادیری متغیر می باشد كه هنگامی كه ارزش متغیر تغییر كند demon خوانده شده و وقتی كه این اتفاق افتاد demon ایجاد و خلق می شود كه این وقتی اتفاق می افتد كه یك مقدار خلق شده باشد و ارزش ها در قالب گرافیكی فعال می شوند كه این فعالیت می تواند متغیر باشد.

5-تداخلگرهای گرافیكی

اینها شامل یك طیفی از امكاناتی می باشند كه اجازه تداوم و دنبال كردن موارد را می دهند. به عنوان مثال نشانگرهای گرافیكی می توانند ساختار قوانین یك اصل اطلاعاتی را به صورت یك درخت توصیف دهند. یكی از مهمترین خصوصیات محیطهای هیبرید،‌توانائی اتصال با استفاده از demon می باشد كه به صورت یك نشانگر گرافیكی متصل به شیء و هدف می باشد. كه این موجب عملكرد گرافیكی برای بیان زمان واقعی نشانگر می باشد كه در حقیقت بیشتر محیط ها دارای یك پشتیبانی سطح بالای از داده های گرافیكی می باشند.

6-اجتناب از زبانهای زیرین

روشهایی كه در قالب یك زمان خاص یا پاسخگو می باشند به وسیله محیط و یا اغلب اوقات LISP و PROLOG یا حتی  و یا پاسكال توصیف شده اند كه این موجب توصیف طیفی فرآیند اطلاات و هم چنین یك برنامه اطلاعاتی كه طیف وسیعی از زبانهای كه شكل دهنده هندسی، جهت ها و سنسورها و یا دیگر عملكردهایی كه به صورت بهتری در قالب روشهای الگوریتمی به كار گرفته می شود را شامل می شود.

7-توانائی ترجمه اطلاعات جهت اجرای سریعتر یا تحویل روی یك ماشین كوچكتر

وقتی كه برنامه شیء گرا كامل شد. یك محیط كامل و توسعه یافته اغلب ، بلندی است كه به تدریج افول می كند و پائین می آید بیشتر محیط های مدرن AI اجازه كاربرد سریعتر و ساده تر را كه اغلب كوچكتر و ارزانتر است را در یك ماشین ترجمه ایجاد می كنند.

8.   یك نمونه هیبرید

بسیاری از نمونه های مطلوب اصولاً از طریق اشیا، ارتباطات و كنش و واكنش متقابل بین آنها واقع یم شود در شكل زیر یك نمونه اتصال به وسیله باطری همراه با یك سوئیچ برای یك لامپ (شكل 364) در نظر گرفته شده است.

لامپ، باطری و سوئیچ ممكن است هر كدام به وسیله كلاسها بیان شوند كه بیانگر ویژگیهای باطری، سوئیچ و لامپ باشد . مشخصه های الكترونیكی شكل 2 ممكن است به عنـــوان موارد بخصوصی از این كلاس های كلی بیان می شوند. توجه داشته باشید كه نمونه ها دارای مقادیر نمونه ای مربوط به كلاس خاص شیء مربوط به خود می شوند به عنوان مثال اگر سوئیچ 1 در حالت خاموش قرار گیرد. قسمت كنترل كه مربوط می شود به لامپ 1 تحت تأثیر قرار خواهد گرفت كه این موارد در شكل زیر نشان داده شده اند.


 

 

 

 

 


 

یك قانون ممكن است در اینجا به وجود بیاید كه :

اگر نور وارد AND نشود، سوئیچ AND را بسته و باطری درست است بنابراین باید به قسمتی كه ممكن است آسیب دیده باشد مراجعه كرد.

در نمایش هیبرید قوانین دارای ویژگیهایی هستند كه بیشتر بیانگر مقدار اهمیت كلاسها و اشیاء می باشند.كه در شكل 3 به آن اشاره شده است. این قانون ممكن است به عنوان بخشی از قانون اولیه سیستم در تلاش برای به جریان انداختن این مدار باشد كه در جای دیگر برای راه اندازی سوئیچ كنترل برای حالات متغیر است.

9.   انتخاب زبان كاربردی

همانگونه كه هوش مصنوعی به مرحله رشد می رسد وقابلیت های خود را در طیف وسیعی از مسائل كاربردی به اثبات می رساند اعتماد به LISP و PROLOG نیز مدنظر می باشد، ‌موارد مربوط به توسعة نرم افزاری، همانند نیاز به تداخلگرها به صورت ساده وآ‌سان همراه با یك كد منطقی تا استفاده از AI در Moduleهای كوچكتر و یا بزرگتر در برنامه ها و نیاز به ایجاد توسعه استاندارد متأثر از مشتریان دولتی و یا گروهی موجب توسعة سیستم های AI در انواع زبانهای مثل C ،  , C++ Java و Smalltalk شده است.

كــه زبــانهای LISP و PROLOG كار خود را در محدودة توسعه و Prototype سازی سیستم های  AI در صنعت و دانشگاهها دنبال می كنند.

یـــك اطـــلاعات و دانش كاربردی مربوط به این زبانها به عنوان بخشی از مهارت هر برنامه نویس AI می باشد. علاوه بر این، این زبانها به عنوان زمینه ای برای بسیاری از این خصوصیات می باشند كه در ادامه همكاری با زبانهای برنامه نویسی جدید می باشند.

احتمالاً بهترین نمونه از این زبانها Java میباشد كه متناسب با استفاده اولویت دینامیكی اش، دارای مدیریت حافظه اتوماتیك و دیگر خصوصیاتی است كه در زبانهای كه ترجمه شده وجود دارد به نظر می رسد كه دیگر زبانهای برنامه نویسی برای رسیدن به حد مطلوب از استانداردهای این زبانها استفاده می كنند.

هم چنانكه این تكامل صورت می پذیرد و ادامه می یابد دانش مربوط به LISP و PROLOG یا Small talk و روش های برنامه نویس قادرند تنها از نظر مقدار توسعه یابند.

بنابراین، از اینكه از یكی از این زبانهای AI استفاده كنیم یا خود را در برنامه نویسی با زبانهای C++ و C و Java یا یكی از زبانهای رقیب پیدا كنیم راضی و قانع خواهیم بود.


 

منابع و مآخذ

كتاب Artificial intelligence structures & strategies for complex problem solving
نوشته George  F.Luger & william A. Stubble field
چاپ Wesley long man Inc, 2000


  • آخرین ویرایش:-
آخرین پست ها