x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
ما هي لغات البرمجة الخاصة ببرمجة الذكاء الأصطناعى
دعنا لا نأخذ في غمار الشد و الرد في مواضيع " كيف أبدأ تعلم البرمجة " او مواضيع " ما هي لغات البرمجة المناسبة لي " ، فأعتقد و اننا في هذا الموضوع قد تجاوزنا الأمر كثيرا ، فنحن لا نستعرض هنا لغات برمجية تكوينية لصفحات ويب بسيطة او لغات برمجة قادرة على صناعة الة حاسبة ، دعني اخذك في هذا الموضوع الى مجموعة من لغات البرمجة ربما لأول مرة قد تسمع بها ( فلا تنسى ان هناك ازيد من +200 من لغات البرمجة في العالم ) ، او ربما لغات برمجة ربما سمعت بها لكنك ادركت انه لا طائل منها او انها مجرد لغة برمجة عابرة امامنا .. دعني أخذك في هذا الموضوع الى عالم ربما قد أصبح حاضرا الأن عندما كان خيالا في الماضي .. فربما كنا سابقا نحلم او نشاهد في مسلسلات الخيال العلمي روبوتات قادرة على التفكير الذاتي و التصرف بطبيعتها الى ما ذلك من نزوات خيالية شاهدناها في هذه المسلسلات ، لنتفاجئ حاضرا انه أصبح واقعا ملموسا بين أيدينا ، فالروبوتات الأن تقوم بكل شيئ ، الا انه يتم برمجتها من اجل فعل شيئ معينلكن ماذا عن التفكير الذاتي و الذكاء الإصطناعي ؟
هل يمكننا ان نصل لتلك الغاية كوننا مجرد مبرمجين عاديين ؟ لنتابع أهم اللغات البرمجية الخاصة بهذا الأمر >>
ما هو الذكاء الإصطناعي ؟
بالطبع لا يمكنني ان استمر في كتابة مقالتي هذه عن أهم لغات البرمجة المستعملة في برمجة الذكاء الإصطناعي و نحن أصلا لا نفهم ماهية الذكاء الإصطناعي ، اليس كذلك ؟ حسنا ، الذكاء الإصطناعي في مفهومه البسيط هو ان تجعل تلك الألة الحوسبية التي لا تفهم سوى الآحاد و الأصفار تفكر و تستخدم طاقاتها - ان صح التعبيير - من أجل التفكير ، التطبيق ، الإستنتاج ، و الفعل الذاتي دون ادراك برمجي من المبرمج ، ببساطة أكثر و أكثر ، هو ان تجعل الألى تحاكي العقل البشري ، لكن في مفهومه المعقد - ان صح التعبير مجددا - هو ان تجعل الألى تتخذ مواقف و تفكر و تستنتج و تحلل إنطلاقا من ذاتها و بيئتها ، لا يمكنني ان اشرح لك أكثر الذكاء الإصطناعي في مفهومه الكامل كون ان عبارة " الذكاء " مبهمة بالنسبة الينا . لذلك دعونا نكتفي بمفهوم جعل الألة تفكر ذاتيا انطلاقا من وقائع او احداث او البيئة المتواجدة فيها . اما ان كنت تريد البحث قليلا في ماضي الذكاء الإصطناعي و مخترعيه و تجلياته حاليا ، فسأترك لك خيار البحث و الإكتشاف في جوجل .
دعونا الأن نمر الى أهم اللغات البرمجية التي يبرمج بها الذكاء الأصطناعي :
Python
لم أرد ان ابدأ قائمتي بلغات برمجية لا نعرف سافلها من أعلاها، بل أردت ان ابدأها بلغات برمجية سبق لنا و عرفناها او تعلمناها ، البايثون (Python) ، حقا لغة قوية ، لا أصدق بذاتي انها ستدخل قائمة اللغات البرمجية الخاصة بتطوير الذكاء الإصطناعي ، ربما علي ان اقضي هذا الصيف في تعلم هذه اللغة و إحترافها فانا لم اجرب يوما تعلمها ! ، لغة البرمجة البايثون هي لغة واسعة جدا فهي تستعمل في الكثير من المجالات ، البايثون لغة كائنية التوجه لا محالة ، ناهيك عن الإستعمالات الأخرى للغة البرمجة بايثون ، فهي تستعمل ايضا في تطوير الذكاء الإصطناعي ، بل إنها من أكثر اللغات إستعمالا في الذكاء الإصطناعي ، فهي تملك العديد من الحقائب (Packages) التي تجعلها لغة مثالية في برمجة الذكاء الإصطناعي عامة ، و الإكتساب الذاتي او التعلم الذاتي للآلة .. اذا كنت على دراية من قبل بلغة البرمجة البايثون ، ربما يجب عليك البحث أكثر عن هذه الحقائب و البدئ في إستكشاف الذكاء الإصطناعي بداية بالبايثون ، هذا بالطبع ان كان حلمك صناعة روبوت الي يجلب لك كأس ماء بارد عند شعورك بالعطش . PROLOG
حسب بحثي المبسط ، فلغة الPROLOG هي اللغة الأكثر إستعمالا في مجال برمجة الذكاء الإصطناعي ، PROLOG هي عبارة عن إختصار لعبارة (Programming in Logic) ، يعني لنكن واقعيين ، لغات البرمجة هي المنطق الممنطق اليس كذلك ؟ ليست لغات البرمجة فقط ، بل حياتنا ايضا مبنية على المنطق ، فالتزندق لن يفيدنا في شيئ ، بل الكل مبني عن المنطق ، حسنا لغة البرمجة PROLOG ليست بلغة منطقية ( كل لغات البرمجة منطقية و كذلك الPROLOG ) لكن ما احاول ان اوصله لك الى ان هذه اللغة هي لغة قادرة على برمجة المنطق ! او اليس المنطق هو منهج حياتنا ؟ اذن الPROLOG تبرمج منهج حياة الألة ، لذلك عرفنا لما هذه اللغة هي الأكثر إستخداما في برمجة الذكاء الإصطناعي ! .AIML
IPL
IPL هي إختصار لعبارة Information Processing Language ، و كانت من اللغات الأولى الخاصة بتطوير و برمجة الذكاء الإصطناعي ، تقوم هذه اللغة على جعل الألة قادرة على حل المشاكل و إيجاد الحلول من تلقاء ذاتها ، الأمر أشبه مثلا ان تعطي احجية معينة و لنفترض انها مكعب روبيك ، تقدمه للألة و تحله لك كاملا ، ثم تقدم لها أحجية اخرى و لنفترض انها من نوع اخر دعونا نقول لعبة شطرنج مثلا او شيئ من هذا القبيل و حلها مجددا ، ببساطة التعامل مع جميع انواع المشاكل ، كما انها تعالج تطور الذاكرة الديناميكي ، اي التوسع اللامتناهي للمعلومات ، ان كنت على دراية كافية بمجال المعلوميات و البرمجة ، فسأخبرك انها اشبه ب الBig Data و ستفهم قصدي ، اما ان لم تكن كذلك ، فدعني أفسرها لك انها قادرة على جعل ذاكرة الألة تكتسب اكبر قد من المعلومات من خلال ماتصادفه في مسيرتها و تصنيف تلك المعلومات على شكل قواعد بيانات ديناميكية قابلة للتوسع . STRIPS
يبدو أن أكثر لغات البرمجة الخاصة ببرمجة الذكاء الإصطناعي تعتمد في الغالب حل على المشاكل في بادئ الأمر قبل تنفيذ الأوامر ، STRIPS و هي إختصار لعبارة (STanford Researsh Institue Problem Solver) ، هذه اللغة قد إقتبست معظم الأفكار الموجود في باقي لغات البرمجة الخاصة بالذكاء الإصطناعي ، ببساطة ،هذه اللغة تعتمد على توجيه اوامر معينة للحاسوب بلغة الجموع او اللغات الحية التي نعرفها كلنا ، بعدها تحليل هذه اللغة ، و حل المشاكل المتعلقة بها ، ثم تنفيذ الأوامر التي تم توجيهها بها ، لنقربكم أكثر سأعطيك مثالا بسيطا ، مثلا لدي روبوت ( يا رباه ههه ! ) مبرمج بالSTRIPS ، سأقول له : " اذهب و احضر لي كأس ماء " ، اولا سيستمع الى هذا الكلام ، ثم يبدأ بالخطوة الأولى و هي تحليل ما جاء في كلامي ، بعدا سيحل مشكلة الأمر ، الا وهي مثلا : اين المطبخ ؟ اين الكأس ؟ اين الماء ؟ بعد ان يحل المشكل و يجد الحل ، سيقوم بالتنفيذ فورا .. هذا تقريبا مجرد تبسيط بسيط لكيفية عمل لغة البرمجة هذه .Java , C++ , Matlab
هناك العديد و العديد من اللغات البرمجة الخاصة بتطوير الذكاء الإصطناعي مثل LISP ، PLANNER ، HASKELL ، و Wolfram Language ، لكن سأكتفي باللغات التي قدمتها في الأعلى ، لكن قبل ان اختم كلامي ، فالذكاء الإطصناعي لا يتعلق دائما بهذه اللغات ، بل هناك لغات اخرى يمكن إستخدامها الى جانب البايثون من أجل الذكاء الإصطناعي ، و من اهم هذه اللغات هي JAVA , C++ ، Matlab ، فهذه اللغات أيضا قادرة على المساعدة في برمجة الذكاء الإصطناعي ، ليس هذا فقط بل حتى الC# و الF# قادرتين على ذلك ، الا ان اللغتين الأخيرتين لا يستعملان كثيرا في هذا المجال ، لكن هذا لا يعني انه لا يمكن إستخدامهما ، و بالطبع فلا داعي لأشرح كل من الجافا و السي بلس بلس و الماتلاب ، فالكثير يعرف هذه اللغات و ليست بلغات غريبة علينا .