تبليغاتX
تحقیقات یک دانشجو معلم محقق

تحقیقات یک دانشجو معلم محقق

خدایا به ما زیستنی عطا کن که در لحظه مرگ بر بی ثمری لحظه ای که برای زیستن گذشته است حسرت نخوریم

سخن نويسنده با بازديدكننده گرامي:

 

با سلام خدمت شما بازديد كننده محترم

اينجانب جواد احمدي نويسنده اين وبلاگ به عنوان عضو بسيار كوچكي از جامعه علمي كشور و به عنوان يك دانشجو قصد دارم بوسیله این وبلاگ مقداری از اطلاعات جدید در مورد علوم مختلف و نتایج پژوهش هایم را در اختیار شما برادر یا خواهر ارجمند قرار دهم.برای دریافت هفتگی اطلاعات وبلاگ در صورت علاقمندی می توانید در بخش خبرنامه عضو شوید.در صورت تمایل می توانید مطالب جالب علمی برایم بفرستید تا با نام خودتان در وبلاگ ثبت کنم. لطفا جهت بهبود خدمات رسانی بنده را از نظرات پیشنهادات و انتقادات خودتان بهره مند سازید.

      ***  این وبلاگ صبح روز جمعه هر هفته بروز می شود***            

+ نوشته شده در  سه شنبه سی و یکم مرداد 1385ساعت 11:35 قبل از ظهر  توسط جواد احمدی  | 

چكيده:

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

آموزش وتربيت نيروي انساني براي تغيير نگرش و روش

همان گونه كه مي دانيد شد علي رغم تحولات انفجاري اطلاعات ودانش درجهان متأسفانه نيروي انساني درآموزش وپرورش ايران از دانش و اطلاعات حرفه اي جديد تا اندازه اي محروم است، معلمان گرامي به علت تنگناهاي اقتصادي ويأس  ونااميدي ناشي از عدم توجه دولت ( دولت به معناي عام) به دغدغه هاي آنان فرصت و انگيزه ي پيگيري مسايل آموزشي  پيدا نكرده ونمي كنند .ميانگين سن معلمان ايران روزبه روز بالاتر مي رود وقطعاً‌ انرژي ذخيره شده ي آنان نيز روز به روز  بي آنكه صرف مهارت آموزي وكسب دانش حرفه اي خودشان شود تحليل مي رود و اين درحالي است كه فعلاً‌ برنامه هاي ارتقاء سطح دانش ومهارت آنان بسيار ابتدايي وكم بازده مي باشد با وجود اين كه حركت هاي خوبي  دربخش كمي آموزش ضمن خدمت فرهنگيان صورت گرفته است از آن جايي كه آموزش هاي ارايه شده قابليت اجرايي ندارندو ابزار و محيط مناسب براي به کار گيري اندوخته هاي ذهني فراهم نيست معلمان براي يادگيري احساس نياز نمي کنند و خود به خود اين دوره ها نيز رضايت خاطر فراگيران رافراهم نخواهد كرد . وقتي كه فراگير نسبت به آنچه بايد يادبگيرد احساس نياز ننمايد هرگز به عنوان يك فراگيريادگيرنده(1) دركلاس هاي آموزشي فعال نخواهد شد برعكس ممكن است كه با انگيزه هاي ديگري بخشي از روزگار خود را دركلاس ها سپري نمايد .

      هرروز كه مي گذرد ودر دنياي انفورماتيك غوطه ور مي شويم بين معلمان ودانش آموزان شكاف اطلاعاتي عجيبي نمايان مي شود ، وبا كمال تأسف لحظه به لحظه اين «شكاف ديجيتالي »‌ عميق تر وشگفت انگيز تر مي شود .حكايتي طنز آلود هست كه صرف نظر از واقعيت يا عدم واقعيت آن، پيام تلخي دربردارد حكايت از اين قراراست كه يكي از آموزگاران پايه اول ابتدايي دريكي از شهرهاي ايران كتاب فارسي (قبل از تأليف جديد)را تدريس مي كرده وقتي كه مي خواند «‌آن مرد داس دارد» بلافاصله ذهن خلاق يكي از دانش آموزان ،فعال مي شود وانگشت رابه نشانه ي سئوال بالا مي برد وقتي معلم به اواجازه طرح سؤال مي دهد دانش آموز بايك چهره حق به جانب مي گويد:‹‹ آقا اجازه! پدر من ديگه باداس كارنمي كنه از ماه ها پيش براي كامپيوتر مان ويندوز نصب كرده تازه ! من هم مي توانم با ويندوز كاركنم! ».

دراينجا اين سئوال مطرح مي شود كه :آيا معلم درميدان تنها نمانده است؟‹‹ آيا فرياد رسي هست !؟›› راستي چه كسي يا کساني يا مرجعي بايد دراين ميدان معلمان را ياري و آنان را درعرصه ي رقابت شكار اطلاعات کمک نمايد؟

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

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

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

اين نکته قابل بحث است که فرآيند تغيير نگرش نيازمند هزينه هاي سرسام آور مالي نيست! ممکن است بامقاومت هايي از جانب مديران و معلماني که حاضر نيستند تا به هيچ قيمتي نوع نگاه و در پي آن رفتار خود را تغيير دهند (طرف داران وضع موجود يا محافظه کاران ) روبرو شود اما در مجموع تغيير نوع نگاه به مفاهيم و مصاديق آموزشي از قبيل: تجهيزات، معلم ، فراگير(دانش آموز)،محتوا، يادگيري،تربيت و حتي اهداف آموزش و پرورش نيازمند تخصيص اعتبارو بودجه نيست! يعني ضرورتي ندارد به يک معلم پول داده شود تا بفهمد تربيت دانش آموز فناور نياز به کامپيوتر ندارد! بلکه اگر بتواند ذهن فراگيررا با محيط زيست خود درگير کند يعني دانش آموز پايه دوم ابتدايي را وادارد تا در محيط کوهستاني زندگي خود برگ چنار را با برگ بلوط مقايسه کند و تفاوت هاي ظاهري اين دو برگ را با همان زبان کلاس دومي در دفتر يادداشت خود بنويسد و براي همکلاسي هاي خود بخوانددر واقع کاري فناورانه کرده و تدريسي فناورانه داشته است خوب است بدانيم فناوري : بهره گيري از روش ، تجربه ، تجهيزات و مواد اوليه براي فرآوردهاي مفيد است. (3)        

فناوري آموزشي : بايد باعث شود كه دانش آموز توانايي اشتغال و همچنين قابليت انعطاف براي اشتغال در قرن بيستم را داشته باشد.

 اگر راهكار ما باعث شودتا:

·        دبيرادبيات دانش آموزان را به قصه و شعرعلاقه مند كند و شاعر و قصه گو شوند.        

·        دبير علوم كاري كند تا دانش آموزان خود دست به آزمايش بزنند.                            

·        دبيررياضي كاري كند تا دانش آموزان طرح مسئله كنند و مسئله هاي جديدي بسازنند.    

·        آموزگار كلاسي شاداب ، باطراوت وبا نشاط داشته باشد.

·   دبير علوم اجتماعي كاري كند تا دانش آموزان در يك فضاي احترام آميز انتخابات شوراي دانش آموزي را برگزار نمايند و به راي اكثريت احترام كنند.

·   معلم فراگيراني پژوهشگر ، پرسشگر ،منتقد ، با جسارت ،شجاع ، شاد ، بزله گو ، اجتماع گرا ، راستگو ،درستکردار ، خداپرست، مومن ، و... داشته باشد.

فناوري آموزشي را در تعليم و تربيت پياده كرده ايم.

 پس تربيت مغز فناور از آن جايي که بايد در همان دوره ابتدايي هم آغازگردد هيچ احتياجي به تجهيزات و سخت افزار گران قيمت ندارد هزينه هاي مالي چنداني هم ندارد بايسته و شايسته است که وزارت آموزش و پرورش به منظورتحول عميق و اساسي درنظام آموزشي تلاش و همت خود رامعطوف تربيت نيروي انساني توليد گر و انتخابگر کند و پيگيري اين موضوع را يکي ازمحورهاي استراتژي واولويت کاري خود بداند.

     اگر مي خواهيم معلماني توليدگر و انتخاب گر داشته باشيم ناچاريم پيش زمينه هاي آن را فراهم كنيم مواردي  از قبيل:

1- رفع دغدغه هاي مادي ونيازهاي مازلويي ( مسكن ، امنيت و... ) معلمان  .  كمتركسي در اين شك دارد كه ،تا وقتي معلم درگير برآوردن نيازهاي اوليه است و از طرفي بازارشغل هاي كاذب و درآمد زا به شكل غيرمنطقي درجامعه چنين پر رونق است جايي براي  انديشيدن معلمان به كيفيت آموزشي باقي نمي ماند بر آوردن نيازهاي حداقلي معلمان پيش نياز ورود به بحث هاي كيفيت آموزشي است هرگز با وجود گرسنگي و فقر نمي توان از تئوري هاي جديد آموزشي سخن گفت.

انسان موجودي است با استعدادهاي شگرف وگرانقدرچنان که از رسول اکرم (ص) روايت شده که فرمودند: «الناس معادن المعادن الذهب والفضه» مردم چون معادن طلا ونقره اند. با اين تعبير بايد آنچه راکه مانع شکوفايي استعدادهاي انسان است را رفع کرد و زمينه هاي مساعد را فراهم نمود تا استعدادهاي انسان به فعليت برسد در يک کلام اگر هدف ما توليد انسان هاي خلاق، انديشمند ، قانونمدار و يادگيرنده باشد تربيت با هرقرائتي ضدييتي با اين اهداف ندارد .

2-كاهش برنامه هاي رسمي ومحتواي درسي و توجه به برنامه هاي منطقه اي و محلي ،حجم پيش ازحد محتواي درسي و عدم توجه به آموزش و پرورش منطقه اي باعث شده است تا :

الف - معلمان به خود اجازه ندهند در محتواي رسمي دخل وتصرف كنند و به توليد محتواي خود ساخته بپردازند.

ب-  شأن معلمان در حد يك پيمانكار تنزل پيداکند پيمانكاري كه وظيفه ي او انتقال يکسويه اطلاعات کهنه به دانش آموزان است بس.

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

در صورت کاهش محتواي درسي و تعيين سرفصل هاتوسط ستاد و واگذاري راهکارها ي اساسي نيل به اهداف به استان ها و مناطق و شهرستان ها و در نهايت واگذار کردن موضوع توليد محتوا به معلمان دستاورد هاي زير حاصل مي شود:

2-ب-1- محتوا منطبق با توانايي و استعداد و پيشينه هاي فرهنگي وزمينه هاي زباني و همچنين موقعيت جغرافيايي فراگيران تهيه و توليد مي شود .

2-ب-2- از آن جايي که محتواي توليد شده حاصل تلاش خود معلم بوده انگيزه لازم به منظور ارايه آن به فراگيران نيز در معلم پديد خواهد آمد .

2-ب-3- زمينه هاي لازم به منظور بومي سازي دانش فراهم خواهد شد .

2- ب-4- از آموزش بادکنکي(۶) پرهيز خواهد شد و تلاش مي شود تا فراگيران را نه به عنوان انبار اطلاعات مرده و دست چندم - که به درد زندگي آن ها نمي خورد- بلکه به عنوان چشمه هاي زاينده ي دانش واطلاعات يا به تعبير امروز عناصر فناور و سيستم هاي يادگيرنده (۷) تربيت نمود.

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

 

 

 

+ نوشته شده در  دوشنبه سی ام مرداد 1385ساعت 10:49 بعد از ظهر  توسط جواد احمدی  | 

متاديتا در محيط آموزش الكترونيكي

 
دكتر عاصفه عاصمي

 (استاديار دانشگاه اصفهان- دانشكده علوم تربيتي)
Email: asemi@edu.ui.ac.ir , af_aesmi@yahoo.com
 

چكيده
 امروزه مديريت دانش در سيستمهاي اطلاع رساني كامپيوتري بصورت قابل ملاحظه اي مورد توجه قرار گرفته است. سازماندهي و مديريت دانش و بدنبال آن مديريت اطلاعات يك نقش اساسي و موفق را در انتقال دانش فردي به دانش سازماني ايفا مي كنند. همچنين مديريت اطلاعات و منابع آموزشي در محيط آموزش (يادگيري) الكترونيكي از اهميت ويژه اي برخوردار است. از آنجايي كه سيستمهاي يادگيري الكترونيكي مقدار زيادي از اطلاعات را نگهداري مي كنند، ايجاد اينچنين محيطهايي بايستي به گونه اي انجام شود كه كه كاربران بتوانند از اطلاعات موجود استفاده مفيد و مؤثري داشته باشند.
يكي از پارامتر هاي موفق در مديريت محتواي آموزشي در محيط الكترونيكي استفاده از متا ديتا مي باشد. در واقع در نگارش چنين محيطهايي متا ديتا نقش موفقي را به خود اختصاص داده است. مقاله حاضر مروري بوده و هدف از ارائه آن دادن تعريفي از آموزش الكترونيكي، بيان تاريخچه مختصري از آموزش الكترونيكي در جهان وايران، تبيين مفهوم متاديتا (فراداده يا ابرداده)، بيان چگونگي استفاده از متاديتا در محيط آموزش الكترونيكي و ارائه نكاتي در خصوص طراحی متادیتا در یک سیستم آموزشی الکترونیکی، مي باشد. همچنين به معرفی استاندارد 
Dublin Core  در ايجاد متاديتا مي پردازد.
كليد واژه ها:
متاديتا- فراداده-ابرداده- آموزش الكترونيكي-يادگيري الكترونيكي- مديريت دانش- مديريت اطلاعات- منابع اطلاع رساني
 
مقدمه
پيشرفت روزافزون فناوری اطلاعات باعث تغييرات بسياري در زمينه آموزش ویادگیری در سطح مراکز آموزشی دنیا گردیده است و با ظهور تکنولوژیهای نوین و ایجاد مراکز آموزشی مجازی، آموزش و یادگیری الكترونيكي جای خود را در این مراکز باز کرده است. چرا که عواملي چون كاهش هزينه آموزش، سهولت حضور در كلاس هاي آن لاين، تنوع دروس، زمان انتخاب دروس، كاهش هزينه رفت وآمد، وانعطاف پذيري زياد آموزش الكترونيكي در گسترش اين تکنولوژی موثر بوده اند . از طرفی استقبال دانشجويان از این شیوه نوین آموزشی در گسترش آن بي تأثير نبوده است چرا که يادگيري الكترونيكي با توانش بالا براي آموزش كارآمد و موثر قادر است كه دانش مورد نياز را در هر محل و در سريعترين زمان ارائه نمايد.  
آموزش الكترونيكي در ايران صنعتي نوپا در زمینه تكنولوژي آموزشی وآموزش از راه دور است، اما لازم است تا مراكز و مؤسسات آموزشي ایران به ويژه دانشگاه ها با استفاده ازالگويي مناسب با ساختار آموزشي وفرهنگي كشور، در زمينه طرح محیطهای آموزشی مجازی بر اساس استانداردهای بین المللی همت گمارند.  یکی از تکنیکهای مورد استفاده در آموزش مجازی در محیط آنلاین یا اینترنت استفاده از متادیتا یا فراداده می باشد که ایجاد متادیتا های مناسب بر اساس استانداردهای بین المللی ازاهمیت ویژه ای (خصوصا جهت پیوند به مراکز آموزشی دنیا) برخوردار است.


آموزش الكترونيكي
آموزش الكترونيكي استفاده از ابزارهاي تكنولوژيكي مختلف مبتني بر وب يا توزيع شده براي مقاصد آموزشي است. نامهاي ديگري مانند آموزش از راه دور (
Distance Learning)، آموزش برروی خط (Online Learning)، سيستم مديريت آموزشي، سيستم مديريت دروس و غيره هر يك به تنهايي جنبه هاي مختلفي از آموزش الكترونيكي را شامل مي شوند.1


تاريخچه آموزش الكترونيكي در جهان 
آموزش غيرحضوري، باآموزش مكاتبه اي در دهه اول سال 1700 ميلادي آغاز شده است. هنوز هم در نقاط مختلف دنيا از جمله در ايران از اين شيوه آموزشي براي تحصيل و يادگيري، استفاده مي شود.2 آموزش مكاتبه اي كه با نامه نگاري توسط مدرسه يا مؤسسه هاي واجد شريط اداره مي شد و بين دانشجويان و استادان از طريق نامه نگاري ارتباط برقرار مي گردید، مورد توجه دانشجويان  و دانش آموزان بود. همزمان با ايالت متحده آمريكا كه در زمينه آموزش از راه دور فعاليت داشت،  كشورهاي اروپايي دوره هاي آموزشي را قبل از سال 1840 به صورت جزوه هاي خلاصه شده آغاز كرده بودند. اولين دوره آموزشي از راه دور دانشگاهي كه در سال 1892 تأسيس شد،  متكي بر اداره پست اداره مي شد. روشهاي بهره گيري از آموزش غيرحضوري مبتني بر فناوري به اوايل دهه 1900 ميلادي باز مي گردد. در اواسط قرن بيستم برنامه هاي آموزشي متنوعي نيز وجود داشت و مجوزاولين راديوي آموزشي دانشگاهي در سال 1921 صادر شد، كه اولين پايه شكل گيري آموزش الكترونيكي محسوب مي گردد. در سال 1960با تكامل و پيشرفت رسانه ها، تكنولوژي آموزش از راه دور نيز دچار تغييرشد و به جاي تكيه بر سيستم پستي ، دانشگاه ها با استفاده تركيبي از ابزار چند رسانه اي مالتي مديا، جهت پشتيباني آموزشی از دانشجويان ثبت نام مي نمودند به نحوي كه علاوه بر انگلستان و آمريكا در ساير كشور هاي اروپايي و آسيايي مؤسسات آموزش الكترونيكي توسعه يافت. امروزه آموزش (يادگيري) الكترونيكي مبتنی بر استفاده ازتکنولوژیهای جدید، ابزاری است براي انتقال دانش روز كه مي تواند انواع تخصص و مهارت در رشته هاي متفاوت را در اختيار دانش پژوهان قرار دهد. ‌در واقع" آموزش‌ الكترونيكي‌ ثابت‌ كرده‌ است‌ كه‌ 20 تا 25 درصد يادگيري‌ را نسبت‌ به‌ كلاسهاي‌ درس‌ سنتي‌ افزايش‌ مي‌دهد".3


تاريخچه آموزش الكترونيكي در ايران 
تاريخچه آموزش الكترونيكي در ايران به زمان بهره گيري از ابزارهاي كمك آموزشي سمعي - بصري شامل نمايش اسلايد و فيلم هاي آموزشي در كلاس درس باز مي گردد. پس از آن تلويزيون به عنوان يك رسانه آموزشي مورد توجه قرار گرفته است و تلويزيون آموزشي ملي ايران رسماً به امر آموزش همگاني از طريق اين رسانه در سراسر كشور پرداخت.
آموزش از راه دور در كشورمان به جز تجربه كوتاه دانشگاه آزاد قبل از انقلاب و دانشگاه پيام نور مبتني بر استفاده از شيوه ارتباط از راه دور، داراي سابقه طولاني اي نيست. در پايان دهه هفتاد آموزش مجازي در دستور كار دانشگاه تهران قرار گرفت و پروژه هاي تحت اين عنوان آغاز شد. در سال 1380 سايت آموزش مجازي دانشگاه تهران با ارائه نه درس براي دانشجويان روزانه دانشگاه راه اندازي شد و از نيم سال اول تحصيلي همان سال، آن بهره برداري شد.  در همان سال وزارت علوم، تحقيقات و فناوري از تأسيس دانشگاه اينترنتي خبر داد كه تحت نظر آن وزارت، ولي به صورت مؤسسه غير انتفاعي نوع اول در سراسر كشور خدمات آموزشي  ارائه خواهد داد به دنبال آن تعدادي از دانشگاه ها اعلام كردند كه راه اندازي آموزش الكترونيكي را جزو برنامه هاي خود قرار داده اند و در حال حاضر تعدادي از آنها دروسي را به صورت تك درس براي دانشجويان حضوري خود ارائه كرده اند. اندكي بعد از اقدام دانشگاه ها در استفاده از روش آموزش الكترونيكي ، آموزش وپرورش كه بزرگترين بخش آموزشي كشور است، فعاليت هايي را در اين زمينه شروع كرد و در حال حاضر تعدادی مؤسسه خصوصي نيز از روش آموزش الكترونيكي بهره مند هستند.4


متادیتا یا فراداده یا ابرداده
 اصطلاح "متا" از یک کلمه یونانی گرفته شده است و بیانگر چیزهایی است که بیش از ماهیت  خودشان هستند. متا دیتا یا فراداده ابزاری است که منبع اطلاعاتی را توصیف می کندو در واقع متاديتا داده ی ساخت يافته اي است که به تشريح جزئيات منبع داده مي پردازد وقادر است تا مقادير زيادي از اين جزئيات متشابه را به صورت کاتالوگ هاي مجزا ذخيره و در صورت لزوم تسهيم نمايد. کاربرد اصطلاح "متادیتا " به حدود بیست سال پیش باز می گردد تا جایی که امروزه جز تفکیک ناپذیری از دنیای وب گردیده است. البته کاربرد مفاهیم اساسی متادیتا در ارتباط با مجموعه های اطلاعاتی سازمان یافته به مدتهای طولانی قبل از خلق اصطلاح آن باز می گردد. اولین گامها جهت توسعه متادیتا در خصوص فرا داده های کتابخانه ای برداشته شده است. این فراداده های کتابخانه ای شامل ایند کسها، چکیده ها، و فهرست رکورد های ایجاد شده بر اساس قوانین فهرستنویسی و استانداردهایی نظیر انگلو امریکن می باشند. مفاهیمی در خصوص تبيين مفهوم متادیتا به شرح ذیل توسط "گیلند و سواتلند" مطرح گردیده است.5
- متادیتا تنها منحصر به شکل دیجیتالی نمی باشد،
- متا دیتا غالبا به توصیف یک شی اطلاعاتی می پردازد،
- متادیتا می تواند در بر گیرنده یک سری از منابع مختلف باشد،
- در طول توسعه یک شی اطلاعاتی  متادیتاهای مربوط به آن نیز توسعه پیدا می کنند،
- متادیتای یک شی اطلاعاتی در یک زمان واحد می تواند متادیتای شی اطلاعاتی دیگری قرار گیرد.
استفاده از متاديتا در محيط آموزش الكترونيكي
به دليل کم حجم بودن متاديتاها در مقايسه با داده هايي که متاديتا به شرح آن مي پردازد، قابليت تهيه آن بسيار راحتتر است. با ساختن متاديتا و تسهيم آن با ديگر کاربران، اطلاعات مربوط به ماهيت داده ها به سهولت براي جويندگان آن دسترس پذير مي شود. در محیط آموزش الکترونیکی می توان در قسمت منابع آموزشی استفاده موثری از متادیتا ها بعمل آورد. در واقع با استفاده از متادیتاست که دانشگاههای مجازی ایران میتوانند منابع آموزشی خود را که به زبان فارسی زیر مجموعه متادیتاها قرار گرفته است به اشتراک گزارندو معضل کمبود منابع کمک آموزشی و منابع درسی به زبان فارسی را با به اشتراک گذاشتن تا حدودی حل نمایند. متادیتاها کشف داده ها را آسان تر کرده و تکرار و تکثير و نسخه برداري از داده ها را ساده تر مي کند. متا دیتاها به انواع مختلفی تقسیم میشوند همانند متادیتا های کتابخانه ای، جغرافیایی، آموزشی و غیره. متادیتای آموزشی می تواند داراي يک مولفه آموزشی از قبيل مجموعه ای از قوانین یک سیستم آموزشی که توسط داده تحت پوشش قرار مي گيرد،را شامل شود. متاديتا قادر به توضيح داده هاي آموزشی، يک شبکه آموزشی مجازی و يا فهرست داده هاي فعال اينترنتي است. همچنين قادر است تا هر گونه داده غيرالکترونيکي مانند نقشه هاي کاغذي و يا داده هاي الکترونيکي خارج از خط (
offline)از قبيل داده هاي ذخيره شده بر روي CD و ساير ابزارهاي ذخيره را توصيف کند. وجود استانداردهاي متنوع براي متاديتا تصوير کردن داده هاي مربوطه را در اتاقهاي تبادل اين داده در شبکه ممکن و همچنين فهرست سازي از اين داده ها را مقدور مي سازد.
از مهمترین اهداف آموزش الکترونیکی به اشتراك گذاشتن داده ها و استفاده مجدد از محتواي آموزشي می باشد. در این میان سيستم مديريت محتواي آموزشي
LCMS (Learning Content Management System)  در سیستم یادگیری الکترونیکی یکی از مهمترین قسمتهای آن میباشد. در سیستم فوق و  همچنین درسيستم آزمون و ارزيابي( (Assessment،  نگهداري و ارائه محتويات دروس (ابرمتن،ابر داده، وچند رسانه اي ها) بایستی متناسب با سیستم آموزشی و بر اساس استانداردهای بین المللی باشد. درابزار توليد محتوا (Authoring Tool)  نیز استفاده از این استانداردهای رایج بین المللی ضروری مینماید.6 در یادگیری الکترونیکی وجود متادیتا جهت  ایجاد پیوندهای لازم در کتابخانه های الکترونیکی و برقراری امکان استفاده از انواع پايگاه داده هاي متداول و امكان ايجاد مخزن نگهداري و اشتراك محتوا (Content Repository) از ضروریات است.


طراحی متادیتا در یک سیستم آموزشی الکترونیکی
طراحی متادیتا در یک سیستم آموزشی الکترونیکی نيازمند برنامه ريزي دقيقي است. محتواي آموزشی بايد کاملاً با ساختار سیستم آموزشی و وب مطابقت داشته باشد. وقتي کاربری منبعی را پيدا مي کند بايد قادر باشد تا خيلي سريع آن را مرور کند. براي کاربردي تر شدن محتواي آموزشی و تاثير هر چه بيشتر آن در جهت خدمت به اهداف آموزشی مورد نظر بايد هم از جنبه بيروني و هم از جنبه دروني براي ارتباط بين محتوا و متادیتاها تلاش کرد.7  یکی از کاربردی ترین متادیتا ها در سیستم آموزش الکترونیکی متا دیتاهای کتابخانه ای است. که در واقع شامل منابع اطلاعاتي است براي آگاهي يا تسهيل دسترسي به منابع اطلاعاتی ديگر. طبقه بندي کردن متن ها ی آموزشی يک گونه متاديتا محسوب مي شود روي اين موضوع که از چه روشي براي طبقه بندي محتوای آموزشی سیستم استفاده کرد بایستی متمرکز شد. مراقبت از  اينکه مطالب آموزشی به درستي در طبقه بندي ها قرار گيرند از مسئوليت هاي اصلي سیستم آموزش الکترونیکی محسوب مي شود. تيترها و خلاصه مطالب نيز از متاديتاها به شمار مي روند. اگر قرار است که در يک صفحه از سايت آموزش مجازی تنها يک متاديتا وجود داشته باشد آن هم متاديتای تيتر است. هر مبحث الکترونیکی آموزشی بايد يک عنوان خاص داشته باشد که دقيقا محتواي موجود در آن قسمت را تشريح کند. در يك ديد كلي مي توان گفت کلیه منابع اطلاعاتی صرفنظر از قالب فیزیکی آنها دارای سه ویژگی اصلی میباشند که عبارتند از : فهرست مندرجات (
Content)، متن (Context)، و ساختار (Structure). که هر کدام یا همه می توانند در قالب متادیتا ظاهر گردند. فهرست مندرجات شامل چیزهایی است که هدف منبع آن را دنبال می کند و یا میتوان گفت مطالبی را در بر می گیرد که منبع در مورد آنها می باشد. درواقع نمودی از بطن منبع است. متن شامل محتوای منبع می گردد و در واقع برونداد پاسخ به سوالات نظیرچه کسی، چه چیزی، چرا، کجا ، و چگونه، در ارتباط با جنبه ها و نمودهای موضوعی مختلف منبع می باشد. ساختار به قالب رسمی ترتیب قرار گرفتن محتوای یک منبع اطلاعاتی بر می گردد.
فراداده ها در فهرست مندرجات نقش یک پل ارتباطی را جهت بازیابی و نمایش محتوای مربوط به هر قسمت را ایفا می کنند. با استفاده از متادیتا میتوان فایلهای هر قسمت را به صورت مجزا و بدون بر خورد با یکدیگر باز نمود. که این خود نگرشی مانوس با ظهور و ورود اینتر نت و دنیای وب می باشد. در یک دید کلان با توجه به رشد فزاینده وب پر واضح است که اهمیت ایجاد فراداده های فهرست های مناسب ، وسیله ای گرانبها در کمک رسانی به کاربران جهت یابش منابع اطلاعاتی مورد نظر میباشد. در طول رشد اینترنت در گذر زمان جهت حل مشکل دستیابی به منابع اطلاعاتی ابزار مختلفی طراحی شدند که عبارتند از : فهرست های راهنما یا سیاهه منابع شبکه و موتور سرچهای مختلف که به عنوان ابزاری هنرمندانه کاربرد فراوان دارند. در این راستا "گیلند و سواتلند"8 در نظر گرفتن ویژگیهای خاصی را در ایجاد متادیتا بیان نموده اند که عبارتند از:


1.      افزایش قابلیت دسترسی
افزایش میزان بهره وری کاربر که با استفاده از بکارگیری متادیتاهای سازگار و قوی امکان پذیر می گردد. با استفاده از متادیتا های مناسب می توان امکان سرچ را از سراسر مجموعه های اطلاعاتی  متعدد از مخازن اطلاعاتی مختلف و مجازی  مانند کتابخانه ها، مجموعه های آرشیو، و... فراهم نمود.  در حقیقت بسیاری از این مجموعه ها خود نگهدارنده اطلاعات نیستند بلکه با استفاده از فرا داده ها تنها امکان دسترسی را با استفاده از پیوندهای پنهان بین یکدیگر فراهم می آورند. در واقع در دنیای دیجیتال مشکل پراکندگی منابع وجود ندارد و مشکل مرز جدایی بین منابع مختلف اطلاعاتی  مشابه و با محتوای نزدیک به هم با استفاده از بکارگیری فرا داده ها قابل حل است.
از طرفی دیگر متادیتا می تواند یک نقش انتقادی در سندیت دادن به یک مدرک و ارتباط آن با دیگر مدارک مشابه را عهده دار شود. همچنین می توان گفت متا دیتا در کامل بودن یا تکمیل اطلاعات لازم در ارتباط با یک منبع یا شی اطلاعاتی نقش موثری دارد.
2.      استفاده وسیع
سیستم اطلاع رسانی دیجیتالی نقش مهمی در توزیع نسخه های دیجیتالی دارا می باشد چه بسا  این توزیع فراتر از موانع جغرافیایی و اقتصادی می باشد. در یک سیستم اطلاع رسانی با استفاده از روشهای مختلف سرچ اطلاعات می توان به منابع مختلف و وسیع اطلاعاتی سازگار یا ناسازگار دسترسی پیدا کرد و در این میان فراداده ها کاربرد های مختلفی دارند.
3.      چند نسخه ایها
در دنیای دیجیتال مشکلی جهت ایجاد نسخه های مختلف و متنوع جهت استفاده های مختلف وجود ندارد. براحتی میتوان به عنوان مثال نسخه ای از یک تصویر با میزان شفافیت بالا جهت اهداف تحقیقی و در عین حال نسخه دیگری با میزان شفافیت پایین جهت ارجاعات سریع در سراسر شبکه ایجاد نمود.
4.      برآمدهای قانونی
استفاده از متادیتا در مخازن اطلاعاتی یک سری برآمدهای قانونی بدنبال خود دارد که شامل برخی لوایح حقوقی جهت تکثیر اطلاعات و چند نسخه ای کردن آنها می شود. به عنوان مثال لحاظ کردن حقوق یک شخص جهت گسترش دادن یا محدود کردن دستیابی به اطلاعات خودش.
5.      حفاظت
در سیستم های اطلاع رسانی همراه با حفاظت اطلاعات بایستی در سیستم های تحویل مدرک امکان انتقال اطلاعات بین سیستمها با وجود انواع مختلف تولیدات نرم افزاری و سخت افزاری وجود داشته باشد. در این میان سیستمهای اطلاع رسانی نیاز به فراداده هایی دارد که آنها را قادر سازد تا  ذخیره و باز یابی اطلاعات را بصورت آزادانه و بدون کنترل انجام دهند.  بسیار ضروری است که یک منبع یا شی اطلاعاتی براحتی  بتواند با دیگر منابع یا اشیا اطلاعاتی ارتباط برقرار نماید.
6.      توسعه و اقتصاد سیستم
با توجه به اینکه داده های زیادی توسط یک سیستم اطلاعاتی جمع آوری میشود بنابراین جهت پیشرفت، توسعه، و تصحیح اطلاعات سیستم مذکور بایستی داده ها از نظر تکنیکی مورد بررسی قرار گیرند. بدین ترتیب میتوان از اطلاعات سیستم استفاده کارآمدتر و موثرتری بعمل آورد. همچنین با یک دیدگاه اقتصادی می توان در برنامه ریزی های سیستم از داده ها استفاده نمود.
در شبکه جهانی اینترنت از متادیتا میتوان جهت ایجاد منابع الکترونیکی استفاده های زیادی نمود. بر اساس نظر "شیوا و چیدامبران"9 انجام اقدامات ذیل در این راستا مفید خواهد بود:
-         خلاصه کردن معنی فراداده (مثلا فراداده در ارتباط با چه موضوعی است)،
-         ایجاد امکان سرچ جهت کاربر،
-         ایجاد امکان دسترسی به داده های مشابه توسط کاربر،
-         ممانعت از دسترسی به برخی اطلاعات توسط برخی کاربران (بعنوان مثال کودکان)،
-         آموزش چگونگی تفسیر داده مانند چگونگی تایپ، کد گزاری، و رمز گزاری،
-         آموزش اینکه چگونه میتوان اطلاعات مورد نظر را بازیابی نمود (به عنوان مثال اگر داده ای در فرمت های مختلف تهیه شده است چگونه میتوان به انواع مختلف فرمت های آن دسترسی پیدا کرد) ،
-         آگاهی رسانی در خصوص مواردی که در استفاده از داده موثر است ( مانند قوانین حق مولف یا قوانینی جهت استفاده از سطح کاربری مربوطه)،
-         در اختیار قراردادن سابقه داده (مانند منبع اصلی و یا مالک اصلی آن)،
-         تعیین روابط بین داده های مختلف با دیگر منابع (مانند پیوند به نسخه های قبلی و بعدی، داده های زیر مجموعه، داده های مربوط به یک فیلد موضوعی خاص، و یا فرمانهای که بایست در ارتباط با داده استفاده گردد)،
-         مدیریت و کنترل داده  جهت جلوگیری از تخریب آنها.
اخیرا استانداردهای زیادی در خصوص ایجاد متادیتا در توصیف منبع الکترونیکی در مخازن اطلاعاتی تهیه شده است که یکی از رایج ترین آنها استاندارد "دابلین کر" میباشد. امروزه دابلین کر جهت ساخت متادیتا در سطح بسیار وسیع بین المللی مورد استفاده سیستم های اطلاعاتی قرار می گیرد. البته در آموزش الکترونیکی استفاده از استاندارد
SCORM  نیز رایج است که از بحث ما خارج میباشد.


استاندارد
Dublin Core 10
دابلین کر شامل یک سری عناصر موثر ساده برای توصیف دامنه وسیعی از منابع شیکه می باشد و وسیله ای است جهت بازیابی آسان منابع مورد نظر. استاندارد دابلین کر شامل پانزده عنصر اصلی می باشد که این پانزده عنصر از طریق یک مجمع تخصصی در دابلین در اوهایو توسط گروهی از متخصصین کتابداری و علوم کامپیوتر به تصویب رسید. اين عناصر عبارتند از:
1. عنوان : نام منبع که معمولا توسط تهیه کننده منبع یا ناشربه منبع داده می شود،
2. نویسنده یا تهیه کننده : شخص یا سازمان اصلی برای تهیه فهرست مندرجات منبع. به عنوان مثال نویسندگان در مورد نوشتن منابع و اسناد، و هنرمندان , عکاسان، و مصوران در مورد منابع بصری،
3. موضوع یا کلید واژه : موضوع منبع توسط کلید واژ ه های موضوعی یا عبارات توصیف می شود. در این راستا استفاده از واژگان کنترل شده، طرحها وطبقه بندیهای رسمی مانند سر عنوانهاي معمول می باشد،
4. توصیف : یک توصیف لفظی متنی از فهرست مندرجات و محتواي منبع موجود،
5. ناشر: شركت يا كمپاني يا سازماني كه اقدام به انتشار منبع اطلاعاتي نموده است،
6. هم بخشگرها : شخص، اشخاص ، ويا سازماني كه در تهيه منبع يا واحد اطلاعاتي مشاركت داشته است تحت عنوان ویرایشگر ، آوا نویس یا مصور و..،
7. تاریخ : تاریخ مربوط به خلق منبع یا تاريخ دسترسی به آن . یشنهادي كه در اين خصوص در پروفایلی از ایزو 8601 ارائه می شود بدين صورت است كه تاریخها در قالب
yyyy  ويا YYYY-MM-DD می آید،
8. نوع منبع: مربوط به چگونگي نوع منبع مانند کتابهای داستان، شعر، مجموعه مقالات، وگزارشات. كه به منظور قابلیت همکاری با پایگاههای دیگرتعيين نوع منبع ضروري ميباشد،
9. فرمت یا قالب : تعيين قالب منبع يكي ديگر از عناصر اصلي پانزده گانه دابلين ميباشد. قالب معمولا جهت شناسایی نرم افزار وگاها سخت افزارهای مورد نیاز جهت مدیریت منبع استفاده می شود،
10.  مشخصه منبع : شامل یک رشته اعداد نوشته شده جهت استفاده، تشخیص وشناسایی منابع مختلف مانند شماره استاندارد بين المللي كتاب يا شابك.
11.  منبع : اين عنصر در ارتباط با منابع ردیف دوم است که اطلاعات موجود در آنها از منبعي ديگر مشتق می شود. در زمان ايجاد متاديتا هنگامی که عناصر محتوای اطلاعاتی در مورد منبع فعلی پیشنهاد می شود، مي توان متادیتايی در منبع ردیف دوم جهت ارجاع  به منبع اصلي جهت یابش اطلاعات معرفی کرد،
12.  زبان: مربوط به زبان اصلي منبع مي باشد،
13.  وابستگی(ارتباط): به منظور ايجاد توانایی دو منبع برای رد وبدل کردن اطلاعات مي توان متاديتاي ارتباط را براساس لیست های مشخص ارائه داد،
14.  پوشش: اين گزينه در خصوص پوشش منبع از جهات مختلف مي باشد. به عنوان مثال تعيين پوشش زمانی یا پوشش جغرافیایی، كه پوشش زمانی گاها تعیین کننده دوره های زمانی(مانند عصر حجر) نیز می تواند باشد،
15.  مديريت حقوق منبع : . در خصوص استفاده از منابع مي توان متاديتايي جهت حفظ حقوق معنوى منبع از جمله كپى رايت تعيين كرد. اين مشخصه مى تواند تعيين كننده تعداد دفعات استفاده از منبع يا حتى تعداد دفعات تكثير آن باشد كه در سرچ اطلاعات از منابع ديگر بيشتر كاربرد دارد. امروزه در اينترنت بدليل حجم زياد اطلاعات حفظ حقوق منبع يكي از مشكلات اصلي به حساب مي آيد.


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


منابع:

1.شرکت نرم افزاری پسنا. آموزش الکترونیکی. قابل دسترس از :

  http://pasnaco-elearning.htm  تاریخ دسترسی 8 فروردین 1385.

 

2. نجاتی ، علیرضا و زیبایی، مهدی. الگوهای نوین انتقال دانش. آفتابگردان- مدیر تازه کار. 20 اسفند 1383. قابل دسترس در:

 http://modiretazekar1.persianblog.com/#1005416    تاریخ دسترسی 25 فروردین1385.


3. حسن زاده، مریم(1381). یادگیری الکترونیکی. تدبیر.سال سیزدهم. شماره 122. ص.124 


4.  ساازمان صدا و سیمای جمهوری اسلامی ایران. اداره کل آموزش .قابل دسترس از:

http://training.irib.ir/INFO/Magalat.htm    تاریخ دسترسی 15 فروردین 1385.

 

5. Gilland and Swetland A.J. Setting stage: an introduction to Metadata.
2000. Available from: http://www.getty.edue.gri/standard/intrometadata.html  (Accessed on
5 March 2006)


 6. Trickey, Keith V. Metadata for Information Management and Retrieval. New Library World. 
London: 2005.Vol.106, Issue. 3/4;  p. 193

 

7.  حسنی ، فرنود. اصول نگارش در وب-قسمت دوم:مديريت وب سايت.  27 دی 1384.

 

8. McCray, A.T. and Gallabher, M.E. "Extending the role of metadata in a digital library system." Proceeding IEEE forum on research and technology advances in digital library (1999): 190-191


9. Chidambaram S.Shiva. "Basics of metadata" In Library and information networking NACLIN 98 edited by H.K.Kaul .New
Delhi, Delnet, 1999. pp.145-178


10.
Dublin core 2000. Available from: http://purl.orQ/Dc  (Accessed on March 2006)

 

+ نوشته شده در  سه شنبه بیست و چهارم مرداد 1385ساعت 12:18 بعد از ظهر  توسط جواد احمدی  | 

 

نويسنده:  Gunter Neumann  

German Research Center for Artificial Intelligence (LT–Lab, DFKI) 
 

ترجمه: احد محمّدي خواجه   
E-mail: ae1359m@gmail.com 

دانشجوي كارشناسي ناپيوسته كامپيوتر(تراكتورسازي تبريز)
 

 

عناوين متن

زبانهاي برنامه‌نويسيAI،  برنامه‌نويسي تابعي ، برنامه‌نويسي تابعي در Lisp ، A- Syntax (نحو) و semantic هاي (معاني) Lisp ،  ليست انواع داده ،  تعريف توابع جديد ، تعريف ساختارهاي كنترلي ،  تعريف توابع بازگشتي ،  توابع مرتبه بالا ، ساير زبانهاي برنامه‌نويسي تابعي غير از Lisp ، برنامه‌نويسي منطقي در Prolog ، ساير روشهاي برنامه‌نويسي
 

واژه نامه
بندهاي برنامه Prolog
شامل مجموعه‌اي از جملات بنام بندها هستند كه براي نشان دادن داده‌ها و برنامه‌ها بكار مي‌روند.
تابع مرتبه بالا تعريف تابعي است كه اجازه مي‌دهد آرگومانها يا مقدار بازگشتي تابع، مقدار توابع باشد. نماد ساختار ليستها اغلب نشان‌دهنده نحوه استفاده از ليست ساختاري داده هستند، كه يك عنصر ليست ممكن است نماد يا ليست ديگر باشد. ليستها ساختاري مركزي Lisp هستند كه براي نشان دادن داده‌ها و برنامه‌ها بكار مي‌روند. بازگشت تكنيكي الگوريتمي براي انجام يك كار است كه يك تابع با بعضي از قسمتهاي كار خودش را فراخواني مي‌كند.
محاسبات نمادين برنامه‌نويسي AI (اساساً) شامل دستكاري نمادها است نه اعداد. اين نمادها مي‌توانند اشياء در جهان و ارتباط بين آن اشياء را نشان دهند- ساختارهاي پيچيده نمادها نياز به دانش ما از جهان دارند. واژه ساختار اساسي داده‌ها در Prolog واژه‌اي است كه مي‌تواند يك ثابت، يك متغير يا يك ساختار باشد. ساختارها موضوعات ريز محاسبات گزاره‌اي را نشان مي‌دهند و شامل يك عملگر نام و يك پارامتر ليست هستند.
زبانهاي برنامه‌نويسي هوش مصنوعي(AI) ابزار اصلي بررسي و ساخت برنامه‌هاي كامپيوتري هستند كه مي‌توانند در شبيه‌سازي فرايندهاي هوشمند مانند يادگيري،‌ استدلال و فهم اطلاعات نمادين بكار بروند. هر چند اخيراً زبان كامپيوتر اصولاً براي استفاده از كامپيوترها براي انجام محاسبات با اعداد طراحي شده بود، اما بزودي دريافتند كه رشته‌اي از بيتها نه تنها اعداد بلكه مي‌توانند اشياي دلخواه را نيز نمايش دهند. عمليات روي ويژه‌گي‌ها يا نمادها مي‌تواند با استفاده از قوانين براي ايجاد، انتساب يا دستكاري نشان داده شود. اين تصور از محاسبات نمادين بعنوان تعريف الگوريتمهايي كه هر نوع اطلاعات را پردازش مي‌كنند و بنابراين مي‌تواند براي شبيه‌سازي هوش انسان بكار برود مناسب است.
بزودي برنامه نويسي با نمادها كه نياز به سطح بالايي از چكيدگي دارند توليد مي‌شوند، غير از امكاناتي كه با زبانهاي برنامه نويسي مخصوص پردازش اعداد ممكن بود مانند فرترن
 
I-زبانهاي برنامه نويسي AI
در AI خودكار كردن يا برنامه‌نويسي همه جنبه‌هاي شناخت انساني بوسيله بنيادهاي شناخت علمي روشهاي نمادين و غير نمادين AI، پردازش زبان طبيعي، ديد كامپيوتري و سيستمهاي تكامل يا سازگار مطرح مي‌شود. لازم است دامنه مسئله‌هاي خيلي پيچيده در ابتداي مرحله برنامه‌نويسي يك مسئله AI معين، مشخص شود كه كافي نيست. تنها بوسيله تعامل و افزايش اصلاحات خصوصيات بسيار دقيق ممكن است. در حقيقت مسئله‌هاي معمول AI به بسياري از زمينه‌هاي خاص گرايش دارند، بنابراين روشهاي ذهني بايد بوسيله توليد و آزمايش روشها بطور تجربي توسعه يابند(مشهور به نمونه سازي سريع). در اينصورت برنامه‌نويسي AI بطور قابل توجهي با روشهاي استاندارد مهندسي نرم‌افزار متفاوت بوده زيرا برنامه‌نويسي معمولا از يك مشخصات رسمي با جزئيات شروع مي‌شود. در برنامه‌نويسي  AI پياده‌سازي در واقع جزئي از پردازش مشخصات مسئله است.  به اقتضاي طبيعت مسئله‌هاي  AI برنامه‌نويسي AI مزاياي بسياري دارد اگر زبانهاي برنامه نويسي، برنامه‌نويسAI را آزاد بگذارند و در بسياري از ساختارهاي فني محدود نكنند (مانند ساختار انواع داده‌اي جديد سطح پايين، دستيابي دستي به حافظه). ترجيحاً سبك برنامه‌نويسي اعلاني براي استفاده در ساختارهاي پيش‌ساخته داده‌اي سطح بالا(مانند ليستها و درختها) و عمليات(مانند تطبيق الگوها) مناسب است، بنابراين محاسبات نمادين سطح خلاصه‌سازي بيشتري نسبت به آنچه كه با زبانهاي دستوري استاندارد مانند فرترن، پاسكال يا C امكان‌پذير خواهد بود را پشتيباني مي‌كند. البته طبقه‌بندي خلاصه سازي آسان نيست،‌ زيرا تدوين برنامه‌هاي AI روي كامپيوترهاي استاندارد وان نيومن نمي‌تواند به كارآمدي زبانهاي دستوري باشد. هر چند يك مسئله مسلم AI فهم آن است (حداقل جزئيات) امكان دارد با تنظيم مجدد آن به شكل خصوصيات جزئي شده با بكار بردن يك زبان دستوري پياده‌ سازي مجدد شود. با توجه به نيازمنديهاي محاسبات نمادين و برنامه‌نويسي  AI دو الگوي  جديد برنامه‌نويسي كه به سبك دستوري پيشنهاد مي‌شوند بوجود مي‌‌آيد: سبك برنامه‌نويسي تابعي و منطقي. هر دو بر مبناي رياضيات طرح‌ريزي شده‌اند، يعني نظريه توابع بازگشتي و منطق رسمي. اولين زبان برنامه‌نويسي AI كاربردي كه هنوز هم بطور گسترده استفاده مي‌شود زبان برنامه‌نويسي Lisp است كه در اواخر دهه 1950 توسط جان مك كارتي توسعه يافته است. Lisp برمبناي نظريه توابع رياضي و خلاصه‌سازي Lambda است. تعدادي از كاربردهاي مهم و موثرAI در Lisp نوشته شده است. كه ما بعضي از جزئيات اين زبان برنامه‌نويسي را در اين مقاله شرح خواهيم داد. در اوايل دهه 1970 يك الگوي برنامه‌نويسي جديد بنام برنامه‌نويسي منطقي بر اساس محاسبات گزاره‌اي بوجود آمد. اولين و مهمترين زبان برنامه‌نويسي منطقي Prolog است كه توسط آلن كالمرار، رابرت كوالسكي و فيليپ راسل توسعه يافته است. مسئله‌ها در prolog بصورت حقايق، بديهيات و قوانين منطقي براي استنباط حقايق جديد بيان مي‌شوند. Prolog  با قانون رياضي در محاسبات گزاره‌اي و نتايج نظري بدست آمده در زمينه اثبات قضيه خودكار در اواخر دهه 1960 بنا نهاده شده است.


II- برنامه نويسي تابعي
يك تابع رياضي نگاشتي از يك مجموعه (دامنه) به مجموعه ديگر(برد) است. تعريف يك تابع توصيف اين نگاشت است كه يا بطور صريح بوسيله شمارش و يا بطور ضمني بوسيله يك عبارت است. تعريف يك تابع بوسيله نام تابع كه بدنبال آن ليستي از پارامترها در داخل پرانتز قرار دارند و به دنبال آن نيز عبارت توصيفي نگاشت است مشخص مي شود مانند:
X يك عدد حقيقي است cube(X) ≡ X X X , where X is a real number.
آلونسو چارچ توابع بي نام را با استفاده از نمادLambda معرفي مي كند. يك عبارت Lambda  پارامترها و نگاشت تابع را با استفاده از عملگر X مشخص مي كند, مانند λ (X)X X  X آن خودش تابع است, بنابراين شرح بكار رفته در مثال تابع بي نام با يك آرگومان مشخص است. براي مثال:(λ (X) X  X  X)(4).
برنامه نويسي در يك زبان تابعي شامل ساختمان تعريف توابع و بكاربردن كامپيوتر براي ارزيابي عبارات است. يعني بكاربردن توابع با آرگومانهاي واقعي. كار اصلي برنامه نويسي پس از ساخت يك تابع براي يك مساله خاص تركيب توابع تعريف شده قبلي با توجه به اصول رياضي است. كار اصلي كامپيوتر ارزيابي توابع فراخواني شده و چاپ حاصل مقادير تابع است. در اين روش كامپيوتر مشابه يك كامپيوتر جيبي معمولي بكار مي رود البته بسيار انعطاف پذيرتر و قدرتمندتر. يك خاصيت برنامه نويسي تابعي اين است كه اگر عبارت به خوبي مقداردهي شود آنگاه ترتيب انجام ارزيابي كامپيوتر در نتايج ارزيابي تاثيري ندارد. بنابراين نتيجه ارزيابي يك عبارت تنها مقدار آن است. بدين معني است كه در يك زبان تابعي ناب اثرات جانبي وجود ندارد. اثرات جانبي در مدل موقعيت هاي حافظه به متغيرها متصل شده اند.بنابراين در يك زبان برنامه نويسي ناب در مفهوم زبانهاي دستوري متغير وجود ندارد. روشهاي اصلي كنترل جريان، بازگشت (تكرار) و عبارات شرطي هستند. اين كاملاً با زبانهاي دستوري در مفهوم اساسي كنترل ترتيب و تكرار متفاوت است. برنامه نويسي تابعي نيز خصوصيات توابع مرتبه بالا را پشتيباني مي كند. تابع مرتبه بالا تعريف تابعي است كه اجازه مي دهد آرگومانها يا مقدار بازگشتي تابع, مقدار توابع باشند. همه اين جوانب با هم مخصوصاً آخري از اصلي ترين مزاياي سبك برنامه نويسي تابعي در برابر سبك برنامه نويسي دستوري هستند. خلاصه برنامه نويسي تابعي سطح بالايي از درجه پيمانه اي بودن را فراهم مي كند. وقتي يك مسئله با تقسيم آن به مجموعه اي از زير مسئله ها تعريف مي شود, موضوع اصلي روشهايي است كه مي توان زير مسئله ها را به يكديگر چسباند. بنابراين براي افزايش قابليت پيمانه اي بودن يك مسئله مفهومي, ابتدا بايد نوع جديدي از چسب در زبان برنامه نويسي فراهم شود- قدرت اصلي برنامه نويسي تابعي .


III- برنامه نويسي تابعي در Lisp
Lisp اولين زبان برنامه نويسي تابعي است: آن براي پشتيباني محاسبات نمادين با استفاده از ليستهاي پيوندي بعنوان ساختار مركزي داده ها ابداع شده بود ( Lisp يعني پردازشگر ليست). جان مك كارتي دريافت كه روشهاي كنترل جريان توابع رياضي (بازگشت و تكرار) وسيله نظري مناسبي براي انجام محاسبات نمادين هستند. علاوه براين مفاهيم خلاصه سازي تابعي و كاربرد تابعي تعريف شده در محاسبات Lambda , سطح بالايي از خلاصه سازي موردنياز براي مسئله هاي AI مشخص شده را فراهم مي كنند.
Lisp در سال 1958 توسط مك كارتي ابداع شد و اولين نگارش محيط برنامه نويسي Lisp در سال 1960 آماده شد كه شامل يك مفسر, يك كامپايلر و مكانيسم تخصيص و بازپسگيري حافظه پويا بود (بعنوان مجموعه فضاي هرز شناخته شده است). يكسال بعد اولين زبان استاندارد با نام Lisp1.5 معرفي شد. پس از آن تعدادي از نسخه ها و محيط هاي برنامه نويسي Lisp توسعه يافته اند. مانند MacLisp، FranzLisp، InterLisp، CommonLisp، Scheme هر چند آنها در بعضي جزئيات خاص متفاوتند ولي هسته Syntax (نحو) و Semantic (معني) آنها اساساً يكسان است. هسته را در جاي ديگر معرفي خواهيم كرد. پر استفاده ترين نسخه‌هاي
Lisp ، Common Lisp و scheme هستند. در اين مقاله ما Common Lisp را براي نشان دادن جنبه هاي مختلف Lisp با مثالهاي معمولي انتخاب كرده ايم. هرچند مثالها نيز به راحتي مي توانند در نسخه هاي ديگر Lisp سازگار شوند.


 Syntax .A. (نحو) و semantics (معاني) Lisp

 1. عبارات نمادين: عناصر نحوي Lisp عبارات نمادين ناميده مي شوند (كه به صورتS-expressionsشناخته شده‌اند). داده ها و توابع (يعني برنامه هاي Lisp ) بصورت عبارات نمادين نشان داده شده اند كه مي توانند اتم ها يا ليست ها باشند. اتم ها كلمه اي شبيه اشيا‌ هستند. اتم‌ها وابسته به نوع كاراكترهايي كه براي شكل دادن يك اتم مجازند مي توانند به انواع مختلفي تقسيم شوند. انواع اصلي عبارتنداز:

Numbers:1    234-43.14159265358979    -7.5    6.02E+23
 
Symbols:SymbolSym23another-one    t    false    NILBLUE
 
Strings:  ”This is a string””977?”    ”setq””He said: \” I’m here.\” ”

 توضيح اينكه هرچند نماد خاصي مثل BLUE استفاده مي‌شود چون مفهوم مشخص براي برنامه‌نويسي دارد، اما بزودي Lisp تنها ترتيبي از حروف يا تنها يك نماد است. ليستها بندي شبيه اشياء هستند. يك ليست شامل يك پرانتز باز( دنباله‌اي از اعداد دلخواه كه بوسيله فاصله خالي از هم جدا مي‌شوند) و يك پرانتز بسته هستند. هر عنصر ليست مي‌تواند يك اتم يا ليست باشد. اينها مثالهايي از ليستها هستند:   

(This is a list) ((this) ((too))) () (((((((())))))))
 
(a b c d) (john mary tom) (loves john ?X)
 
(* (+ 3 4) 8) (append (a b c) (1 2 3))
 
(defun member (elem list)
 
    (if (eq elem (first list)) T
 
  (member elem (rest list))))

توضيح اينكه در بسياري از مثالها عناصر ليست خود ليستها هستند.چنين ليستهايي، ليستهاي تو در تو ناميده مي‌شوند. در مورد تو در تويي محدوديتي وجود ندارد. براي مثال يكي از قويترين Lisp ها را شرح مي‌دهيم: پيچيده‌ترين اشياء را به راحتي مي‌توان نوشت. تنها چيزي كه در نظر گرفته مي‌شود درستي عدد داخل پرانتزهاست. مهم توضيح اين است كه معني وابسته به يك ليست نمايش ويژه يا اتم در ليست نمايش وارد نمي‌شود. به اين معني كه همه عبارات نمادين كه در بالا توصيف شده است از لحاظ نحو برنامه‌هاي Lisp را اصلاح مي‌كنند ولي الزاماً از لحاظ معني (semantic) برنامه‌ها رااصلاح نمي‌كنند.
2. Semantics (معاني): هسته هر سيستم برنامه‌نويسي Lisp مفسر است كه كارش محاسبه مقدار براي يك عبارات نمادين داده شده است. اين فرآيند ارزيابي نام دارد. نتيجه يا  مقدار يك عبارت نمادين، يك عبارت نمادين است. كه بعد از كامل شدن ارزيابي برگردانده شده است. توضيح اينكه در واقع Lispداراي Semantics (معاني) عملياتي است كه با يك تعريف رياضي دقيق از نظريه تابع بازگشتي بدست مي‌آيد.
حلقه خواندن- محاسبه- چاپ چگونه مي‌تواند مفسر Lisp را فعال كرده و براي محاسبه عبارات نمادين و بنابراين اجراي واقعي برنامه‌هاي Lisp بكار برود؟
مسئله‌‌هاي Prolog بصورت حقايق، بديهيات و قوانين منطقي   براي استنباط حقايق جديد بيان مي‌‌ شوند . Prolog با قانون رياضي در محاسبات گزاره‌ اي و ونتايج نظري بدست آمده در زمينه اثبات قضيه خودكار در اواخر دهه1960 بنا شده است. مفسر  Lisp در واقع بعنوان يك تابع معمولاً بنام eval و جزئي از هر محيط برنامه‌‌‌نويسي Lisp است تعريف شده است (مانند تابعي كه پيش‌ساخته نام دارد). آن بوسيله فراخواني حلقه خواندن- محاسبه- چاپ در يك سيستم  Lisp جاسازي مي‌شود، وقتي يك عبارت نمادين توسط كاربر داده مي‌‌ شود ابتدا به داخل سيستم Lisp خوانده مي‌شود( خواندن هم يك تابع پيش‌ساخته است). سپس مفسر Lisp كه via نام دارد تابع eval را فراخواني مي‌كند تا عبارت نمادين را محاسبه و نتيجه عبارت نمادين را با چاپ در دستگاه كاربر برگرداند ( شگفت‌آورنيست گفتن اينكه چاپ هم يك تابع پيش‌‌ساخته است). وقتي سيستم Lispدر كامپيوتر شروع به اجرا مي‌‌شود اين حلقه خواندن- محاسبه- چاپ بطور خودكار شروع به اجرا كرده و بوسيله علامت ويژه اعلان  Lisp در ابتداي خط جديد به كاربر علامت مي‌دهد در اين مقاله ما علامت سئوا ل (?) را به عنوان اعلان Lisp بكار خواهيم برد. براي مثال:

 ( 4 3 +) ?
  7

هر وقت سيستم Lisp اجرا شود حلقه خواندن- محاسبه- چاپ فعال خواهد بود.
عبارت نمادين ( 4 3 + ) كه بوسيله هكر Lisp وارد شده است بوسيله مفسر Lisp بصورت فراخواني تابع جمع تفسير شده و نتيجه عبارت نمادين در ابتداي خط جديد 7 چاپ مي‌‌شود ارزيابي مفسر Lisp مطابق سه قانون زير انجام مي‌‌شود:
1- يكساني: يك عدد،‌ يك رشته يا نمادهاي t و nil خودشان را ارزيابي مي‌كنند (بر مي‌گردانند) به اين معني كه ارزش عدد 3،3 و ارزش رشته ”house”، رشته ”house”است. نمادt مقدار t برمي‌گرداند كه به معناي true تفسير مي‌شود وnil ، nil به معني false برمي‌‌گرداند
2- نمادها: ارزيابي يك نماد عبارت نمادين مربوط به آن را برمي‌‌‌گرداند. ( چگونگي‌ اش را در زير نشان خواهيم داد) بنابراين اگر ما فرض كنيم نماد‌ *names* به ليست
(john mary tom) وابسته است آنگاه ارزيابي *names* آن ليست را نتيجه مي‌دهد. اگر نماد color را به نماد green وابسته كنيم آنگاه green  بعنوان مقدار color برگردانده مي‌‌شود.
به بيان ديگر نمادها بعنوان متغيرهايي كه به مقاديري متصل(باند) شده‌اند تفسير مي‌‌شوند.
3- ليستها: هر ليست بعنوان يك فراخواني تابع تفسير مي‌‌شود. مفسر اول ليست دلالت بر تابعي دارد كه بايد براي بقيه عناصر( بالقوه خالي)‌ كه آرگومانهاي آن تابع را نشان مي‌دهند بكار رود. در واقع آرگومانهاي يك تابع قبلا بصورت نمادهاي پيشوندي مشخص مي‌‌شوند. اين مزيت را دارد كه توابع به سادگي مي‌توانند با تعداد دلخواهي آرگومان مشخص و استفاده شوند. ليست خالي ( ) داراي عبارت نمادين nil  بعنوان مقدارش مي‌باشد. توضيح اينكه نماد nil در واقع داراي دو معني است: يك نمايش مقدار منطقي false و ديگري نمايش ليست خالي. هر چند ممكن است اين يك بيت فرد بنظر برسد، ولي در واقع در Lisp مشكلي در شناسايي مفهوم nil بكاررفته وجود ندارد.
 ‌ ولي بطور كل آرگومانها قبل از اينكه توابع مقادير آنها  را استفاده كنند ارزيابي مي‌شوند. اولويت ارزيابي ترتيبي از آرگومانها از چپ به راست است. يك آرگو‌مان ممكن است يك اتم يا يك ليست باشد،‌درهر حالت بعنوان يك فراخواني تابع تفيسر شده و مفسر Lisp براي ارزيابي  آن فراخواني مي‌شود. براي مثال، ارزيابي زير در سيستم Lisp يك تابع به حساب مي‌آيد:

 ?(max 4 (min 9 8) 7 5)
 
 8

 در اينجا آرگومانها  5, 7, (min 9 8), 4  هستند كه در اولويتي قبل از تابعي به نام max كه نتيجه مقادير آرگومانها را به كار مي‌برد ارزيابي مي‌شوند. آرگومان اول 4 ،‌ يك عدد است پس مقدار آن 4 است. آرگومان دوم (min 9 8) است كه خودش يك فراخواني تابع است. بنابراين بايد قبل از آرگومان سوم فراخواني شود، (min 9 8) بايد توسط مفسر Lisp ارزيابي شود. چون ما بايد مفسر Lispرا براي بعضي آرگومانها در طول ارزيابي همه فراخواني‌هاي توابع استفاده كنيم مي‌‌توان گفت مفسر Lisp بصورت بازگشتي فراخواني شده است. مفسر Lisp همان مراحل را به كار مي‌برد، پس آرگومان اول 9 قبل از آرگومان دوم 8، ارزيابي مي‌شود. با بكار برروي تابع min حاصل 8 مي‌شود يعني تابع كوچكترين عدد يك مجموعه از اعداد صحيح را محاسبه مي‌‌كند. براي تابع بيروني max هم به اين معني است كه آرگومان  دوم آن 8 ارزيابي مي‌شود.
آرگومانهاي بعدي 7و5هستند كه نتيجه ارزيابي آنها مقادير  7و5 مي‌شود. حال تابع بزرگترين عدد كه max نام دارد مي‌تواند ارزيابي شود كه 8 برمي‌گرداند. اين مقدار نهايي،‌ مقدار فراخواني همه توابع مي‌‌باشد. از آنجايي كه گفته مي‌‌‌شود مفسر Lisp هميشه سعي مي‌كند مقدار يك نماد يا تفسير يك ليست بعنوان يك فراخواني تابع را تشخيص دهد ما چگونه مي‌توانيم با نمادها و ليستها بعنوان داده رفتار كنيم؟ براي مثال، اگر ما ليست (peter walks home) را وارد كنيم، آنگاه مفسر Lisp فوراً يك خطا مي‌دهد كه چيزي شبيه اين خطا مي‌گويد: تابع peter ناشناخته است (مفسرLisp بايد بقدري باهوش باشد كه بتواند ابتدا كنترل كند كه آيا تعريف تابعي براي نام تابع تعيين شده وجود دارد يا نه، قبل از اينكه هر آرماگوني را ارزيابي كند). يا اگر ما فقط house را وارد كنيم، آنگاه مفسر Lisp با خطايي شبيه اين خطا خاتمه مي‌يابد: مقداري به house متصل نيست (تخصيص نيافته است). حل اين مسئله كاملاً آسان است. زيرا عنصر اصلي هر ليست بعنوان نام تابع تفسير مي‌شود،‌هر سيستم Lisp با يك تابع پيش‌ساخته quote مي‌‌آيد كه يك عبارت نمادين را بعنوان آرگومان پذيرفته و اين عبارت نمادين را بدون ارزيابي آن برمي‌گرداند. براي مثال: ليست(quote(peter walks home)) ، به سادگي مقدار
(peter walks home) را برمي‌گرداند، و براي (quote house)، آن house را بر مي‌‌گرداند. از آنجايي كه تابع quote زياد استفاده مي‌‌‌شود، مي‌توان آن را با كاراكتر ويژه ' بيان كرد. بنابراين براي مثال بالا مي‌توانيم معادل’(Peter walks home) و’house را مشخص كنيم. برنامه‌ها بعنوان داده، يعني تابع quote به ما امكان مي‌‌‌دهد تا با فراخواني تابع بعنوان داده رفتار كنيم. براي مثال:  (quote (max 4 (min 9 8) 7 5))    يا    ’(max 4 (min 9 8) 7 5)   
قبلاً گفتيم كه مفسر Lisp يك تابع يكتايي پيش‌ساخته است كه eval نام دارد. آن صريحاً آرگومانهايش را وادار مي‌كند تا مطابق قوانين مذكور در بالا ارزيابي شوند. در بعضي حالات، آن مي‌تواند مقابل تابع  quote  قرار بگيرد بنابراين به وضوح لازم است كه يك ليست بعنوان داده مشخص شود تا سيستم Lisp بتواند يك فراخواني تابع تفسير شود، ما مي‌توانيم(eval ’(max 4 (min 9 8) 7 5))  را مشخص كنيم كه مقدار 8 را بطوري كه در بالا توصيف شد بر مي‌گرداند. به همان صورت مشخص كردن (eval ’(peter walks home)) سبب يك خطاي Lisp مي‌شود زيرا Lisp سعي مي‌كند يك تابع peter فراخواني كند. مزيت اصلي رفتار برنامه‌ها بعنوان داده اين است كه ما مي‌توانيم برنامه‌هاي Lisp (توابع) را طوري تعريف كنيم كه قادر به ساخت يا توليد برنامه‌ها باشند بطوريكه ابتدا ليست نمايش متناظر را ساخته و سپس با استفاده از تابع eval ، مفسر Lisp را به منظور ارزيابي ليست ايجاد شده بعنوان يك تابع فراخواني مي‌كند. شگفت‌آور نيست كه به اقتضاي اين خصوصيات، Lisp هنوز زبان برنامه‌نويسي برتر در زمينه برنامه‌نويسي ژنتيك AI است.
وقتي مقادير را به نمادها تخصيص مي‌دهيم كه برنامه‌نويسي برنامه‌هاي كاربردي
 real-life به ذخيره مقاديري محاسبه شده در يك متغير نياز داشته باشد تا اگر در آينده در برنامه‌ ديگري نياز باشند از هزينه محاسبه مجدد آن جلوگيري شود. در يك نگارش كاملاً تابعي Lisp ‌مقدار يك تابع تنها به تعريف تابع و مقدار آرگومانهايش در فراخواني بستگي دارد. براي اينكه Lisp را يك زبان كاربردي بكنيم (كاربردي حداقل در اين مفهوم كه بتواند بر روي كامپيوترهاي وان نيومن به خوبي اجرا شود)، ما نياز به روشي داريم تا مقادير را به نمادها تخصيص دهيم.common Lisp با يك تابع پيش‌ساخته بنام Setq مي‌آيد. Setq دو آرگومان مي‌خواهد: نماد (بنام متغير) كه يك مقدار به آن متصل شده است و يك عبارت نمادين كه بايد مقداري را فراهم كند. مفسر Lisp ارزيابي Setq را در روش خاصي انجام مي‌دهد بطوريكه آرگومان اول Setq را ارزيابي مي‌كند(متغير)،‌ اما مقدار آرگومان دوم Setq را به متغير متصل مي‌كند(براي فهم چگونگي اتصال يك مقدار به يك نماد نياز به جزئيات فني زيادي خواهيم داشت كه در اين معرفي كوتاه نمي‌توان به آن پرداخت). مقدار آرگومان دوم Setq مقدار Setq را بر مي‌گرداند. اينها مثالهايي هستند:

?color
 
error: unbound symbol color
 
?(setq color ’green)
 
green
 
?(setq max (max 3 2 5 1))
 3

توضيح اينكه در واقع Setq حالت مفسر Lisp را تغيير مي‌دهد تا دفعه بعدي كه همان متغير استفاده مي‌شود، داراي مقدار بوده و بنابراين مفسرLisp قادر به بازگرداندن آن خواهد بود. اگر اين اتفاق نيفتد آنگاه مفسر Lisp يك اخطار خواهد داد زيرا نماد متصل نشده است.
(گام 2 مفسر Lisp پيدا نشد). بنابراين آن مي‌گويدكه Setq يك اثر جانبي توليد مي‌كند زيرا حالت مفسر Lisp بطور پويا تغيير مي‌دهد. وقتي استفاده از Setq اجباري شد، به هرحال متوجه شد كه در واقع از مسير semantics (معاني) Lisp ناب دور مي‌شود. پس Setq بايد با دقت بسيار استفاده شود.
 
 B. نوع داده ليست
 برنامه‌نويسي در Lisp در واقع به معني تعريف توابعي است كه روي ليست عمل مي‌كنند. مانند ايجاد، پيمايش،‌كپي، تغيير و حذف ليستها. از آنجايي كه اين در Lisp مركزي است، هر سيستم Lisp بر مبناي مجموعه‌اي از توابع پيش‌ساخته ابتدايي كه بطور موثري عمليات اصلي ليست را پشتيباني مي‌كند مي‌آيد. ما بطور خلاصه يكي از مهمترين آنها معرفي مي‌كنيم. ابتدا نوع گزاره‌اي،‌ ما مي‌دانيم كه يك عبارت نمادين جاري يا يك ليست است يا نيست (يعني يك اتم). اين كار بوسيله تابع Listp انجام مي‌شود كه هر عبارت نمادين expr را بعنوان آرگومان پذيرفته و اگر expr ليست باشد نماد t و در غير اين صورت nil برمي‌گرداند. مثالها هستند (ما از فلش راست => براي نشان دادن نتيجه فراخواني تابع استفاده خواهيم كرد):

(listp ’(1 2 3))==>t
 
(listp ’( ))==>t 
 
(listp ’3)==>nil


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

(car ’(a b c)) ==>a (cdr ’(a b c))   ==>(b c)
 
(car ’( )) ==>nil(cdr ’(a))   ==>nil
 
(car ’((a b) c))==>(a b)


با استفاده از ترتيبي از فراخواني‌هاي توابع car و cdr مي‌توان يك ليست را از چپ به راست و از عناصر بيروني به سمت عناصر داخلي ليست پيمايش كرد.
براي مثال، در طول ارزيابي  (car (cdr ’(see the quote))) مفسر Lisp ابتدا عبارت
 (cdr ’(see the quote))را ارزيابي خواهد كرد كه ليست (the quote) را برمي‌گرداند، سپس به تابع car پاس مي‌شود كه نماد the را بر مي‌گرداند. اينها مثالهايي ديگر هستند:


(car (cdr (cdr ’(see the quote))))   ==>quote
 
(car (cdr (cdr (cdr ’(see the quote))))) ==>nil
 
(car (car ’(see the quote)))  ==>?

 در طول ارزيابي مثال اخير چه اتفاقي خواهد افتاد؟ ارزيابي (car ’(see the quote)) نماد see را بر‌مي‌گرداند.سپس اين به عنوان آرگومان به فراخواني بيروني car پاس مي‌شود. چون تابع car يك ليست را به عنوان آرگومان مي پذيرد پس مفسر Lisp بلافاصله ارزيابي ديگر را با خطايي مانند اين خطا متوقف خواهد كرد: سعي مي‌شود Car SEE بدست آيد ولي Listp نيست. يك توضيح كوتاه تاريخي: نامهاي Car,cdr از روشهاي قديمي هستند زيرا آنها در اولين نگارش Lisp كه بر مبناي مجموعه عمليات كد ماشين كامپيوتر انتخاب و پياده سازي شده بودند (car از محتواي ثبات آدرس استفاده مي‌كند و cdr از محتواي ثبات كاهش استفاده مي‌كند). به منظور نوشتن كد Lisp خواناتر، common Lisp  يا در تابع first و rest بوجود آمد. ما نامهاي قديمي را استفاده مي‌كنيم تا براي خواندن و فهم كد AI Lisp قديمي قادر باشيم. براي ساخت ليستها، يك تابع ابتدايي Cons مانند Car  و cdr وجود دارد كه براي ساخت يك ليست بكار مي‌رود. Cons دو عبارت نمادين را مي‌پذيرد كه اولي بعنوان يك عنصر جديد در جلوي دومي وارد مي‌شود. در مثالهاي زير ملاحظه مي‌كنيد:

(cons ’a ’(b c))  ==>(a b c)
 
(cons ’(a d) ’(b c))==>((a d) b c)
 
(cons (first ’(1 2 3)) (rest ’(1 2 3)))    ==>(1 2 3)


 در اصل، Cons و ليست خالي با هم براي ساخت ليستهاي خيلي پيچيده كافي هستند، براي مثال:

(cons ’a (cons ’b (cons ’c ’( ))))    ==>(a b c)
 
(cons ’a (cons (cons ’b (cons ’c ’( ))) (cons ’d ’( )))) ==>(a (b c) d)

 چون اين كار كاملاً طاقت‌فرساست،‌ سيستمهاي Lispبسياري با توابع ليست پيش‌ساخته بسيار پيشرفته بوجود مي‌آيند. براي مثال، تابع List با تعداد دلخواهي عبارت نمادين يك ليست مي‌سازد، و تابع append با الحاق آرگومانهايش كه بايد ليست باشند يك ليست جديد مي‌سازد. equal تابعي است كه اگر عناصر و ترتيب آنها در دو ليست يكسان باشد t ، در غير اين صورت nil بر ميگرداند. مثال:

(list ’a ’b ’c) ==>(a b c) 
 
(list (list 1) 2 (list 1 2 3))    ==>((1) 2 (1 2 3))
 
(append ’(1) (list 2)) ==>(1 2)   
 
(append ’(1 2) nil ’(3 4))==>(1 2 3 4)
 
(equal ’(a b c) ’(a b c))   ==>t    
 
(equal ’(a b c) ’(a c b)) ==>nil

 C. تعريف توابع جديد
 برنامه‌نوسي در Lisp با تعريف توابع جديد انجام مي‌شود. در اصل اين به اين معني است كه: مشخص كردن ليستها در يك روش نحوي معين. مشابه تابع setq كه بوسيله مفسر Lisp در يك روش خاص رفتار مي‌كرد. تابع خاص defun است كه براي ايجاد اشياي تابع جديد توسط مفسر Lisp بكار مي‌رود.  defunيك نماد دال برنام تابع، يك ليست از پارامترها(ممكن است خالي باشد) براي تابع جديد و تعداد دلخواهي از عبارات نماديني كه بدنه تابع جديدرا تعريف مي‌كند را به عنوان آرگومانهايش مي‌پذيرد. اين تعويض از يك تابع ساده به نام my-sum است كه دو آرگومان مي‌پذيرد و با استفاده از تابع پيش‌ساخته آنها را جمع مي‌كند.

(defun my-sum (x y)
  
(+ x y))

 اين عبارت به همان روشي كه بعنوان يك تابع فراخواني مي‌شود در سيستم Lisp وارد مي‌شود. ارزيابي يك تعريف تابع نام تابع را بعنوان مقدار برمي‌گرداند، اما يك شئ تابع را بعنوان اثر جانبي ايجاد خواهد كرد و وقتي Lisp شروع به اجرا مي‌‌كند آن را به مجموعه تعاريف توابع شناخته شده توسط سيستم Lisp اضافه مي‌كند (حداقل مجموعه توابع پيش‌ساخته)
توضيح اينكه در اين مثال بدنه شامل تنها يك عبارت نمادين است. هر چند بدنه مي‌تواند شامل ترتيب دلخواهي از عبارات نمادين باشد مقدار آخرين عبارت نمادين از بدنه مقدار تابع را تعيين مي‌كند. به اين معني است كه در واقع همه عناصر بدنه بي تاثير  هستند مگر اينكه اثرات جانبي تصميم‌گيري توليد كنند.
لسيت پارامتر تابع جديدmy-sum به ما مي‌گويد وقتي فراخواني مي‌شود درست دو عبارت نمادين را بعنوان آرگومان مي‌پذيرد. بنابراين اگر شما(my-sum   3  5) را در سيستمLisp وارد كنيد مفسرLisp قادر خواهد بود كه تعريف براي نام تابع مشخص شده بيابد و سپس آرگومانهاي داده شده را از چپ به راست پردازش كند وقتي اين كار انجام شد آن مقدار هر آرگومان را مطابق پارامتر مشخص شده در ليست پارامتر تعريف تابع وصل خواهد كرد(تخصيص خواهد داد) در مثال ما بدين معني است كه مقدار آرگومان اول كه3 است(3 همان عدد3 است كه خودش را ارزيابي كرده است) به پارامترx متصل مي‌كند. سپس مقدار آرگومان دوم كه 5 است به پارامترy متصل مي‌شود. چون مقدار يك آرگومان به يك پارامتر متصل مي‌شود، اين روش فراخواني با مقدار ناميده شده است. بعد از مقدار‌يابي براي همه پارامترها مفسرLisp قادر به ارزيابي بدنه تابع خواهد بود. مثال بدين معني است كه (  3  5 +) فراخواني خواهد شد. نتيجه فراخواني8 است كه بعنوان نتيجه فراخواني(my-sum  3 5) برگردانده مي‌شود. بعد از تكميل فرا‌خواني تابع اتصالات موقت پارامترهايx وy حذف مي‌شوند. هنگامي كه يك تعريف تابع جديد در سيستمLisp وارد مي‌شودمي‌تواند به عنوان جزئي از تعريف تابع جديد به همان روش كه بعنوان تابع پيش ساخته استفاده شده است بكار برده شود بطوريكه در مثال زير نشان داده شده است.

(defun double-sum (x y)
 
  (+ (my-sum x y) (my-sum x y)))

كه با دوبار فراخوانيmy-sum جمع آرگومانهايش را دو برابر خواهد كرد اين مثال ديگري از يك تعريف تابع است نشان دادن استفاده از عبارات نمادين چند‌گانه در بدنه تابع است.

(defun hello-world () (print ”Hello World!”) ’done)

 

 اين تعريف تابع پارامتري ندارد زيرا ليست پارامتر آن خالي است بنابراين وقتي(hello-world) فراخواني مي‌شود مفسرLisp بلافاصله (print ”Hello World!”) را ارزيابي و رشته
 ”Hello World!”را روي نمايشگر شما بعنوان يك اثر جانبي چاپ مي‌كند سپس نماد’done را ارزيابي خواهد كرد وdone را به عنوان نتيجه فراخواني تابع برمي‌گرداند.


D. تعريف ساختارهاي كنترلي
 هر چنداكنون تعريف توابع جديد با تعريف توابع پيش ساخته  و توابعي كه كاربر تعريف مي‌كند ممكن است برنامه‌نويسي درLisp بسيار خسته كننده خواهد شداگر كنترل جريان اطلاعات بوسيله شاخه‌هاي شرطي ممكن نبود شايد بارها تكرار مي‌شد تا اينكه يك روند توقف اجرا شود گزينشLisp بر مبناي ارزيابي توابع است توابع كنترل تستهايي روي عبارات  نمادين واقعي انجام مي‌دهد و ارزيابي عبارات نمادين متناوب را بسته به نتايج انتخاب مي‌كنند تابع اساسي براي تعيين اثباتهاي شرطي درcond،Lisp است.cond تعداد دلخواهي آرگومان رامي‌پذيرد هر آرگومان يك بخش ممكن را بيان مي‌كنند و بعنوان يك ليست نمايش داده شده كه عنصر اول يك تست و بقيه عناصر اعمال (عبارات نمادين) هستند كه اگر تست انجام شود  ارزيابي مي‌شوند مقدار آخرين عمل به عنوان مقدار پيشنهادي برگردانده مي‌شود همه آرگومانهاي ممكنcond (يعني بخشها) تا زماني كه بخش اول بطور مثبت تست شوداز چپ به راست ارزيابي مي‌شوند درآن حالت مقدار آن بخش مقدار كل تابعcond است. در واقع اين مفهوم بسيار پيچيده تر از آن است اجازه دهيد تابعverbalize-prop زيركه يك مقدار احتمال را بيان مي‌كند. به عنوان يك عدد حقيقي فرض مي‌كنيم.

 (defun verbalize–prop (prob-value)
 
 (cond ((> prob–value 0.75) ’very-probable)
 
 ((> prob–value 0.5) ’probable)
 
 ((> prob–value 0.25) ’improbable)
 
   (T ’very-improbable)))

وقتي(verbalize-prop 0.33) فراخواني مي‌شود مقدار واقعي آرگومانها به پارامترprop-value متصل مي‌شود.سپسcond با آن اتصالات ارزيابي مي‌شود very-probable)’((>prop-value)است.> يك گزاره پيش ساخته است  كه تست مي‌كند كه آيا آرگومان اول از دومي بزرگتر است،چونpropvalue،0.33 است. بهnil ارزيابي مي‌شود كه به معني انجام نشدن تست است. بنابراين ارزيابي اين بخش پيشنهادي بلافاصله پايان مي‌يابد. و سپس پيشنهاد
 ((> prob–value 0.5) ’probable)ارزيابي مي‌شود كه تابع تست باز هم  nilبرمي‌گرداندبنابراين ارزيابي هم پايان مي‌يابد. سپس ((prop-value 0.25) ’improbable) ارزيابي مي‌شود حال با بكار بردن تابع تستT برگردانده مي‌شود كه به معني انجام تست است.آنگاه همه اعمال اين بخش كه بطور مثبت تست شده است. ارزيابي ومقدار آخرين عمل به عنوان مقدارcond برگردانده مي‌شود در مثال ما تنها عملimprobable’ تعيين مي‌شود كه مقدارimprobable (غيرمحتمل) را برمي‌گرداند از آنجايي كه اين مقدارcond را تعيين مي‌كند و عبارت cond تنها عبارت بدنه تابعverbalize-prop است. نتيجه فراخواني improbable ,((verbalize-prop 0.33) است. توضيح اينكهاگرما (verbalize- prop 0.1)را وارد كنيم مقدارvery- improbable را بر‌مي‌گرداند زيرا تست هر سه با شكست مواجه شده و بايد بخش (T ’very-improbable)ارزيابي شوددر اين حالت نمادT به عنوان تستي كه هميشهT بر‌مي‌گرداند استفاده شده است بنابراين مقدار اين پيشنهاد
 very- improbable است.
 
E. تعريف توابع بازگشتي
 دومين روش اصلي براي تعريف كنترل جريان درLisp تعاريف توابع بازگشتي هستند. تابعي كه از تعريفش بعنوان جزئي از تعريفش استفاده مي‌كند باز‌گشتي نام دارد. بنابراين، يك تعريف بازگشتي، تا جايي كه امكان دارد مسئله‌اي را به قسمتهاي كوچكتر تقسيم مي‌كند سپس اين قسمتهاي كوچكتر را با استفاده از توابع مشهور و جمع پاسخهاي يكسان حل كرده و حل برنامه را كامل مي‌كند. بازگشت يك روش طبيعي براي كنترل ساختارهاي داده‌اي  است كه اندازه معيني ندارد. مانند ليستها، درختها و گرافها. بنابراين براي مسئله‌هايي كه در يك فاصله از حالات دنبال حل كانديد مي‌گردند مناسب است.   
Lisp اولين زبان برنامه‌نويسي كاربردي بود كه با روش معين تعريف تعاريف بازگشتي را پشتيباني كرده است. ما از دو مثال كوچك براي نشان دادن بازگشت درLisp استفاده خواهيم كرد. اولين مثال براي تعيين طول يك ليست طويل دلخواه استفاده مي‌شود. طول يك ليست برابر تعداد عناصر آن است. تابع بازگشتي آن به صورت زير است.

(defun length (list)
 
(cond ((null list) 0)
 
 (T (+ 1 (length (cdr list))))))

 وقتي يك تعريف بازگشتي تعريف مي‌شود. ما بايد حالتهاي اساسي راشناسايي كنيم يعني آن قسمتهايي كه نمي‌توانند بيشتر تجزيه شوند. مسئله اندازه وابسته به ليست است. كوچكترين مسئله اندازه در ليست، ليست خالي است. بنابراين اولين چيزي كه ما بايد مشخص كنيم تستي براي شناسايي ليست خالي است و تعيين اينكه طول ليست خالي بايد چقدر باشد تابع پيش‌ساخته  null تست مي‌كند كه آيا اين ليست خالي است در اين صورت t برمي‌گرداند. از آنجايي كه ليست خالي بدون عنصر است تعريف مي‌كنيم كه طول ليست خالي صفر باشد كار ديگري كه بايد انجام شود تجزيه مسئله اندازه به قسمتهاي كوچكتر است كه همان مسئله مي‌تواند براي فسمتهاي كوچكتر استفاده شود. تجزيه ليست مي‌تواند با استفاده از توابع cdr,car انجام شود. به اين معني كه ما بايد تعيين كنيم تا وقتي كه ليست خالي پيدا شود عنصر اول و بقيه عناصر ليست چه كار بكنند. از آنجايي كه ما ازقبل ليست خالي را بعنوان حالت اساسي شناسايي كرديم، مي‌توانيم فرض كنيم تجزيه برروي ليستي شامل حداقل يك عنصر انجام خواهد شد. بنابراين هر بار كه قادر خواهيم بود تا با بكار بردن cdr بقيه عناصر ليست را بدست آوريم، ما يك عنصر اضافي پيدا كرديم كه بايد براي افزايش تعداد عناصر ليست قبلا شناسايي شده بوسيله يك استفاده مي‌شود. استفاده از اين تعريف تابع(length ’( ))  بلافاصله صفر بر‌خواهد گرداند و اگر
(length ’(a b c)) را فراخواني كنيم، نتيجه 3 خواهد بود زيرا براي اينكه ليست خالي شود بايد سه فراخواني بازگشتي member انجام دهيم بعنوان مثال دوم، تعريف بازگشتي را در نظر مي‌گيريم كه تست مي‌كند كه آيا عنصر داده شده در ليست داده شده قرار دارد اگر عنصر براستي در ليست پيدا شود زير ليستي كه با عنصر پيدا شده شروع مي‌شود را برمي‌گرداند اگر عنصر پيدا نشوددnil برگردانده مي‌شود مثال فراخواني‌ها هستند. 

(member ’b ’(a f b d e b c))    ==> (b d e b c)
 
  (member ’k ’(a f b d e b c))    ==>    nil

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

(defun member (elem list)
 
(cond ((null list) nil)
 
  ((equal elem (car list)) list)
 
(T (member elem (cdr list)))))

F. توابع مرتبه بالا
 درLisp توابع مي‌توانند بعنوان آرگومان استفاده شود تابعي كه بتواند توابع را بعنوان آرگومانهايش بپذيرد تابع مرتبه بالا ناميده مي‌شود. مشكلات فراواني وجود دارند كه يكي پيمايش يك ليست(يا يك درخت يا يك گراف) است كه بايد براي هر ليست عنصر تابع معيني استفاده شود. براي مثالfilter تابعي است كه تستي براي عناصر ليست به‌كار مي‌برد و آنهايي كه شكست مي‌خورند را حذف مي‌كند. نگاشتها توابعي هستند كه همان تابع را روي هر عنصر ليست به كار مي‌برند تا ليستي از نتايج را برگردانند. تعاربف توابع مرتبه بالا مي‌تواند براي تعريف توابع عمومي پيمايش ليست استفاده شود كه آنها از توابع خاصي كه براي پردازش عناصر ليست بكار مي‌روند خلاصه مي‌شوند (چكيده مي‌شوند). به منظور پشتيباني تعاريف مرتبه بالا يك تابع خاص است كه يك تابع و دنباله‌اي از آرگومانها را به عنوان آرگومان مي‌پذيرد و آن تابع را در آرگومانهاي آنها به كار مي‌برد. بعنوان مثال با استفاده ازfuncall، تابع عموميfilter را تعريف خواهيم كرد كه مي‌تواند به اين صورت فراخواني شود:
(filter ’(1 3 -9 -5 6 -3) #’plusp)   ==>(1 3 6)
plusp يك تابع پيش ساخته است كه كنترل مي‌كند آيا يك عدد داده شده مثبت است يا نه؟ اگر باشد آن عدد را بر‌مي‌گرداند در غير اين صورتnil بر‌مي‌گرداند نماد خاص# بكار مي‌رود تا به مفسرLisp بگويد كه مقدار آرگومان يك شي تابعي است . تعريف به صورت زير است:

(defun filter (list test)
 
   (cond ((null list) list)
 
((funcall test (car list))
 
(cons (car list) (filter (cdr list) test)))
 
    (T (filter (cdr list) test))))

 اگر ليست خالي باشد آنگاه بسادگي برمي‌گردد در غير اين صورت تابع تست روي عنصر اول ليست بكار مي‌رود. اگر تابع تست موفق شودcons بكار مي‌رود تا ليست حاصل را با استفاده از اين عنصر و همه عناصري كه در طول فراخواني بازگشتيfilter ازcdr و تابع تست استفاده مي‌كنند بسازد. اگر تابع تست براي عنصر اول با شكست مواجه شود اين عنصر بسادگي با بكاربردنfilter بصورت بازگشتي روي عناصر باقيمانده  پرش مي‌كند. يعني اين عنصر نمي‌تواند جزئي از ليست حاصل باشد تابع مي‌تواند براي بسياري از توابع مختلف تست استفاده شود مانند:


(filter ’(1 3 A B 6 C 4) #’numberp)    ==> (1 3 6 4)
 
(filter ’(1 2 3 4 5 6) #’even)    ==> (2 4 6)


  به عنوان مثال ديگري از تعريفfilter تابع مرتبه بالا، مامي‌خواهيم يك تابع نگاشت ساده تعريف كنيم  كه يك تابع روي همه عناصر يك ليست بكاررفته، ليستي از همه مقادير بر‌مي‌گرداند. اگر تابع  my-map را فراخواني كنيم آنگاه تعريفي شبيه اين داريم:

 (defun my-map (fn list)
 
 (cond ((null list) list)
 
(T (cons (funcall fn (car list)) (my-map fn (cdr list))))))

اگر يك تابع Double وجود داشته ياشد كه تنها عدد را دو برابر كند آنگاه يك فراخواني ممكن my-map به اين صورت مي‌تواند باشد:
(my-map #’double ’(1 2 3 4))==>   (2 4 6 8)
بارها شده كه يك تابع بايد يكبار استفاده مي‌شد. بنابراين اگر ما بتوانيم مستقيما تعريفي از يك تابع بعنوان آرگومان از تابع نگاشت فراهم كنيم كاملا مناسب خواهد بود براي اينكار تعريف عبارت lambda را پشتيباني مي‌كند. ما قبلا به طور غير رسمي نماد‌سازي عبارات را در بخش II بعنوان تعريف توابع بي نام يا مستعار معرفي كرديم. در Lisp عبارات lambda با استفاده از نوع خاصي از lambda تعريف مي‌شوند نوع عمومي عبارت lambda به اين صورت است:


(lambda (   parameter . . . ) body . . . )


  يك عبارت lambda امكان مي‌دهد تا ما تعريف تابع را از نام تابع تشخيص دهيم عبارات lambda مي‌توانند به جاي نام تابع در تابع funcall استفاده شوند مانند عبارت كه تابع double ما مي‌تواند باشد:

(lambda (x) (+ x x))

براي مثال: فراخواني تابع my-map بالا مي‌تواند با استفاده از عبارت lambda مجدداً به صورت زير بيان شود:

(my-map #’(lambda (x) (+ x x)) ’(1 2 3 4)    ==>   (2 4 6 8)

 يك عبارت lambda يك شئ تابعي بر مي‌گرداند كه به نام تابع متصل نيست در تعريف
my-map ، پارامتر fn را بعنوان متغير نام تابع استفاده مي‌كنيم. وقتي شكل lambda محاسبه شد مفسر Lisp شئ تابعي را به متغير نام تابع متصل خواهد كرد. به اين طريق يك پارامتر تابع بصورت يك نام تابع پويا استفاده مي‌شود. نماد # صروري است تا به Lisp بگويد كه نه تنها يك شئ تابعي را وصل كند بلكه بايد اتصالات محلي و سراسري مقادير وابسته به شئ تابعي را نيز نگه دارد. اين تنها با استفاده از عملگر quote امكان‌پذير نخواهد بود (متأسفانه به دليل محدوديت جا جزئيات بيشتري داده نمي‌شود).
 
 G. ساير زبانهاي برنامه‌نويسي تابعي غير از Lisp
 ما Lisp را به عنوان نماينده اصلي زبان برنامه‌نويسي تابعي معرفي كرديم (مخصوصاً نسخه پر استفاده Common Lisp )، زيرا هنوز هم زبان برنامه‌نويسي پر استفاده‌اي براي تعدادي از مسئله‌هاي هوش مصنوعي مانند فهم زبان طبيعي، استخراج اطلاعات، يادگيري ماشين،‌ برنامه‌ريزي AI يا برنامه‌نويسي ژنتيك است. دركنار Lispتعدادي  از زبانهاي برنامه‌نويسي تابعي ديگر توسعه يافتند. ما بطور خلاصه دو عضو مشهور را ذكر مي‌كنيم، ML و Haskell.
ML  برگرفته از Meta-Language است يك زبان برنامه‌نويسي تابعي با دامنه ايستاست. تفاوت اصلي‌اش با Lisp درsyntax (نحو) است (كه بيشتر شبيه پاسكال است)، و يك نوع سيستم چند ريختي محض است (يعني بكاربردن انواع قوي و نوع استنتاجي بوسيله متغيرهايي كه نياز به اعلان ندارند). نوع هر متغير اعلان شده و عبارت مي‌تواند در زمان كامپايل تعيين شود.  MLتعريف انواع داده خلاصه را پشتيباني مي‌كند، به صورتي كه در مثال زير شرح داده شده است:


 datatype tree = L of int
|   int * tree * tree;


  خوانده مي‌شود’’ هر درخت دو دويي داراي يك برگ شامل يك عدد صحيح و يا يك گره
شامل يك عدد صحيح و دو درخت است( زير درختها)‘‘ در مثال بعدي، مثالي از تعريف يك تابع بازگشتي كه روي يك ساختار درخت بكار مي‌رود نشان داده شده است:


fun depth(L ) = 1
 
|   depth(N(i,l,r)) =
 
  1 + max(depth l, depth r);


 
تابع depth نگاشتي از درختها به اعداد است. عمق هر برگ 1 است و عمق هر درخت ديگر 1 بعلاوه بيشترين عمق زير درختهاي چپ و راست آن است.
Haskell شبيه ML است:  Syntax مشابهي بكار مي‌برد، دامنه‌اش هم ايستاست و از همان روش استنتاج استفاده مي‌كند. با ML در اين تفاوت دارد كه يك زبان كاملاً تابعي است. به اين معني است كه به اثرات جانبي اجازه نداده و شامل هيچ نوع ويژگي دستوري نيست، در اصل متغير و جملات انتسابي ندارد. بعلاوه از يك تكنيك ارزيابي كند استفاده مي‌‌كند، كه زير عبارت را ارزيابي نمي‌كند تا موقع نياز مقدارش معلوم باشد. ليستها رايجترين ساختار داده در Haskell هستند. براي مثال [1,2,3] ليستي از سه عدد صحيح 3,2,1 است ليست [1,2,3] در Haskell در واقع خلاصه‌نويسي شده ليست 1:(2:(3:[ ] )) است، كه[ ]  ليست خالي است و: عملگري ميانوندي است كه آرگومان اولش را جلوي آرگومان دومش اضافه مي‌كند( يك ليست). بعنوان مثالي از يك تابع كاربر تعريفي كه روي ليستها عمل مي‌كند، مسئله شمارش تعداد عناصر در يك ليست با تعريف تابع length ملاحظه مي‌شود.


length :: [a] -> Integer
 
length [ ] = 0
 
length (x:xs) = 1 + length xs


 خوانده مي‌شود’’طول ليست خالي 0 است، و طول ليستي كه عنصر اولش x است و بقيه xs است،1 بعلاوه طول xs است‘‘. در Haskell تابع invocation احضار با تطبيق الگو راهنمايي مي‌كند، براي مثال طرف چپ معادله داري الگوهايي مانند[ ] و x:xs است. در يك كاربرد تابع اين الگوها با پارامترهاي واقعي تطبيق داده مي‌شوند [ ] ) تنها با ليست خالي مطابقت مي‌كند، و x :xs  با هر ليست با حداقل يك عنصر با موفقيت تطبيق مي‌كند، x به عنصر اول و xs به بقيه ليست متصل مي‌شوند). اگر تطبيق موفقيت‌آميز باشد طرف راست معادله ارزيابي و بعنوان نتيجه كاربرد برگردانده مي‌شود. اگر با شكست مواجه شود معادله بعدي سعي مي‌شود، و اگر همه معادلات با شكست مواجه شوند،‌ حاصل يك خطا مي‌شود.
اين پايان كوتاه ما از’’سفر در Lisp ‘‘ است. ما تنهاي توانستيم جنبه بسيار مهم Lisp را مطرح كنيم. خوانندگان علاقمند به جزئيات خاص بيشتر بايد حداقل يكي از كتابهاي مذكور در  آخر مقاله را كنكاش كنند. بقيه اين مقاله معرفي الگوي برنامه‌نويسي ديگري بنام ‌Prolog است كه در برنامه‌نويسي AI بطور گسترده مورد استفاده قرار مي‌‌گيرد.


IV. برنامه‌‌نويسي منطقي در Prolog
در دهه 1970 يك الگوي ديگر براي محاسبات نمادين در برنامه‌نويسي AI از موفقيت در زمينه اثبات قضيه خودكار ارئه شد. حل رويه اثبات بطور قابل توجهي توسط رابينسون
(1965) توسعه يافته كه كه با منطق رسمي نشان داده شده است، در محاسبات گزاره‌اي خاص مي‌‌توان بعنوان نمادي براي تعيين الگوريتم‌ها و بنابراين براي انجام محاسبات نمادين استفاده شود. در اوايل (دهه 1970) Prolog ، مخفف(برنامه‌نويسي در منطق) اولين زبان‌‌ برنامه‌‌نويسي بر مبناي منطق پديدار شد. آن توسط آلن كالمرار، رابرت كووا لسكي و فيليپ راسل توسعه يافته است. اساس Prolog شامل يك روش براي مشخص كردن گزاره‌هاي محاسبات گزاره‌اي و تصميات محدود است. برنامه‌‌نوسي در Prolog شامل مشخصات حقيقي در مورد اشياء و ارتباط آنها و قوانيني كه ارتباطات را مشخص مي‌كند، است. برنامه‌هاي Prolog مجموعه‌اي از جملات اعلاني در مورد يك مسئله هستند زيرا آنها نحوه محاسبه نتيجه را مشخص نمي‌‌‌كند.بلكه ساختار منطقي نتيجه را مشخص مي‌‌كنند  Prolog با برنامه‌نويسي دستوري و حتي برنامه‌‌نويسي تابعي در تعريف نحوه محاسبه نتيجه كاملاً متفاوت است. با استفاده از Prolog برنامه‌نويسي مي‌تواند در يك سطح خيلي خلاصه و كاملاً نزديك به مشخصات رسمي يك مسئله انجام مي‌‌گيرد. Prolog  هنوز هم مهمترين زبان برنامه‌نوسي منطقي است. تعدادي از سيستمهاي برنامه‌نوسي تجاري در بازار موجود است كه شامل ماجولهاي مدرن برنامه‌‌‌نويسي هستند، يعني كامپايلر، Debugger  و ابزارهاي تجسم. Prolog در تعدادي از زمينه‌هاي AI  مانند سيستم‌هاي خبره و پردازش زبان طبيعي بطور موفقيت‌آميزي استفاده شده است. اما در زمينه‌هاي ديگري مانند سيستم‌ هاي مديريت پايگاه داده رابطه‌اي يا در آموزش نيز استفاده مي‌شود. يك برنامه Prolog بسيار ساده برنامه‌اي است كه شامل دو حقيقت و يك قاعده است.


scientist(godel).
 
scientist(einstein).
 
logician(X) :- scientist(X).


دو جمله اول مي‌تواند بصورت ’’Godel is a scientist ‘‘ و ’’Einstein is a scientist ‘‘ تفسير شود.جمله قانون مي‌‌‌گويد: ’’X is a logician if x is a scientist ‘‘. براي تست اين برنامه بايد عبارات پرس و جو( يا قضايا) را مشخص كنيم كه Prolog سعي مي‌كند با استفاده از برنامه مشخص شده به آنها جواب دهد(يا اثبات كند). يك پرس و جوي ممكن اين است: ?- scientist(godel).

كه مي‌تواند به صورت ’’Is Godel a scientist?‘‘ بيان شود. Prolog با بكار بردن رويه اثبات پيش‌ساخته خودش ’’yes‘‘ جواب خواهد داد، زيرا ممكن است يك حقيقت پيدا شود كه كاملاً مطابق با پرس و جو باشد. ديگر پرس و جوي ممكن بصورت سئوال:
’’who is a scientist?‘‘و در Prolog بصورت زير بيان مي‌شود:

?- scientist(X).

  Prolog نتيجه خواهد داد’’X = godel , X= Einstein ‘‘. در اين حالت Prolog نه‌تنها جواب مي‌دهد’’yes ‘‘ بلكه همه متغيرهاي متصل به x را كه در طول اثبات موفق پرس و جو پيدا مي‌كند را بر مي‌گرداند. مثال ديگر، ممكن است ما با پرس و جوي Prolog زير سئوال كنيم ’’who is a logician ‘‘:

?- logician(X).
 

اثبات اين پرس و جو همان مجموعه‌اي از حقايق را كه قانون مشخص كرده است را نتيجه مي‌دهد. سرانجام ممكن است ما پرس و جوي زير را مشخص كنيم:

?- logician(mickey-mouse).

در اين حالت Prolog جواب خواهد داد با ’’No ‘‘. هر چند قانون مي‌گويد كسي منطق‌دان است كه دانشمند هم باشد، ‌ولي Prolog حقيقتي نمي‌يابد كه بگويدMickey Mouse دانشمند است. توضيح اينكه Prolog تنها نسبت به برنامه داده شده مي‌تواند پاسخ بدهد. در واقع به اين معني است كه ‘‘ No, I couldn’t deduce the fact‘‘. اين ويژگي بعنوان فرض جهان بسته يا رد آن بصورت شكست،‌ مشهور است. به اين معني كه Prolog همه اطلاعات لازم براي حل مسئله موجود در پايگاه داده را فرض مي‌‌كند.
جملات برنامه‌هاي Prolog شامل مجموعه‌اي از جملات بنام بند هستند كه براي نمايش داده‌ها و برنامه‌ها استفاده مي‌شوند. نماد نقطه‌ براي پايان دادن بند بكار مي‌رود. يك واژه مي‌تواند يك ثابت(نامهاي نمادين كه با يك حرف كوچك شروع مي‌شوند مانند godel يا eInstein )، يك متغير(نمادهايي كه با يك حرف بزرگ شروع مي‌شوند مانند x يا ‌ Scientist)، يا يك ساختار باشد. ساختارهاي گزاره‌هاي اتمي محاسبات گزار‌ه‌اي را نمايش مي‌دهند و شامل عملگر نام و يك ليست پارامتر هستند. هر پارامتر مي‌تواند يك واژه باشد به اين معني كه واژه‌ها،‌ اشياء‌ بازگشتي هستند. Prolog سه نوع بند را تشخيص مي‌دهد: حقايق،‌قوانين و پرس و جوها. يك حقيقت با يك ساختار واحد نمايش داده مي‌شود كه بعنوان يك گزاره درست ساده تفسير مي‌شود. قبلاً در مثال ساده برنامه بالا دو حقيقت ساده را معرفي كرديم.
اينها چند مثال ديگر هستند:


 male(john).
 
 male(bill).
 
 female(mary).
 
 female(sue).
 
 father(john, mary).
 
 father(bill,john).
 
 mother(sue,mary).


توضيح اينكه اين حقايق داراي معاني ذاتي نيستند يعني معني عملگر نام father تعريف نشده است. براي مثال با بكار بردن حواس معمول ممكن است آن را بصورت
’’John is the father of mary‘‘ تفسير كنيم. هر چند براي Prolog اين معني وجود ندارد و تنها يك نماد است.
قوانين متعلق به نوع ديگري از بندها هستند. يك بند قانون شامل دو قسمت است،‌ سر كه تنها يك واژه است و بدنه كه تنها يك واژه يا يك اتحاد است. يك اتحاد يك مجموعه از واژه‌هاست كه با نماد كاما از هم جدا مي‌شوند.
منطقاً يك بند قانون بعنوان يك استدلال تفسير مي‌شود، اگر همه عناصر بدنه درست باشند، آنگاه عنصر سر نيز درست است. بنابراين بدنه بند به صورت قسمت if (اگر) و سر بند بصورت قسمت then (آنگاه) قانون مشخص مي‌شوند.
اين مثال براي مجموعه‌اي از بندهاي قانون است:

 parent(X,Y) :- mother(X, Y).
 
 parent(X,Y) :- father(X, Y).
 
grandparent(X,Z) :- parent(X,Y), parent(Y,Z).


قانون اخير خوانده مي‌شود:

’’X is a grand parent of z if X is a parent of y and  y is a parent of z ‘‘


دو قانون اولي مي‌گويند:

’’some one is parent if it is the father or mother of some one else‘‘


دليل رفتار دو قانون اول را هنگام معرفي رويه اثبات Prolog بعنوان فصلي بطور آشكار خواهد آمد. قبل از انجام اين كار بايد آخرين نوع بند را معرفي كنيم،‌ بند پرس و جو (كه بند هدف ناميده مي‌شود). يك پرس و جو براي فعال كردن رويه اثبات Prolog بكار مي‌رود.
منطقاً يك پرس و جو مشابه يك قضيه مجهول است. آن شكلي مشابه حقيقت دارد تا به Prolog بگويد كه يك پرس و جو بايد اثبات شود، عملگر مخصوص پرس و جو –?است معمولاً در جلوي پرس و جو نوشته مي‌شود. در مثالهاي ساده برنامه Prolog معرفي شده در بالا، قبلاً توصيفي غير رسمي از چگونگي استفاده پرس و جو در Prologرا ديديم.
فرايند استنتاج Prolog شامل دو مؤلفه اساسي است: روش جستجو و يكي كننده. روش جستجو براي جستجو ميان حقيقت و قانون پايگاه داده بكار مي‌رود در حالي كه يكي‌سازي براي تطبيق الگو و بازگرداندن اتصالاتي كه يك عبارت صحيح مي‌سازد بكار مي‌رود.
يكي‌ساز روي دو واژه بكار مي‌رود و سعي مي‌كند با تركيب آن دو يك واژه جديد شكل بدهد. اگر يكي سازي ممكن نباشد آنگاه گفته مي‌شود يكي‌سازي شكست خورده است. اگر دو واژه مادي هيچ متغيري نباشند آنگاه يكي‌سازي در واقع از بررسي اينكه آيا واژه‌ها برابرند، خواهد كاست. براي مثال، يكي‌سازي دو واژه father (john,mary) و father(john,mary)  موفق مي‌شود در حاليكه يكي‌سازي جفت واژه‌هاي زير با شكست مواجه خواهند شد.

father(X,mary) و father(john,sue)
 
sequence(a,b,c) و sequence(a,b)

  اگر يك واژه حاوي يك متغير (يا بيشتر) باشد آنگاه يكي كننده بررسي مي‌كند كه آيا متغير مي‌تواند با بعضي از اطلاعات واژه دوم متصل شود، هر چند تنها اگر قسمتهاي باقيمانده واژه‌ها يكي شوند. براي مثال، براي دو واژه زير:

father(X,mary) and father(john,mary)

 يكي كننده X را به john متصل خواهد كرد زيرا واژه‌هاي باقيمانده برابرند. هرچند براي
 زوج زير:

father(X,mary) and father(john,sue)

مفهوم اتصال ساخته نمي‌شود چون mary و sue مطابق نيستند. روش جستجويي كه براي پيمايش فضاي جستجو بكار مي‌رود بوسيله حقايق و قوانين برنامه Prolog محدود شده است. Prolog يك روش بالا به پائين، روش جستجوي عمقي (dfs) استفاده مي‌كند. اين به چه معنا است؟ همه مراحل كاملاً شبيه به روش تابع ارزيابي استفاده شده در Lisp است اگر يك پرس و جوي Q مشخص شده باشد آنگاه ممكن است آن مطابق يك حقيقت يا يك قاعده باشد. در حالتي از قاعده Prolog ,R ابتدا سعي مي‌كند سر R را تطبيق دهد و اگر موفق شود آنگاه سعي مي‌كندهمه عناصر بدنه R كه زير پرس و جو ناميده مي‌شوند را تطبيق دهد اگر سر R حاوي متغيرها باشد آنگاه اتصالات در طول اثبات از زير پرس و جوها استفاده خواهند كرد. از آنجايي كه اتصالات تنها براي زير پرس و جوها معتبر هستند، گفته مي‌شود كه براي يك قاعده محلي هستند. يك زير پرس و جو هم مي‌تواند يك قاعده باشد و هم يك حقيقت. اگر يك قاعده باشد آنگاه فرايند استنتاج Prolog بطور بازگشتي براي بدنه اين پرس و جو بكار مي‌رود. اين، قسمت بالا به پائين روش جستجو را مي‌سازد. عناصر بدنه يك قاعده از چپ به راست بكار مي‌روند و تنها اگر عنصر جاري بتواند با موفقيت اثبات شود عنصر بعدي سعي مي‌شود. اين روش جستجوي عمقي را مي‌سازد. ممكن است براي اثبات يك زير پرس و جو دو يا چند حقيقت يا قاعده ديگر تعريف شوند. در آن صورت A, Prolog را انتخاب مي‌كند و سعي مي‌كند آن را اثبات كند، اگر لازم باشد زير پرس و جوهاي A را نيز پردازش مي‌كند. اگر A با شكست مواجه شود Prolog به نقطه‌اي كه اثبات A شروع شده بر مي‌گردد(با حذف همه اتصالهايي كه در طول اثبات A انتساب داده شده است) و سعي مي‌كند ديگري را اثبات كند. اين فرايند عقب‌گرد نام دارد . به منظور شرح همه روشها پرس و جوهاي نمونه زير را مي‌توانيم ملاحظه كنيد (مثال معرفي شده در بندهاي پاراگراف قبلي را بعنوان پايگاه داده Prolog استفاده مي‌كنيم):

?- grandparent(bill,mary).

 تنها بندي كه با اين پرس و جو تطبيق مي‌كند قاعده زير است.

grandparent(X,Z) :- parent(X,Y), parent(Y,Z).

 و يكي‌سازي پرس و جو با سر قاعده اتصالهاي زير را بر مي‌گرداند: Z=mary,X=bill براي اثبات قاعده، بايد دو عنصر بدنه قاعده از چپ به راست اثبات شوند. توضيح اينكه متغيرهاي مشترك قواعد با سر قاعده و بنابراين اتصالهاي محاسبه شده در طول تطبيق سر با پرس و جو براي پاسخ به زير پرس و جوها موجودند. بنابراين زير پرس و جوي اول در واقع بصورت parent(bill,y) و زير پرس و جوي دوم بصورت parent (y,mary) معرفي شود. حال براي اثبات بند اول prolog دو قاعده parent ديگر مي‌يابد. اجازه دهيد فرض كنيم prolog اولي را انتخاب مي‌كند.( براي ياد‌آوري بيش از يك انتخاب، prolog يك نقطه انتخاب مشخص مي‌كند)

parent(X,Y) :- mother(X, Y).

 يكي‌سازي زير پرس و جوها با سه قاعده به راحتي ممكن است و متغيرx به واژه bill متصل خواهد شد . اين عنصر تك بدنه‌اي بصورت (bill,y) mother معرفي مي‌شود. متاسفانه هيچ حقيقتي كه اين زير پرس و جو را معتبر كند در پايگاه داده وجود ندارد. چون يكي‌سازي (bill,y) mother با شكست مواجه مي‌شود. پس همه قاعده انجام مي‌شود. سپس prolog به نقطه انتخابي كه اولين قاعده parent ممكن را انتخاب كرده بود، برگشته و دومي را انتخاب مي‌كند.

parent(X,Y) :- father(X, Y)   

 يكي‌سازي زير پرس و جوي (هنوز فعال) parent(bill,y) ، father(bill,y) معرفي خواهد شد. اينبار يكي‌سازي ممكن است،‌اتصال y=john برگردانده مي‌شود. حال اولين زير پرس و جوي parent از قاعده grand parent اثبات شده متغيرهاي واقعي X=bill Z=mary,Y=john, هستند. عنصر دوم از بدنه قاعده grandparent،
parent (john, mary) معرفي مي‌شود (توضيح اينكه مقدار z بعد از انتخاب قاعده grand parent فوراً متصل شده است).
همان روش براي اين زير پرس و جو بكار رفته و prolog حقايق كافي براي اثبات موفقيت‌آميز آن خواهد يافت. وقتي كه دو عنصر بدنه قاعده grand parent به طور معتبر اثبات شد، prolog به پايان مي‌رسد كه اولين پرس و جو true مي‌شود. توسعه prolog ، به منظور استفاده از prolog براي برنامه‌نويسي كاربردي است. كه با توسعه‌هايي مانند ليست ساختارهاي داده، عملكردهايي براي كنترل واضح پيمايش از فاصله جستجو با يك برنامه prolog(بنام عملگر برش) و روالهايي براي رابطهاي ورودي /خروجي، تست درستي (رديابي) و اشكالزدايي مي‌آيد. ما نمي‌توانيم همه اين توسعه‌ها را در متن اين مرور كوتاه شرح دهيم. ما تنها بطور خلاصه نشان مي‌دهيم كه ليستها در prolog چگونه مي‌توانند استفاده شوند. Prolog ليستها را بعنوان يك ساختار داده‌اي پايه‌اي با استفاده از syntax متداول پشتيباني مي‌كند. عناصر ليست با كاما جدا مي‌شوند. كل ليست با براكت تعيين مي‌شود. يك عنصر ليست مي‌تواند يك واژه دلخواه يا يك ليست باشد، بنابراين كاملاً شبيه ساختارهاي ليست در Lisp است. اين مثالي از يك ليست prolog است:

[john, mary, bill]

 ليست خالي بصورت [ ]  نمايش داده مي‌شود. براي ايجاد و پيمايش ليستها، prolog يك تركيب خاص مبني بر سر و دنبال يك ليست فراهم مي‌كند.  [X | Y]يك ليست است شامل يك سرليست x و يك دنباله y است. براي مثال ليست بالا مي‌تواند بصورت زير مشخص شود.


[john | mary, bill]

ما گزارهmember  را بصورت مثالي براي نحوه رفتار ليستها در prolog استفاده خواهيم كرد. اين گزاره تعيين خواهد كرد كه آيا يك عنصر داده شده در يك ليست داده شده واقع مي‌شود؟ با توجه به توضيحات بالا يك عنصر در يك ليست است اگر سر ليست آن ليست باشد يا اگر در جايي از دنباله ليست واقع شود، با استفاده از تعريف غيررسمي گزاره member ما مي‌توانيم برنامه prolog زير را طرح كنيم. (نمادي كه يك متغير بي‌نام را مشخص مي‌كند،‌استفاده مي‌شود تا به prolog بگويد مهم نيست مقدار يكي كننده به آن متصل شود)

 member(Element,[Element | ]).
  member(Element,[ | List]) :- member(Element,List).

با فرض پر س و جوي زير

?- member(a, [b,c,a,d]).

 Prolog ابتدا كنترل مي‌كند كه آيا سر ليست  [b | c,a,d]برابر a است.
به اين علت بند اول با شكست مواجه مي‌شود، پس دومي سعي مي‌شود. اين زير پرس و جوي member (a,[c,a,d]) معرفي خواهد شد كه معني‌اش اين است كه از روي عنصر اول بسادگي مي‌پرد با بكار بردن بازگشي member،prolog سعي مي‌كند تا اثبات كند كه آيا سر ليست  [c | a,d]با a برابر است، كه با شكست مواجه مي‌شود.، زير پر س و جوي جديد member (a,[a,d]) را با معرفي بند دوم بدست مي‌آوريم. گام بازگشتي بعدي ليست [a | d]را كنترل خواهد كرد. اينبار a براستي با عنصر سر ليست اين ليست برابر مي‌شود، بنابراين prolog با "yes" پايان خواهد يافت.
برنامه‌نويسي منطقي محدوديت (clp)تصميمي از سبك برنامه‌نويسي (ساده)‌prologاست. در clp واژه يكي‌سازي به حل محدوديت تعميم يافته است. در برنامه‌نويسي منطقي محدوديت مولفه‌هاي اصلي يك مسئله بصورت محدوديت‌ها حالت يافته‌اند (يعني ساختار اشياء در سؤال) و مسئله بصورت يك كل كه با گذاشتن محدوديتهاي مختلف بوسيله قواعد ارائه شده است. (اساساً بوسيله تعريف بندها) براي مثال بند معين زير نمونه يك تجزيه ريز از گرامر يك زبان طبيعي مانند انگليسي است.

  sign(X0) ←
 sign(X1),
 
 sign(X2),
 
 X0 syn cat = s,
 
 X1 syn cat = np,
 
 X2 syn cat = vp,
 
 X1 syn agr = X2 syn ag


بيان مي‌شود يك شي زباني بصورت يك عبارت S طبقه‌بندي مي‌شود كه بايد مركب از يك شيء طبقه‌بندي شد كه بصورت يك NP (عبارت اسمي) و يك شئ طبقه‌بندي شده بصورت يك VP(عبارت لفظي) باشد و قرارداد اطلاعات (مانند شخص، حالت) بايد بين NP و VP يكسان باشد. همه اشيايي كه حداقل اين محدوديتها را انجام مي‌دهند جزء‌اشياي S هستند. توضيح اينكه هيچ ترتيب پيش فرضي براي VP,NPبعنوان حالتي براي گرامر زبان طبيعي مبني بر ظواهر وجود ندارد كه متن بدون استحكام به آن تكيه كند. اگر يك محدوديت نياز به محدوديتهاي اضافي داشته باشد. بايد به قاعده اضافه شود، براي نمونه زير ريشه‌ها بايد با الحاق تركيب شوند از نجاطيآنآن
آنجايي كه محدوديتهاي مثال بالا تنها شرايط لازم براي شئ از كلاس S را مشخص مي‌كند آنها اطلاعات مختصري بيان مي‌كنند. اين براي دانش مبني بر استدلال خيلي مهم است زيرا در كل ما تنها اطلاعات مختصري درباره جهان (محيط)‌داريم، ‌ما براي پردازش چنين خصوصياتي دليل مبني بر حل محدوديت و الگوي برنامه‌نويسي منطقي مي‌خواهيم. چون يكي‌سازي، فقط حالت خاصي از حل محدوديت است، برنامه‌هاي منطقي محدوديت توان بيان بالايي دارند.
تعدادي از زبانهاي برنامه‌نويسي منطقي محدوديت (همراه با رابط كاربر سطح بالا و ابزارهاي توسعه) تحقق يافته‌اند. مانند CHIP يا زبان OZ كه برنامه‌نويسي اعلاني، برنامه‌نويسي شئ گرا، برنامه‌نويسي محدوديت و همزماني را بعنوان جزئي از كل منسجم پشتيباني مي‌كند. OZ زباني محدوديت قدرتمندي با متغيرهاي منطقي،‌دامنه‌متناهي، مجموعه‌هاي متناهي، درختهاي عقلاني و ركورد محدوديت‌هاست. آن در صدد است تا يك روش يكتا و انعطاف‌پذير بدون شاخ و بندها براي برنامه‌نويسي منطقي فراهم كند. OZ بين روشهاي مستقيم و غير مستقيم برنامه‌نويسي منطقي اعلاني تفاوت قايل مي‌شود.


V. ساير روشهاي برنامه‌نويسي
‌در اين مقاله قبلاً زبانهاي AI را با روشهاي برنامه‌نويسي دستوري مقايسه كرديم. زبانهاي شيء گرا به الگوي برنامه‌نويسي مشهور ديگري تعلق دارند. در اين جور زبانها اولين وسيله براي تعيين مسئله‌ها، تعيين خلاصه ساختارهاي داده است كه كلاس‌ها، اشياء‌نام دارند. يك كلاس شامل يك ساختار داده همراه با عمليات اصلي‌اش كه اغلب اسلوبها (روشها) نام دارند است. يك ويژگي مهم اين است كه ممكن است كلاسها در سلسله مراتبي از كلاسها و زير كلاسها مرتب شوند. يك كلاس مي‌تواند صفات سوپر كلاسهايش كه پيمانه‌اي بودن را پشتيباني مي‌كنند را به ارث ببرد.
مشهورترين زبانهاي شيءگرا C++,Eiffel و Java (جاوا) هستند. سيستم Common Lisp شيءگرا يك توسعه از common Lisp است. آن يكپارچه‌سازي كامل برنامه‌نويسي تابعي و شيءگرا را پشتيباني مي‌كند. اخيراً جاوا در بعضي از زمينه‌ها AI، خصوصاً در فن‌آوري عامل هوشمند، موتورهاي جستجوي اينترنت يا استخراج داده‌ها كاملاً مشهور شده است. جاوا بر مبناي C++ است و زبان اصلي براي برنامه‌نويسي كاربردهاي اينترنتي است. مهمترين ويژگيهاي زبان كه جاوا را از چشم‌آنداز AI جذاب مي‌سازد فضاي هرز خودكار پيش‌ساخته آن و مكانيزم چند نخي (چند وظيفه‌اي) آن است.
با افزايش تحقيقات در زمينه وب هوشمند يك الگوي برنامه‌نويسي جديد- برنامه‌نويسي عامل‌‌گرا – پديدار شد. برنامه‌نويسي عامل‌گرا يك الگوي جديد برنامه‌نويسي است كه يك نماي اجتماعي از محاسبه را به خوبي پشتيباني مي‌كند. در AOP اشياء بعنوان عاملهايي شناخته مي‌شوند كه براي دستيابي به اهداف شخصي عمل مي‌كنند. عامل در يك ساختار مي‌تواند به پيچيدگي شبكه سراسري اينترنت يا به سادگي يك پيمانه (ماجول) از يك برنامه معمولي باشد. عاملها مي‌توانند موجوديتهاي مستقل باشند يعني بدون دخالت كاربر براي گام بعدي‌شان تصميم بگيرند، يا مي‌توانند قابل كنترل باشند، يعني بعنوان وسيله‌اي بين كاربر و عاملهاي ديگر بكار بردند. از آنجايي كه عاملها زنده در نظر گرفته مي‌شوند، با رشد موجوديتهاي نرم‌افزار، به نظر مي‌رسد انتقالي از نقطه‌نظر زبانهاي برنامه‌نويسي به طرف نقطه‌نظر سكوي پيشرفت نرم‌افزار پديدار مي‌شود. اينجا تأكيد روي طراحي سيستم، سكوي پيشرفت و اتصال است. سئوالات حساس عبارتنداز: چگونه تعدادي از منابع پيشرفته AI كه در زبانها و سكوهاي مختلف موجودند مي‌توانند با ساير منابع استفاده‌كننده از ابزارهاي پيشرفت سيستم جديد مانند CORBA (معماري عادي رابط درخواست شئ) تركيب شوند (يكپارچه شوند)، خلاصه‌سازي عمومي انواع داده و زبانهاي تفسيري(يادداشت حاشيه‌اي) مانند XML و زبان استاندارد ارتباطات عامل‌گرا مانند KQML (زبان شناخت پرس و جو و دستكاري).
 بنابراين آينده برنامه‌نويسي AI كمتر نگران سئوالاتي مثل: ” مناسب‌ترين الگوي برنامه‌نويسي چيست؟ “ است  ولي بايد به سئوالاتي مثل: ” چگونه مي‌توانم الگوهاي مختلف برنامه‌نويسي را زير يك سايبان يكپارچه كنم؟ “  و ” بهترين زبان ارتباطي براي نرم‌افزارهاي مستقل پيمانه‌اي هوشمند چيست؟ “  پاسخ دهيم.
 


*اين مقاله ترجمه‌اي است از:


Neumann, Gunter Programming Languages in Artificial Intelligence. In: Bentley & Bidgoli: Encyclopedia of Information Systems,
Academic Press, San Diego, 2002

http://www.dfki.de/~neumann/publications/new-ps/ai-pgr.pdf 
 

VI. منابعي براي مطالعه بيشتر

 1.Charniak, E., Riesbeck, C.K., McDermott, D.V. and Meehan, J.R., 1980, Artificial Intelli- gence Programming, Lawrence Erlbaum Associates, Hillsdale, New Jersey.
 
2.Clocksin, W.F. and Mellish, C.S, 1987, Programming in Prolog, Springer, Berlin, Germany.
 
3.Keene, S.E., 1988, Object–Oriented Programming in Common Lisp, Addison–Wesley, Read-ing, Massachusetts.
 
4.Luger, G.F. and Stubblefield, W.A., 1993, Artificial Int elligence: Structures and Strategies
 
for Complex Problem Solving, second edition, Benjamin/Cummings, Redwood City, Cali-fornia.
 
5.Norvig, P., 1992, Artificial Intellig ence Programming, Morgan Kaufman Publishers, San ateo, California.
 
6.Pereira, F.C.N. and Shieber, S.M., 1987, Prolog and Natural Language Analysis, CSLI Lecture Notes, Number 10, Stanford University Press, Stanford, California, 1987.

7.Sebesta, R.W., 1999, Concepts of Programming Languages, fourth edition, Addison–Wesley, Reading, Massachusetts.

8.Ullman, J.D., 1997, Elements of ML Programming, second edition, Prentice-Hall.
9.Watson, M., 1997, Intelligent Java Applications for the Internet and Intranets, Morgan Kaufman Publishers, San Mateo, California.

http://www.irandoc.ac.ir/data/e_j/vol5/mohammadi_k.htm

+ نوشته شده در  سه شنبه بیست و چهارم مرداد 1385ساعت 12:10 بعد از ظهر  توسط جواد احمدی  | 

گروه علمي نابغه هاي ايران
 
برای بهبود زخم ها جریان الکتریسیته را برقرار کنید!
 
تحقیقات جدید نشان می دهد که جریان الکتریسیته می تواند بهبودی زخم ها و جراحات بدن را تسریع کند. البته این ایده 150 سال پیش توسط یک دانشمند آلمانی مطرح شده بود که تا به امروز مورد توجه محققین قرار نگرفته بود.

مسئول موسسه تحقیقاتی اتریش جوزف پانیه (Josef Penninger) ثابت کرد که برقراری جریان الکتریکی در لایه های پوست نقش فوق العاده ای در روند بهبودی جراحات دارد، بدین ترتیب که جریان الکتریکی سلولهای بازسازی شده و سالم را جذب کرده و به نقاط آسیب دیده هدایت میکند.
 
فرستنده:بهمن کاظمی

ادامه مطلب
 
+ نوشته شده در  دوشنبه بیست و سوم مرداد 1385ساعت 11:45 بعد از ظهر  توسط جواد احمدی  | 

از مهتابی کمتراستفاده کنید

خانواده ها بهتر است از نور لا‌مپ مهتابی یا فلورسنت کمتر استفاده کنند . دکتر میکائیل آقا صالح متخصص فیزیک پزشکی گفت : استفاده از نور و لا‌مپ مهتابی در منزل به علت مصرف برق کمتر شاید به صرفه تر باشد ولی به علت داشتن اشعه ماورای بنفش برای سلا‌مت پوست انسان‌خطرآفرین است و بروز نوعی سرطان پوستی را افزایش می دهد.

 
فرستنده:بهمن کاظمی
ادامه مطلب
 
 
 
 
+ نوشته شده در  پنجشنبه نوزدهم مرداد 1385ساعت 4:33 بعد از ظهر  توسط جواد احمدی  | 

سرعت سايت محبوب خود را چك كنيد
 
آيا زمان زيادي طول مي كشد كه به سايت مورد علاقه خود دست پيدا كنيد؟ احتمالاً مشكل از سروري كه آن سايت از آن استفاده مي كند مي باشد براي اطمينان از از اينكه مشكل از سرور است از تسهيلات PING در ويندوز 98 استفاده كنيد. Ping  يك برنامه كوچك است كه يك سيگنال 32 بيت به سرور وب سايت مذكور مي فرستد، ping زمان مورد نياز براي پاسخ دهي سرور را ثبت مي كند براي فعال كردن ping به صورت زير عمل مي كنيم:
روي start> Run كليك كنيد در فيلد خالي تايپ كنيد Command و سپس روي ok كليك كنيد در پنجره MS-DOS Prompt تايپ كنيد: PING site name براي مثال تايپ كنيد
در يك لحظه نتيجه اي ظاهر خواهد شد . اگر نتيجه كمتر از 300 ميلي ثانيه بود نرمال است در حاليكه اگر نتيجه بيش از 400 ميلي ثانيه باشد سرعت كم است.
اگر پيغام Request time ظاهر شد به اين معني است كه سرور آن وب سايت در يك ثانيه نتوانسته پاسخ دهد و در اين صورت احتمالاً سرور خيلي كند است يا بر اساسي طراحي شده است كه به تست ping پاسخ ندهد و يا شما فراموش كرده ايد كه نام  آدرس سرور را در setting ديالوگ باكس TCP/IP تعيين كنيد.
 
 
FTP
 
FTP مخفف File Transfer Protocol است. FTP هم نام يك سري از برنامه هاست است و هم روشي براي انتقال اطلاعات بين كامپيوتر هاست . Anonymous FTP قابليتي است كه در نرم افزارهاي FTP وجود دارد و به استفاده كننده اين اجازه را مي دهد تا فايلها را از هزاران كامپيوتر Host روي اينترنت به كامپيوتر شخصي خود انتقال دهند. سايتهاي FTP شامل كتابها، مقالات، نرم افزار، بازيهاي كامپيوتري، عكس، موزيك، فيلم و ... مي باشند .
براي اين منظور مي توانيد از يكي از نرم افزارهاي   Cute FTP يا  Ws_FTP   Bulletproof FTP را استفاده كنيد. براي دانلود هر يك از نرم افزارهاي فوق روي آن كليك كنيد تا به سايت مورد نظر برويد .
  البته بدون اين نرم افزارها هم مي توانيد به اين فايلها دسترسي داشته باشيد. و در اين حالت مرورگر شما مثلاً اينترنت اكسپلورر كافي است. البته زمانيكه يك فايل را از اينترنت Download مي كنيددر حال اجراي FTP هستيد اما براي پيدا كردن فايلهاي FTP از طريق موتورهاي جستجوي مخصوص اين كار مانند :
مي توانيد استفاده كنيد. اين روش ساده ترين راه است زيرا احتياج به ياد گرفتن نرم افزار FTP نداريد.
salam doostan , in mail az tarafe group IRAN_CS_CE baraye shoma ferestade shode , agar daneshjooye Computer Engineer (CE) , Computer Science (CS) , Information Technology (IT) , Math hastid yaa be moozooaate computeri alaaghemand ya moshkeli dar in zamine darid ,
mitavanid dar in group join beshid,
dar hale hazer nazdik be 700 daneshjooye computer az sarasare iran , dar in group member mibaashand , montazere hozore shoma mibashim , bye


فرستنده:بهمن کاظمی
+ نوشته شده در  پنجشنبه نوزدهم مرداد 1385ساعت 4:31 بعد از ظهر  توسط جواد احمدی  | 

نمونه سئوالات Windows XP

1-    به عمل كشيدن و رها كردن گفته مي شود؟

   الف)Click                   ب ) Double click                    ج) Right click         د) Drag and drop

2-    به نواري كه در پائين صفحه Desktop ظاهر مي شود، ........... گفته مي شود؟

   الف) نوار وضعيت        ب) نوار عنوان                   ج) نوار وظيفه         د) نوار آدرس

3-    در اين گروه برنامه هايي براي پخش فايل هاي صوتي و ويديويي وجود دارند.

   الف)  Accessibility      ب ) Entertainment                 ج) System tools     د) Communication

4-    نماد گرافيكي كوچكي كه مرتبط با فايل، پوشه، برنامه مي باشد؟

   الف) Desktop             ب) Taskbar                            ج) Icon                 د) Click

5- انتخاب موضوع و جدا كردن آن ازمكان فعلي و مستقر شدن در حافظه را اصطلاحا" ................. گويند.

   الف) Cut                   ب) Copy                         ج) Paste                د) Delete

6-    الصاق از حافظه موقت به محل مورد نظر را گويند؟

   الف)Cut                    ب) Copy                         ج) Paste                د) Delete

7-    حافظه اي که در  WINDOWSبراي نگهداري موقتي موضوعات مورد استفاده قرار مي گيرد؟

الف) Clipboard      ب) Hard                           ج) Ram                  د) CD

8- انتقال به حافظه موقت را اصطلاحأ …....... و کپي به حافظه موقت را اصطلاحأ ........ و کپي از حافظه موقت به محل مورد نظر را اصطلاحأ .......... گويند.

الف) paste, copy, cut                        ب)paste, cut, copy  

ج) copy ,cut ,paste                             د) copy ,paste , cut

9- به نواري كه در بالاترين قسمت هر پنجره قرار مي گيرد و شامل نام برنامه مي باشد .........  گفته مي شود.

   الف) نوار منو     ب) نوار عنوان     ج) نوار وضعيت     د) نوار ابزار

10-                  كداميك از گزينه هاي زير براي تغيير اندازه، جابجايي و بستن پنجره استفاده مي شود؟

   الف) Title bar          ب) Menu bar         ج) Status bar                     د ) Tool bar

11-     براي بستن پنجره از كدام گزينه استفاده مي شود؟

   الف) انتخاب دكمه Close       ب) Quit                           ج) Alt+F4            د) گزينه هاي الف و ج

12-     براي مرتب سازي پنجره ها به روش كاشي كاري افقي از كدام گزينه استفاده مي شود؟

   الف) Cascade windows                      ب) Tile windows vertically 

          ج) Tile windows horizontally           د) گزينه هاي ب و ج

13-    با كليك بر روي اين دكمه ابعاد پنجره به حداقل مي رسد.

   الف) Minimize                 ب) Maximize               ج) Restore            د) Close

14-                  اگر در كنار نام آيكن پوشه در ساختار درختي علامت (+) نمايش يابد، نشانه چيست؟

   الف) داشتن فايل                ب) داشتن زير پوشه        ج) خالي بودن پوشه    د) ميانبر بودن پوشه

15-                  كداميك از برنامه هاي زير به طور پيش فرض ساختار درختي پوشه ها را نمايش مي دهد؟

   الف) My Computer         ب) My Document           ج) Windows Explorer     د) Control panel

16-     در اين حالت نمايشي آيكن درايوها، فايل ها يا پوشه ها به همراه جزييات و مشخصات آنها نمايش داده مي شوند.             

   الف) Tiles                    ب) Icons                                ج) List                      د) Details

17-  كدام فرمان براي نوسازي محتواي پنجره ها استفاده مي شود؟

   الف) Refresh                ب) Restore                            ج) Shortcut                د) هيچكدام

18-     براي جستجوي فايل ها و پوشه ها از چه برنامه اي استفاده مي كنيم؟

   الف) Run                     ب) Search                              ج) My Computer         د) Scheduled task

19-   براي جستجوي فايلهايي كه نام آنها با b شروع مي شود، کدام گزينه مناسب است ؟

   الف) b*.?                    ب ) b*.*                                  ج) b*.b*                   د) b?.b*

20-     فعال كردن اين گزينه موجب مي شود نوار وظيفه به صورت خودكار پنهان شود.

   الف) Lock the taskbar     ب) Show the clock         ج) Auto-hide the taskbar   د) Show quick lunch

21-       براي تعيين محافظ صفحه نمايش از كدام زبانه استفاده مي شود؟

   الف) Screen Saver          ب) Appearance                    ج) Desktop                 د) Back ground

22-     براي مرتب كردن آيكن ها در محيط كار ويندوز براساس نوع آنها كدام گزينه را انتخاب مي كنيم؟

   الف) by name               ب) by size                              ج) by data                  د) by type

23- براي ارسال سريع فايل يا پوشه به درايو فلاپي، كدام فرمان مناسب است؟

   الف) Copy وPaste         ب) Cut و Paste                 ج) Send to                      د) Refresh

24-   براي انتخاب گروهي آيكن هاي غير همجوار از كدام كليد استفاده مي كنيم؟

   الف) Ctrl                     ب) Shift                                  ج) Alt             د) Alt +Shift

25-    براي زمانبندي اجراي برنامه ها از كدام برنامه استفاده مي كنيم؟

   الف) Search                ب) Run                                   ج) Windows Explorer    د) Scheduled task

26-       در صورتيكه يك ميانبر از فايل اجرايي برنامه اي در قسمت .............. قرار بگيرد، آن برنامه همزمان با راه اندازي ويندوز به صورت خودكار اجرا مي گردد.

   الف) Start up              ب) All program                     ج) Start            د) Accessories

27-   با انتخاب اين گزينه ناحيه وظيفه در پنجره پوشه مورد نظر نمايش داده مي شود.

   الف) Open each folder in the same windows                      ب) Use windows classic folder

          ج) Show common tasks in folder                                      د) Open each folder in its own windows

28-    براي تغيير نام فايل يا پوشه از كدام گزينه استفاده مي شود؟

   الف) Remove            ب) Rename                            ج) Restore           د) Refresh

29-     براي بازيابي پوشه يا فايل حذف شده بر روي چه گزينه اي كليك مي كنيم؟

   الف) Restore            ب) Remove                            ج) Empty             د) Refresh

30-    براي خالي كردن سطل بازيافت از كدام گزينه استفاده مي شود؟

   الف) انتخاب گزينه Empty recycle bin موجو در سطل بازيافت  

   ب) انتخاب گزينه Restore موجود در سطل بازيافت

   ج) راست كليك بر روي سطل بازيافت و انتخاب گزينه Empty recycle bin  

     د) گزينه هاي الف و ج

31-براي كپي كردن يک پوشه با استفاده از ناحيه Task كدام گزينه را انتخاب مي كنيم؟

   الف)Make a new folder       ب) Copy this folder         ج) Move this folder     د) Share this folder

32-      از اين برنامه براي ايجاد نسخه پشتيبان استفاده مي شود؟

   الف) WinRAR           ب) WordPad                         ج) Backup           د) Search

33-    از اين برنامه براي فشرده سازي فايلها استفاده مي شود؟

   الف) WinRAR          ب)Backup                                ج) Search           د) Run

34-     پسوند فايلهاي پشتیبان شده چيست ؟

   الف) rar                  ب) Bkf                                    ج) Zip                 د) همه موارد

35-      پسوند فايلهاي فشرده چيست؟

   الف) rar ب               ب) Bkf                                    ج) Zip                د)گزينه هاي الف و ج

36-    به دفتر ثبت ويندوز گفته مي شود؟  

   الف) كليپ برد     ب) رجيستري         ج) حافظه موقت     د) فايل پشتيبان

37-     براي پخش انواع فايلهاي صوتي از كدام نرم افزار استفاده مي شود؟

   الف) Volume Control       ب) Sound Recorder           ج) Windows media player     د) گزينه هاي ب وج

38-    براي مشاهده فايلهاي ويديويي از كدام گزينه استفاده ميكنيم؟

   الف) Sound recorder      ب) Volume Control              ج) Windows media player     د) Backup

39-         براي مرور يا پيمايش محتويات يك پنجره از كدام گزينه استفاده ميشود؟

   الف) Status bar            ب) Title bar                           ج) Scroll bar                       د) Address bar

40-    براي اجراي Windows Explorer  از كدام گزينه استفاده مي شود؟

   الف) Start à All Programs à Accessories à Windows Explorer 

   ب) Start à All programs àWindows explorer

     ج) راست كليك بر روي My Computer و انتخاب Windows Explorer

    د) انتخاب گزينه هاي الف و ج

41-     وجود فلش كوچك در كنار يك آيكن نشان دهنده چيست؟

   الف) Folder                ب) File                                    ج) Shortcut                         د) هيچكدام

42-      براي مرتب نمودن آيكن هاي  Desktop براساس تاريخ از كدام گزينه استفاده مي شود؟

   الف) by name            ب) by type                            ج) by size                            د) by date

43- براي تغيير نام فايلها از كدام كليد استفاده مي كنيم؟

   الف) F1                  ب) F2                                      ج) F3                                    د) F4

44-       براي دسترسي سريع تر به برنامه ها كدام گزينه را فعال مي كنيم؟

   الف) Show clock      ب) Lock the taskbar             ج) Show quick lunch         د) Auto-hide the taskbar

45-    براي نمايش همزمان پنجره هاي باز به صورت آبشاري كدام گزينه را انتخاب مي نماييم؟

   الف) Tile windows vertically                        ب) Tile windows horizontally

          ج) Cascade windows                               د) Minimize all windows

46-  در صورتيكه بخواهيم اجراي يك برنامه به صورت هفتگي انجام شود، كدام گزينه را انتخاب مي كنيم؟

   الف) Daily              ب) Weekly                            ج) Monthly                     د) One time only

47-     براي ساخت يك ميانبر :

   الف)  à New à Folderراست كليك در فضاي  پنجره

   ب)  àNew àShortcut راست كليك در فضاي خالي پنجره

   ج) راست كليك بر روي فايل يا پوشه مورد نظر و انتخاب گزينه Shortcut  

    د) گزينه هاي ب و ج

48-    براي افزودن يك ميانبر به منوي Start  كدام يك از گزينه هاي زير را بايد انتخاب كرد؟

   الف) Insert           ب) Advance                          ج) Add                           د) Sort

49-     با انتخاب اين گزينه تمام فايل هاي و پوشه هايي كه صفت مخفي دارند، نمايش داده مي شوند.

   الف) Display the full path in the address bar                      ب) Show hidden files and folders

          ج) Do not show hidden files or folders                           د) Hide extension for known file type

50-     با استفاده از اين زبانه مي توانيم نوع قلم، اندازه قلم و رنگ دکمه ها و ساير اجزاي پنجره ها را تغيير دهيم؟

   الف) Desktop       ب) Screen Saver                   ج) Setting                       د) Appearance

51-   براي تغيير رنگ نوار عنوان كدام گزينه را انتخاب مي كنيم؟

   الف) Active windows border                                    ب) Inactive windows border

          ج) Active title bar                                               د) Application background

52-    كدام برنامه براي ويرايش متن ا ستفاده مي شود؟

   الف) WordPad        ب) Paint                                 ج) Calculator                 د) Backup

53-      كدام كليد منجر به لغو آخرين عمل انجام شده مي شود؟

   الف) Ctrl+ x          ب) Ctrl+ y                              ج) Ctrl+ Z                        د) Ctrl+ v

54-  كدام فرمان براي تكرار آخرين عمل انجام شده استفاده مي شود؟

   الف) Undo           ب) Redo                                 ج) Repeat                        د) هيچكدام

55-    كدام كليد براي تكرار آخرين عمل انجام شده استفاده مي شود؟

   الف) Ctrl+ R         ب) Ctrl+ U                             ج) Ctrl+ Z           د) Ctrl+ Y

56-      كدام گزينه بيانگر پسوند فايلهاي نقاشي مي باشد؟

   الف) doc            ب) txt                                      ج) bmp               د) xls

57-   براي ذخيره نتايج جستجو از منوي File  كدام گزينه را انتخاب مي كنيم؟

   الف) Save          ب) Save as                            ج) Save Search      د) Save result

58-چاپگر پيش فرض چه نام دارد؟

   الف) Local         ب) Network                     ج) Pause             د) Default

59-  انتخاب كدام گزينه موجب مي شود فضاي سطل بازيافت تمام درايوها يكسان باشد؟

   الف) Configure drive independently                                    ب) Use one setting for all drives

          ج) Display delete confirmation dialog                             د) Do not move file to the recycle bin

60-      براي حذف فايل ها وپوشه ها بدون انتقال آنها به سطل بازيافت از كليد تركيبي ................. استفاده مي شود.

   الف) Alt+ Delete     ب)Ctrl+ Delete               ج) Delete            د) Shift+ Delete

61-        به وسيله چه برنامه اي امكان باز كردن فايل هاي فشرده وجود دارد؟

   الف) Backup          ب) Winrar                        ج) Search          د ) گزينه هاي الف و ب

62-      براي باز كردن فايلي كه پسوندDOC  دارند ازكدام برنامه استفاده مي شود؟

   الف) Notepad        ب) WordPad                     ج) Paint             د) Calculator

63-   براي نمايش پس زمينه به طوريكه كل صفحة نمايش پر شود كدام گزينه را انتخاب مي كنيم؟

          الف) Tile          ب)‌ Center                     ج) Stretch         د) هيچكدام

64-      براي نمايش پس زمينه به طوريكه تصوير در وسط صفحة نمايش قرار گيرد كدام گزينه را انتخاب مي كنيم؟

          الف) Tile          ب)‌ Center                    ج) Stretch          د) هيچكدام

65-      كداميك از نرم افزارهاي زيرفايل ساده  متني بدون قالب بندي ايجاد مي كند؟

          الف) MS WORD               ب)  Notepad         ج)  WordPad           د) الف و ب

66-          به حداقل رساني پنجره ها ...... گفته مي شود؟

الف) Move                   ب) size                 ج) Restore              د) Minimize

67-     کدام تب براي تغيير تصوير پس زمينه استفاده مي شود؟

الف) Effects                 ب) Screen Saver     ج) Appearance         د)Desktop

68-         براي نصب برنامه هاWin Xpدر ، کدام پوشه را پيشنهاد مي کند؟

الف) My document       ب) program files     ج) Windows            د) هيچکدام

69-   توسط کدام گزينه مي توان براي محافظ صفحه نمايش مدت انتظار را تعيين کرد؟

الف) Setting                ب) Wait                ج) Preview              د ) هيچکدام

70-      براي تغيير وضوح تصوير کدام گزينه را بايد برگزيد؟

الف) تعداد Pixelها در Setting 

ب) تعداد رنگ ها در Setting

ج) دکمه Advance در Setting

د) هيچکدام

71-   براي دسترسي آسان به يک برنامه کاربردي از ........ استفاده مي شود.

الف) Clipboard           ب) Task bar          ج) Tool bar             د) Shortcut

72-      کداميک از نوار هاي زير براي پيمايش افقي داخل برنامه استفاده مي شود؟

الف) Vartical              ب) Horizental        ج) Status bar              د) همه موارد

73-      براي اجراي فايل ها و برنامه ها از کدام گزينه استفاده مي شود؟

الف) گزينه Run از منوي Start                ب) گزينه program از منوي Run 

 ج) گزينه Start  از منوي Program            د) همه موارد                           

74-        براي تغيير نام يک فايل يا پوشه کدام گزينه صحيح است؟

الف) Edit à Rename       ب) File àRename      ج) Tools à Rename      د) Format à Rename

 75-  جهت مديريت درايوها و پوشه ها و فايلها کداميک از برنامه هاي زير در ويندوز استفاده مي شود؟

الف)          My Computerب) Windows Explorer     ج) Run            ) الف و ب   

76-        به ناحيه سمت راست نوار وظيفه چه مي گويند ؟

الف) Tray Bar       ب)Quick Launch bar      ج) Notification Area    د)  الف و ج

77-      اسامي فايلها در محيط ويندوز حداكثر مي تواند چند كاراكتر باشد ؟

الف ) 8                                 ب ) 11                    ج) 256                             د) 255

 

بر گرفته از وبلاگpooyandegan.blogfa.com

+ نوشته شده در  پنجشنبه پنجم مرداد 1385ساعت 5:34 بعد از ظهر  توسط جواد احمدی  | 

  كامپيوتر چيست؟

        الف) يك وسيله الكترونيكي براي ذخيره كردن اطلاعات                                                    

        ب) ماشيني است كه براي عمليات رياضي برنامه ريزي شده است.

        ج) وسيله اي الكترومکانيكي است كه قابل برنامه ريزي بوده و توانايي انجام محاسبه و مقايسه و نگهداري نتايج محاسبه را در اختيار دارد.    

        د) كامپيوتر در حقيقت يك ماشين حساب الكترونيكي است كه مي تواند محاسبات را با سرعت فوق العاده بالا انجام دهد.

2-                      به هر گونه اطلاعات خام که وارد کامپيوتر مي شود ................ مي گويند؟

        الف) داده (Data)      ب) اطلاعات (Information)      ج) پردازش داده (Data Processing)     د) همه موارد

3-                      به مجموعه اي از عناصر مرتبط به هم که براي هدف خاصي در کنار هم گرد آمده اند تا کار واحدي را انجام دهند ................. گويند.

        الف) داده                               ب) سيستم                            ج) اطلاعات                          د) فيلد

4-       مجموعه اي كه متشكل از عناصر و مدارهاي الكترونيكي و اجزاي قابل لمس  است .................... ناميده مي شود.

        الف) مدار مجتمع               ب) ترانزيستور                    ج) سخت افزار                       د) ميان افزار

5-       هدايت، كنترل و استفاده از سخت افزار توسط اين قسمت انجام مي شود.

        الف) ميان افزار                ب) نرم افزار                       ج) حافظه اصلي                     د) حافظه جانبي

6-       كداميك از ويژگيهاي زير جز ويژگيهاي كامپيوتر نيست؟

        الف) دقت                  ب)اطمينان                            ج)هوش                              د)سرعت

7-       مهمترين وجه تمايز انسان و کامپيوتر چِيست؟

الف) انجام محاسبات     ب) تکرار دستورالعمل ها          ج) خلاقيت و ابتکار               د) داشتن حافظه

8-       کدام دسته از کامپيوترهاي زير قدرتمندترين و سريعترين کامپيوترهاي جهان مي باشند؟

        الف) كامپيوترهاي بزرگ(Main frame)                                    ب) كامپيوترهاي كوچك(Mini Computer)

          ج) ريز كامپيوترها(Micro Computer)                                     د) ابر كامپيوترها(Super Computer)

9-       به كامپيوترهاي شخصي(Personal Computer) ................. نيز گفته مي شود.

        الف) كامپيوترهاي بزرگ(Main frame)                                    ب) كامپيوترهاي كوچك(Mini Computer)

          ج) ريز كامپيوترها(Micro Computer)                                     د) ابر كامپيوترها(Super Computer)

10-    در اين قسمت داده هاي ورودي مورد تجزيه و تحليل قرار مي گيرند و عمليات لازم براي رسيدن به پاسخ دلخواه انجام مي شود.

        الف) واحد حافظه           ب) واحد پردازش                   ج) واحد كنترل                    د) واحد خروجي

11-    واحد پردازش مركزي از چه  قسمتهايي تشکيل شده است ؟

         الف) Cu , Alu                  ب)                                Cache  ج) Cache , Cu                   د) الف و ب

12-    كار واحد ALU چيست؟

          الف) ذخيره كردن اطلاعات و انجام عمليات كنترلي لازم                  ب) انجام عمليات رياضي

        ج) انجام عمليات منطقي                                                     د) گزينه هاي ب و ج

13-    واحد كنترل مربوط است به .................. .

        الف) واحد ورودي          ب) واحد خروجي                  ج) حافظه                         د) واحد پردازش

14-    عمليات رياضي و منطقي در كدام بخش صورت مي گيرد؟

        الف)                          CUب) Memory                      ج)                                     Input  د) ALU

15-    به واحد پردازنده مركزي گفته مي شود؟

        الف)                                ALU  ب) CPU                     ج)                           CU  د) Memory

16-    حافظه به دو طور كلي به دو قسمت ................. و ................. تقسيم مي شود.. 

        الف) RAMوROM        ب ) اصلي و جانبي           ج) ايستا و پويا                 د) ديسك سخت و فلاپي

 17-    .................. داده هاي پردازش شده را در اختيار كاربر قرار مي دهد.

        الف)   Input                 ب) Memory                       ج) CPU                  د) Output

18-    کداميک واحد ظرفيت حافظه نمي باشد.

        الف) بيت                              ب) بايت                             ج) Word         د) كاراكتر

19-    كوچكترين عنصر حافظه است.

        الف) بايت                             ب) بيت                          ج) پيكسل                            د)سلول

20-    8 بيت معادل است با ..............

        الف) 1KB                             ب) Byte                      ج)Word                 د) 1MB                 

21-    هر 1024 KB معادل است با :

        الف)  1GB                     ب) 10MB                           ج) 1MB               د) 1TB

22-    هر صفر يا يک در يک سلول حافظه به نام ................ ذخيره مي شود.

        الف) Nibble                ب) Bit                 ج) Byte              د) Character                           

23-    کوچکترين واحد اطلاعاتي چه نام دارد؟

الف) Bit                               ب) Byte                        ج) کيلوبايت               د) مگابايت

24-    اطلاعت حافظه در کامپيوتر به چه صورت ذخيره مي شود؟

الف) باينري                       ب) اعشاري                   ج) هگزادسيمال                  د) همه موارد

25-    يک کيلو بايت معادل چند بايت است؟

الف) 210                          ب) 1024                   ج) هشت بايت                   د) الف و ب

26-    يک گيگابايت معادل چند مگابايت است؟

الف) 1000                   ب) 1024                       ج) 720                            د) 1440

27-    با هر بيت مي توان ................ حالت را نمايش داد.

الف) يک                    ب) دو                     ج) هشت                             د)چهار

28-    کوچکترين فضاي لازم از حافظه براي ذخيره يک کارکتر:

        الف) Word                  ب) Bit                        ج) Byte                د) KB                              

29-    طول کلمه در يک کامپيوتر:

الف) هشت بيت                       ب) شانزده بيت                      ج) سي و دو بيت                   

د) با توجه به نوع کامپيوتر ممکن است 4، 8، 16، 32، 64 بيت باشد.

30-    کداميک از حافظه هاي زير مستقيما بر روي برد مادر قرار ندارند؟

الف) Ram               ب ) Rom              ج) Cache             د) Hard disk

31-    کداميک از حافظه هاي زير حاوي اطلاعات و برنامه هايي هستند که شرکت سازنده کامپيوتر در آن قرار مي دهد؟

الف) Ram              ب) Rom            ج) Floppy Disk                   د) Hard disk

32-    کداميک از حافظه هاي زير از نوع حافظه Rom است؟

الف) PROM             ب) EPROM                 ج) الف و ب                د) هيچکدام 

33-    کدام يک از حافظه هاي زير فقط يک بار توسط شرکت سازنده برنامه ريزي مي شوند و ديگر قابل پاک کردن نيست؟

  الف) PROM            ب) EPROM                    ج) Ram                           د) Cache 

34-    حافظه Rom جزء کداميک از موارد زير است؟

الف) سخت افزار                      ب) ميان افزار               ج) نرم افزار                    د) الف و ب

35-    حافظه ........... جهت نگهداري موقت اطلاعات و محيطي براي اجراي برنامه ها است؟

الف) RAM             ب) ROM                   ج)CPU                       د) Hard disk

 

 

36-    حافظه ROM :

        الف) فقط خواندني و ناپايدار                             ب) فقط خواندني وپايدار    

          ج) خواندني- نوشتني و پايدار                          د) خواندني- نوشتني و ناپايدار

37-    فرق Ram  و Rom چيست؟

الف) Ram از نوع نيمه هادي و Rom از نوع مغناطيسي است            ب) فرقي ندارد

ج) Rom فقط خواندني اما Ram فقط نوشتني است        د) Rom فقط خواندني اما Ram خواندني و نوشتني است

38-    روشهاي دسترسي به اطلاعات حافظه ها:

        الف) مستقيم                  ب) ترتيبي              ج) موازي             د) به نوع حافظه بستگي دارد

39-    حافظه اصلي کامپيوتر به چند بخش تقسيم مي شود؟

الف) حافظه اصلي- حافظه جانبي                                        ب) هارد ديسک - فلاپي ديسک

ج) Buffer-Cache                                                        د) Ram-Rom

40-    دستيابي به اطلاعات حافظه Ram از نوع ............ و اطلاعات در آن ......... است.

الف) مستقيم -  ناپايدار        ب) مستقيم -  پايدار        ج) ترتيبي -  ناپايدار         د) ترتيبي- پايدار

41-    اطلاعات در کدام يک از حافظه هاي زير ناپايدار است.

الف) PROM            ب) ROM                                    ج)  RAM                د) EPROM

42-    كدام يك جز حافظه هاي جانبي نمي باشد؟

        الف) Hard Disk           ب) CD-ROM            ج) RAM                 د) Floppy

43-    اين حافظه شامل يک يا چند صفحه فلزي داخل يک محفظه است و ظرفيت ذخيره سازي بسيار زياد است؟

الف) Pack               ب) Hard Disk                    ج) Floppy Disk          د) CD- ROM

44-    اطلاعات اين حافظه با استفاده از اشعه ماورا بنفش قابل پاك شدن است.

        الف) PROM             ب) CD                     ج) EPROM                        د) Hard disk

45-    كدام يك از حافظه هاي زير سرعت بيشتري دارد؟

        الف) ديسك سخت                   ب) CD                  ج) ديسك نرم                  د) RAM

46-    توسط اين دستگاه مي توان تصاوير، متون و عكسها را در حافظه كامپيوتر ذخيره كرد.

        الف) Scanner                   ب) Printer                       ج) Plotter             د) Joystick

47-    نقطه هايي كه تصوير روي صفحه نمايش را بوجود مي آورند.

        الف) dot                         ب) Pixel                         ج) Pin                      د) Bit

48-    کوچکترين عضو تصويري در صفحه نمايش چه نام دارد؟

الف) مکان نما ( Cursor )        ب) پيکسل( Pixel )      ج) موارد الف و ب            د) هيچکدام

49-    كداميك جز دستگاههاي ورودي نيست؟

        الف) پلاتر                     ب) پويشگر                 ج) اهرم هدايت                      د) ماوس

50-    كداميك از دستگاههاي زير ورودي است؟

        الف) پلاتر                   ب) چاپگر                      ج) اهرم هدايت                      د) صفحه نمايش

51-    براي چاپ تصاوير و نقشه هاي گوناگون در ابعاد بزرگ از اين وسيله استفاده مي شود.

الف) چاپگر ليزري          ب) چاپگر ماتريس -  نقطه اي        ج) رسام        د) چاپگر جوهرافشان

52-    با استفاده از اين وسيله ورودي اجراي بازيهاي کامپيوتري ساده تر و لذت  بخش تر است؟

الف) Joystick          ب) Digitizer             ج) Light Pen            د) Scanner

53-    کدام يک از مجموعه دستگاه هاي زيرجزء دستگاهاي ورودي بشمار مي آيند.

الف) صفحه کليد - ماوس - چاپگر              ب) رسام -اهرم هدايت  -پويشگر

ج) ماوس -اهرم هدايت - پويشگر                 ج) صفحه کليد - صفحه نمايش - ماوس

  54-    کداميک از قسمت هاي زير هم ورودي و هم خروجي محسوب مي شود؟

الف) Digitizer          ب) Disk Drive               ج) Type Reader            د) ب و ج

55-    كدام يك از چاپگرهاي زير غير ضربه اي است؟

        الف) ليزري                    ب) چرخ آفتابگردان          ج) زنجيره اي               د) ماتريس- نقطه اي

56-    كيفيت چاپ چاپگرها با واحد ................ سنجيده مي شود.

        الف) LPM               ب) DPI                 ج) PRM                   د) PPI

57-    از اين درگاه براي اتصال به چاپگر استفاده مي شود.

        الف)درگاه موازي             ب) درگاه سري             ج) درگاه USB               د) الف و ج

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

        الف) گذرگاه آدرس              ب) گذرگاه داده                 ج) گذرگاه كنترل                 د) هيچكدام

59-    از نظر مديريت اجراي برنامه ها، سيستم عاملها چند نوع هستند؟

        الف) رابط متني، رابط گرافيكي                              ب) تك كاربره، چندكاربره      

        ج) تك برنامه اي، چندبرنامه اي                             د) هيچكدام

60-    سيستم عامل ويندوز XP داراي دو نسخه .......... و .......... مي باشد.

الف) حرفه اي و سرور       ب)مقدماتي و پيشرفته       ج) خانگي و حرفه اي    د) عمومي و تخصصي

61-    کدام يک از سيستم هاي عامل زير تک کاربره نيست؟

الف) MS-DOS               ب) Windows XP                 ج) Unix               د) Windows 98

62-    در حالت کلي شبکه ها به چند دسته تقسيم مي شوند.

الف) دو دسته اصلي و فرعي         ب) دو دسته شهري و بين شهري  

 ج) دو دسته محلي و گسترده        د) دو دسته LAN و اينترنت

63-    .............. ناحيه جغرافيايي وسيعي را در بر مي گيرد. 

الف) شبکه هاي محلي         ب) شبکه هاي شهري      ج) شبکه هاي گسترده            د) همه موارد

64-    .............. معمولا براي اتصال کامپيوترهاي درون يک ساختمان و يا ساختمانهاي مجزا استفاده مي شود.

الف) شبکه MAN          ب) شبکه LAN           ج) شبکه WAN           د) شبکه اينترنت

65-    کدام يک از نرم افزار هاي زير کاربردي نيست؟

الف)  PowerPoint           ب) Excel              ج) Word             د)Windows XP

66-    کداميک از برنامه هاي زير جزء برنامه هاي کاربردي نمي باشد؟

     الف) برنامه هاي بانک اطلاعاتي                ب) مترجم ها                   

     ج) برنامه صفحه گسترده                          د) برنامه هاي پردازه هاي آماري 

        
+ نوشته شده در  چهارشنبه چهارم مرداد 1385ساعت 9:33 قبل از ظهر  توسط جواد احمدی  |