نمايش پست تنها
قديمي ۰۷-۱۰-۱۳۸۸, ۰۵:۴۹ بعد از ظهر   #2 (لینک دائم)
Astaraki Female
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Smile ادامه

چالش در برنامه نويسي AI ، پشتيباني برنامه ريزي كشفي است . در بين خصوصياتي كه يك زبان برنامه نويسي بايد ايجاد كند موارد ذيل وجود دارد :

1- Modularity

2- قابليت گسترش

3- ساختارهاي سطح بالاي مفيد

4- پشتيباني از Prototype سازي اوليه

5- قابل خواندن بودن برنامه

6- مترجم ها

7- پشتيباني نرم افزاري براي برنامه نويسي جستجويي

ما اين عناوين را در پاراگراف هاي زير مورد بحث و بررسي قرار خواهيم داد :



1-قابليت Modularity كدها

حائز اهميت است كه يك زبان براي برنامه نويسي كشفي از يك سري تعاريف متوالي مربوط به كدها پيروي كند اين بيانگر اين است كه مسائل مي بايستي شامل قسمت هاي كوچك و مطلوب باشد نه بدنه هاي پيچيده كه بندي شده ارتباط متقابل بين محتوي برنامه بايد محدود باشد و به خوبي نيز توصيف شده باشند.

اين شامل پرهيز از تأثيرات جانبي و متغيرهاي جهاني (global) و اطمينان از رفتار هر Module واحد در شناخت برنامه باشد كه بتواند به خوبي قابل تشخيص باشد.

برنامه هاي LISP به صورت مجموعة انتخابي از عملكردهاي واحد مي باشند در يك برنامه LISP كه به صورت مطلوب نوشته شده باشد هر عملكرد كوچك مي باشد كه يك كاركرد خوب و واحد را شكل مي دهند.

بنـــابراين اغلب جايگزيني و اصلاح علت هاي هر كمبودي، ساده مي باشد. روش هاي اندازه گيري متغير LISP و پارامترهاي مربوط به آن اغلب براي كاهش تأثيرات عملكردي به كار گرفته مي شوند. متغيرهاي جهاني،‌گر چه به وسيله زبان پشتيباني مي شوند ولي استفاده در كدهاي متناسب LISP نهي شده اند.

علاوه بر اين LISP دسته بندي شي گرا را از طريق سيستم شيء LISP به صورت CLOS پشتيباني مي شود.

در PROLOG واحد اصلي برنامه روش و قانون است، قوانين PROLOG همانند عملكردهاي LISP كوچك و ويژه هستند.

به دليل اينكه محدوده و قياس متغيرها در PROLOG اغلب محدود به يك شيوه و قانون شده اند، و زبان اجازه تغييرات جهاني را نمي دهد. توصيف كردن اصولاً ساده مي باشد.

LISP و PROLOG شامل مشخصه هاي سهل و آساني مي باشند كه هنگامي كه با يك ساختار برنامه مشخص تركيب شوند، موجب آسان شدن پرداخت آن مي گردند.



2-قابليت گسترش

اصولاً برنامه نويسي جستجويي در قالب يك پروسه داراي ساختار سطح بالاي برنامه اي است كه به گونه كد توسعه يافته است. يك روش مهم براي انجام اين پروسه در قالب سيستماتيك و با ساختار مناسب،‌توسعة يك زبان نهفته در ‌آن است.

اغلب امكان توصيف شكل نهايي يك برنامه AI وجود ندارد،‌اما امكان تشخيص ساختارهاي سطح بالا و مفيد براي كشف و بررسي دامنه مسئله وجود دارد. اين ساختارها مي توا ند شامل الگوهاي مناسب ، كنترل كننده هاي جستجو وعملكردهاي توصيف يك زبان توصيفي باشد.

اصـــولاً ايـــن نظـــريه كه مي گويد اگر شما ساختار نهايي يك برنامه را تشخيص ندهيد مي بايستي سعي كنيد كه ساختار زبان را توصيف كنيد كه به شما كمك خواهد كرد كه آن ساختار را توسعه دهيد.

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

LISP و PROLOG و همچنين توسعة شيء گرا آنها همانند CLOS همگي موجب مي شوند كه توصيف سادة اهداف، پيش بيني ها و عملكردهاي جديد ، صورت پذيرد.

هنگامي كه توصيف صورت پذيرفت، اين ساختارهايي كه كاربر ايجاد كرده داراي رفتاري شبيه به ساختارهاي اساسي زبان مي باشند.

اين زبانها به وسيله توسعة توانايي هاي اصولي از ابتدا تا حل آن برنامه ريزي مي شوند. دراين صورت،‌گفته مي شود كه برنامه هاي معمول، ساختاربندي مي شوند ولي برنامه هاي AI رشد و توسعه مي يابند.

اين مورد با تشخيص سريع مقايسه مي شود كه در اين مورد زبانهاي معمولي مابين خصوصيات ساختاري و برنامه هاي توسعه يافته، كاربردي واقع مي شوند.

در يك برنامه ما ممكن است عملكردهاي جديدي را تعريف كنيم اما ساختار آنها بسيار محدودتر از ســـاختارهاي از قبل ساخته شده است. اين موجب محدوديت انعطاف پذيري و استفاده از اين توسعه و گسترش ها مي شود.

LISP و PROLOG همچنين موجب ساده شدن نوشتن توصيف متغيرهاي ويژه يك زبان خاص مي شوند. در LISP برنامه ها و اطلاعات به گونه ساختاري ليست مي شوند. اين باعــث ســادگي نوشتن برنامه اي مي شود كه از كد LISP به عنوان داده (Data) استفاده مي كنند كه در اين صورت باعث ساده تر شدن توسعه، تصويفي مي شوند.

بسياري از زبانهايي كه از نظر سابقه و همچنين اقتصادي در نوع زبانهاي AI حائز اهميت مي باشند، مثل PLANNER و ROSIE و KEE و OPS بر اساس توانائي هاي LISP ساخته مي شوند.

PROLOG اين توانائي ها را در قالب تعدادي “meta – predicates” كه قابل پيش بيني براي تركيب با ديگر مشخصه هاي PROLOG باشند. ايجاد مي كند كه در اين صورت باعث ساده شدن نوشتاري آن مي گردد.

همراه با LISP تعدادي زبانهاي سطح بالا AI بر اساس PROLOG ساخته شده اند كه از اين روش استفاده مي كنند.



3-وجود ساختارهاي مفيد سطح بالا

برنا مه نويسي جستجويي به كمك يك ساختار قوي سطح بالا در زبان به وجود مي آيد،‌اين ساختارهاي قوي و كلــــي به برنامه نويس اجازه توسعه سريع ساختارهاي ويژه براي بيان اطلاعات توصيفي و كنترل برنامه را مي دهند.

در LISP اينها شامل اصول اساسي نوع اطلاعاتت مي شود كه موجب ايجاد ساختارهاي پيچيده اطلاعاتي و عملكردهاي قوي براي توصيف عمليات بر روي آ‌نها مي شود. به دليل اينكه LISP قابل گسترش مي باشد و براي چندين دهه است كه مورد استفاده قرار مي گيرد. مهمترين و قوي ترين عملكردهاي توصيفي LISP همان خصوصيات استاندارد زباني آنها مي باشد. ويژگيهاي معمول LISP شامل جيدها عملكرد براي ايجاد ساختارهاي اطلاعاتي، ساخت تداخلگرها و قابليت Edit كردن ساختارهاي LISP مي شوند.

PROLOG به عنوان يك زبان مقايسه اي كوچك مطرح است كه بخشي از آن به دليل نو بودن و بخش ديـــــگر به دليل عدم سادگي و كامل بودن آن است با اين حال PROLOG به كاربرها اجازة ايجاد پيشگوئي هاي به خصوص را مي دهد و مفيدترين اينها راه خود را براي استاندارد شدن باز كرده اند.



4-پشتيباني براي ساخت Prototype اوليه

يكي از روش هاي برنامه نويسي جستجويي و مهم، Prototype سازي اوليه مي باشد. در اينجا برنامه نويس يك راه حل سريع براي مسئله پيدا مي كند و از آن براي جستجو فضاي مسئله استفاده مي كند. وقتي كه مسئله مورد بررسي قرار گرفت و روش حل آن مشخص شد، Prototype كنار گذاشته مي شود و يك برنامه نهايي كه تأكيد آن بر روي صحت و مؤثر بودن مي باشد، ساخته مي شود. گر چه مشكل است كه چيزهايي را كه زياد مورد استفاده قرار مي گيرند تا براي ساخت يك برنامه كامپيوتري به كار روند، كنار گذاشت، ولي انجام چنين كاري باعث صرفه جوئي در زمان و بهبود كيفيت نهائي كار مي شود. ساخـــتارهاي ايجاد شده به وسيله زبانهاي AI عمدتاً باعث افزايش سرعت توسعة Prototypeها مي شوند.

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
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
elit (۰۷-۲۰-۱۳۹۱), nasersalehiazar (۰۸-۲۵-۱۳۸۹), XxxxX.100110 (۰۲-۳-۱۳۹۱)