الذكاء الصناعي

الموضوع في '|||▮ The Matrix |▮||' بواسطة lost|pages, بتاريخ ‏12 فبراير 2016.

?

ما مدى إهتمامك بلغة ليسب وتأثيرها في عالمنا مستقبلا؟ وهل تؤيد إستمرارية الدورة؟

  1. مهتم ولكن ليست من تخصصي

    3 صوت
    60.0%
  2. لا أعلم عنها شيئا

    0 صوت
    0.0%
  3. قديمة وصعبة

    0 صوت
    0.0%
  4. سيكون لها إقبال كبير وفريق تطوير عربي حر

    0 صوت
    0.0%
  5. غير مرحب بها في سوق العمل

    0 صوت
    0.0%
  6. أؤيد إستمرارية الدورة

    4 صوت
    80.0%
التصويت المتعدد مسموح به
  1. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    السلام عليكم
    قبل عدة سنوات شدني موضوع الذكاء الصناعي وقمت بالدخول لهذا العالم المختلف وهو بحر عظيم بمختلف مجالاته المتعددة وتخصصاته تماما, وقد أحببت هذا المجال بسبب البرمجة التي كانت السبب في دخولي لهذا العالم المتطور. إن لغات البرمجة مختلفة جدا في صيغ تراكيب جملها. أما الذكاء الصناعي فهو بحد ذاته لا يشبه تلك اللغات لأن لغته تختلف عن عائلة اللغات المتعارف عليها وحتى أن صيغ كتابة الكود أيضا.

    إن علم الذكاء الصناعي يدخل في مجال الهندسة المعلوماتية ومن بين اللغات التي عملت عليها هي لغة البرولوج Prolog والليسب Lisp, إلى الآن لست محترفا فيها ولكن سنبدأ بفتح الباب حول هذا المجال ومن أراد الدخول فيه يجب عليه أن يملك الرغبة القوية والإرادة. هناك الكثير من المهندسين العرب من يملكون معرفة قوية في هذا المجال ولكن بحسب معرفتي المتواضعة لم أرى مشاريع قوية جدا وضخمة تخص الوطن العظيم. سوى سرقة العقول المفكرة ونقلها للغرب.

    من أهم مجالات هذا العلم والذي أميل إليه أكثر هو مجال الروبوتات الآلية وشهدت الآونة الأخيرة تطورا عسكريا متسارعا في مجال الذكاء الصناعي ومثال على ذلك الطائرة من دون طيار والربوت Nao. وسيكون هذا الموضوع مخصص للذكاء الصناعي وكل ما هو جديد وحتى الكورسات والدروس ستجمع هنا في هذا المكان لكي يكون من السهل الوصول والتعلم. لا مكان للرقم 2 هنا.

    [​IMG]
    [​IMG]
    [​IMG]


     
    #1
    miran ،مؤرخ ،الحقيقة و 2آخرون معجبون بهذا.
  2. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    بما أن الذكاء الصناعي شغل العالم الشاغل, فقد فكرت مليا قبل الأقدام على هذه الخطوة مرارا, أذكر منذ سننين مضت في أحد المنتديات قمت بوضع دروس حول لغة البرمجة الخاصة بالذكاء الصناعي, وكانت لغة الليسب Lisp, كنت أترجم من كتب قيمة وأضع الدروس ولكنني توقف. لا يوجد سبب محدد لتوقفي ولكن في الوسط المحيط بي لم أجد التشجيع لكي أثابر وهذه أغلب البيئات. ولكن هنا الوضع مختلف جدا, لما أجده من إقبال كبير على العلم في المكتبة.

    لغات الذكاء الصناعي كثيرة وأشهرها برولوج Prolog , الليسب Lisp و سيجمي Scheme, هذا ما أعرفه وفي الجامعات والمعاهد تدرس ولكن أنا حر, أريد أن ابدأ بكورس خاص بي مختلف تماما عن ما يدرس في تلك الاماكن. أفكر أن أضع أسلوب مغاير ومشوق فنحن العرب نختلف في طريقة تفكيرنا تماما وأسلوب التلقين. لابد من الأن أن ننتهج منهج معين في طريقة التلقين ونطور المواضيع التي تخص الشروحات بأسلوب جديد. لا أدعي الأحتراف ولكنني سأفرغ ما أعلمه هنا وكلي يقين بأن هذا المكان المناسب.
    فكرت أن أعتمد كورس شامل متكامل عربي بحت حول لغة الليسب Lisp في صرح ألفا العلمية, لن أستعجل بها لأنني أريد الوصول باكبر عدد من المتعلمين لهذه اللغة بأسلوبي الخاص وتكون مرجعا عربيا كبيرا يستقطب المهتمين بهذه اللغة من هنا ومن كل مكان.
    الكورس الشامل لن يكون من كتب عربية ولكن من مصادر أجنبية قوية, إن لغات البرمجة تحتاج لعقل متفتح وإرادة قوية وحب على خوض الصعاب. لابد من بعد هذه المقدمة ان يكون هناك هدف من هذا!! نعم هناك هدف!! هدفي أن أوصل الذكاء الصناعي وأن استخدم إمكاناتي المعرفية في توصيل هذا العلم وهذا زماننا لابد من تقديم الأفضل رغم الأزمات التي تعصف بنا.





     
    #2
    آخر تعديل: ‏13 نوفمبر 2016
  3. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    لغة البرمجة الليسب
    Lisp Programming Langauge


    إن اجهزة الحاسب ليست كائنات حية وإنما قطع مركبة من حديد وألومنيوم بالإضافة إلى دارات إلكترونية وموصلات. إذا أردنا التخاطب مع هذه الآلة لابد من أن تكون هناك لغة ما تمكننا من التعامل مع هذه الآلات.

    فمنذ ظهور الثورة الصناعية فقد تقدمت البشرية كثير جدا في مجال صناعة الحواسيب, والتي بدورها ساهمت في حل مشاكل كثيرة وسهلت حياة الملايين من البشر. وأدى ذلك إلى ظهور ما يسمى بالذكاء الصناعي وهو نتاج الأدمغة البشرية التي طورت الآلة بشكل كبير وجعلت من الآلة أكثر سرعة في حل المشاكل والمسائل بسرعة رهيبة جدا بلا مشاعر وأحاسيس.

    إن البشرية على مر العصور ومنذ ظهور أول لغة إلى يومنا هذا احتوت على العديد من اللغات القديمة والحديثة. هناك لغات تكتب من اليمين إلى اليسار كما في لغتنا العربية وهناك لغات تكتب من اليسار إلى اليمين كما في اللغة الأنجليزية, والغريب أن هناك لغات أيضا تكتب جملها من فوق إلى تحت كما في الصينية واليابانية القديمة.

    ماذا عن الآلة؟ هل لها لغة؟ نعم

    إن لغة الآلة تعتمد على الشحنات الكهربية. لنعد بالزمن للوراء منذ ظهور الكهرباء أول مرة, هل تعرفون أن مفتاح المصابيح يعتبر كمبيوتر مصغر!! وظيفته هو تشغيل المصباح وإطفاءه فقط.

    إذا أين اللغة هنا؟
    [​IMG]
    اللغة هنا ليس لديها حروف وإنما يعبر عنها بـ الصفر 0 و الواحد 1. كيف؟! إن مفتاح التشغيل للمصباح له مهمتان فقط هي التشغيل والتوقف. أي إن المصباح يتكون من جملتين. الواحد والصفر - الواحد 1 يعبر عن التشغيل والصفر 0 يعبر عن التوقف.
    هذا فقط المصباح البسيط, وماذا عن الحواسيب العملاقة التي تعالج الملايين من المهمات والمشاكل. لكم أن تتخيلوا عدد الأصفار والآحاد بالمليارات.
    Binary.jpg
    نحن الآن في عصر معلوماتي بحت وقوي ولابد لنا من التقدم للأمام مهما كلفنا الأمر, حلم البشرية إكتشاف المجهول والوصول لأبعد نقطة يمكن للأنسان أن يصلها. صناعة الربوتات والسكن في الكواكب. إذ لا بد لنا من فهم هذه الآلة وتسخيرها في خدمتنا في السلم والخير لا أن نستخدمها لتدميرنا كما يصورن لنا في الأفلام.

    يتبع <<<




     

    الملفات المرفقة:

    #3
    آخر تعديل: ‏13 نوفمبر 2016
  4. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    قد يسأل البعض منكم !! إن البرمجة صعبة !! أو هي بحاجة لإيجادة اللغة الأنجليزية أو معقدة ...إلخ. أقول إن شاء الله سأتمكن من إيصالها لغير المبرمج قبل المبرمج بطريقة جميلة جدا ومحببة. فلابد من حب الشي قبل الخوض فيه. صحيح أنها كتبت بلغة إنجليزية ولكن في الآونة الأخير ظهرت لغات عربية عدة. أما ما أنا بصدده هنا هي لغة الذكاء الصناعي فقط ولا أعني اللغات الأخرى.

    حسنا! أولا ما هي البرمجة؟ أو ما معنى أن تبرمج أصلا!!! لن أشرحها بالمفهوم العام فهي كثيرة على الأنترنت ولكن بأسلوبي الخاص. سأوضح نقطة مهمة في المعادلة التالية:


    القمح -----> مطحنة -----> الدقيق

    في المثال فوق نرى القمح قد عولج في المطحنة وأنتج لنا الدقيق. القمح هنا يمثل المدخلات أي قمنا بإدخال القمح والمطحنة تمثل المعالجة أي قامت بعلاج القمح وهو طحنه, وأما الدقيق فهو المخرجات أي الناتج من عملية الطحن. نستنج من ذلك ما يلي:



    المدخلات - معالجة - المخرجات
    القمح - مطحنة - الدقيق

    جميل جدا أخي lost|pages, ولكن ما هي البرمجة؟ البرمجة هي في المثال الأول أننا قمنا بالطلب من المطحنة القيام بعمل ما. أي طلبنا منها أن تطحن القمح لتحوله إلى دقيق, فهي لها عمل محدد فقط وليست ذكية أو تملك أحاسيس.

    إذا البرمجة هي أن تطلب من الآلة أن تقوم بعمل ما أنته تحدده. فنحن البشر نعتبر أجهزة خارقة جدا بالمقارنة بالكمبيوتر والسبب أننا نملك قدرات خارقة ولكن ما يميز الكمبيوتر عنا هو سرعته الرهيبة في المعالجة بلا تعب. إذا فالبرمجة كالتالي:


    الأنسان - لغة برمجة - الكمبيوتر

    لكي نبرمج الكمبيوتر لابد لنا من لغة برمجة تمكننا من التواصل مع الآلة و كتابة أوامر خاصة هذه الأوامر تسمى (كود برمجي). فما السبب؟ السبب أن الآلة لا تفهم لغة البشر المباشرة. فمثلا إذا طلب من أحد الأعضاء القيام بالمشي عشر خطوات, سيقوم بالتحرك عشر خطوات. ولكن هل لو قلت للحاسب تحرك عشر خطوات سيتحرك؟ لا بالطبع. وما هو الكود البرمجي؟ إن الكود البرمجي عبارة عن أسطر يكتبها الأنسان وتفهمها الآلة. أي هي لغة الآلة. نوصل للآلة ونخبرها ما نحن بحاجة له وهي بدورها تقوم بتنفيذ ما نطلبه.
    لماذا الأنسان تحرك ولم يتحرك الحاسب!!؟ لأن الأنسان بطبيعة خلقته يحمل في عقله مليارات الخلايا العصبية والتي تمرر وتخزن المعلومات والقدرة على السماع والفهم والأستيعاب والتحرك متى شاء(حر الأرادة) وليس كآلة الحاسوب الصماء.

    إذا نفهم من ذلك ما يلي:


    الأنسان - لغة عربية - نصوص وجمل
    الكمبيوتر - لغة برمجة - نصوص وجمل

    ولكن هل الحاسوب يفهم اللغة البشرية؟ لا, فالحاسوب له قواعد للغته مثل ما نحن لنا قواعد للغتنا العربية. أي لا بد من الألتزام بالقواعد في كتابة الأسطر البرمجية. وكيف يفهم الحاسوب الكلام الذي نكتبه له؟ إن الحاسوب يحول الكلام المكتوب بواسطة الأنسان أي الكود البرمجي إلى لغة الآلة وهي الصفر و الواحد.

    ولكن قلت أن لغة الحاسوب هي لغة البرمجة!! وما هي لغة الآلة؟ حسنا, إن لغة البرمجة هي ما قام البشر بصياغتها لكي تكون قريبة من لغتنا الأم عربية كانت أم أجنبية ولكي يسهل علينا كتابة الكود البرمجي. وماذا عن لغة الآلة؟ لغة الآلة هي اللغة القديمة لأول كمبيوتر ظهر في الماضي السحيق. فالكمبيوتر الآن يأخذ الكود البرمجي ويحوله إلى 0 و 1 لكي تفهمه الآلة وبالتالي تقوم هي بدورها في إخراج ما طلبناه منها القيام به.

    للقيام بكتابة كود برمجي لابد لنا من برنامج, هذا البرنامج يسمى المترجم أو المفسر. يقوم الأنسان بكتابة كود اللغة داخل المترجم أو المفسر وبعد الأنتهاء يقوم المترجم أو المفسر بتحويل الكود المكتوب بلغة الأنسان إلى لغة الآلة وتخرج النتائج على شاشة الحاسوب. إذا ما الفرق بين المترجم والمفسر؟

    المترجم يقوم بتحويل لغة البشر كاملة إلى لغة الآلة وينتج لنا برنامج منفصل(مثل إنسان يترجم كتاب كاملا).
    المفسر يقوم بتحويل سطر واحد فقط إلى لغة الآلة في الحال(مثل إنسان يترجم سطرا واحدا في كتاب).

    كيف يصبح الحاسوب ذكيا ومستقلا في عمله؟, هذا ما سنعرفه بعد السفر في عالم الخلايا العصبية. لأي أسئلة حول هذا الدرس فقط أرجو طرحه قبل الشروع في الدرس التالي وهو مدخل للخلايا العصبية. الخلايا العصبية مهمة جدا قبل البرمجة لكي نفهم عملها وهذا سيساعدنا في كتابة برامج ذكية جدا.


     
    #4
    آخر تعديل: ‏11 سبتمبر 2016
    أعجب بهذه المشاركة كائن من الحضارة العليا
  5. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    لغات المستوى المنخفض ولغات المستوى العالي
    Low level language & High level language
    [​IMG]

    إن الحواسيب تحتوي على لغات كثيرة جدا على مر السنين, منها لغات المستوى المنخفض ولغات المستوى العالي. ما معنى هذا الكلام؟ عندما بدأت الحواسيب الظهور للعلن كانت هناك لغات قريبة من لغة الآله وهي اللغة الصعبة التي يستحيل على البشر فهمها وأداء المهام بها. مثلا نقول :"نادر!! قم بضرب 5 في 5"

    هذه الجملة سهلة للبشر بسبب الأستيعاب التام لها لأننا نعلم ما هو الأسم نادر وما هو الرقم خمسة وناتج ضربهما, بسبب تعلمنا لجدول الضرب في الصغر. أما إذا أردنا تحويل ذلك للغة الآلة فلن يعرف الحاسوب من هو نادر!! ولكن في المقابل سيعطينا حاصل الضرب بين العددين 5, مثلا
    نحول الجملة إلى لغة الآلة ونقول:
    "نادر!! قم بضرب 5 في 5"
    "01101, 00101 01101 00110 10101 00110"
    مجرد مثال وليس حقيقة أن تلك الأصفار والآحاد تمثل نادر لأنني لا أعلم بالضبط ماهي بالنسبة للآلة, مجرد مثال توضيحي.

    قل لي الآن, هل تستطيع فهم الذي مكتوب بالأعلى؟ طبعا لا سيستغرق منك الكثير من الوقت والجهد والتعب. فهذا مستحيل بالنسبة للبشر أن يتحدثوا طوال اليوم بـ 0011101110111011

    لهذا السبب نقول أن لغات المستوى المنخفض تكون قريبة من لغة الآلة وأما لغات المستوى العالي فهي اللغات التي تكون قريبة من لغة البشر. كي تكون مفهومة لهم ويستطيعون تأدية مهامهم بشكل أسرع توفيرا للوقت والجهد وزيادة في الأنتاج.

    من اللغات ذات المستوى المنخفض لغة التجميع Assembly وهي لغة قريبة جدا من الآلة لن نتطرق لها بشكل واسع لأنها تخص لب العتاد مباشرة لا وسيط بينك وبين الآلة. بعد ذلك ظهرت لغات عديدة كالسي C والسي بلس بلس ++C والليسب Lisp (موضوع درسنا) والجافا Java والبايثون Python. هذه اللغات تعتبر ذات مستوى عالي أي قريبة من لغة البشر وبينك وبين الآلة برنامج وسيط يقوم بتحويل الكود البرمجي الذي كتبته إلى لغة الآلة وهو المترجم الذي تحدثنا عنه في الدرس السابق.

    هل حلمتم يوما بروبوت يتكلم معكم بطلاقة تامة وإستقلالية؟ هل شاهدتم آلتين تتحدثان مع بعضهما البعض من دون تدخل الأنسان؟ هل من الممكن أن نرى رجال آليين يبنون بيوتا؟ في الحقيقة هناك نعم, ولكن ليس بهذا الخيال!!! مجرد آلالات في المصانع تقوم بدور لها مكرر كل على حسب وظيفته من دون إستقلالية.

    قبل كل شي أريد نزع فكرة كانت مزروعة في أذهاننا منذ الصغر وبسبب الأفلام الأجنبية التي تقول لنا وتصور أن الأجنبي دائما متفوق على العربي. نعم بعض الشي كونهم يملكون علوما متقدمة. ولكن ليس بعد اليوم. لأننا بشر ونستطيع فعل المستحيل إذا أردنا ذلك ولن أتابع في تقديم الدروس حتى ننزع تلك الفكرة الخبيثة ونقول إذا كانوا هم يستطيعون فنحن أيضا نستطيع ذلك. نعم نستطيع بالأرادة والصبر والمثابرة على تعلم كل شي ودحر كل شي والسير قدما.

    قبل الخوض في البرمجة لابد لنا من معرفة ما هو جهاز الحاسوب وبأسلوبي الخاص أقول إنه مجرد جهاز خردة لا يتكلم ولا يحس مكون من عدة معادن وبلاستيك. نعم لأنه لا يستطيع فعل شي من دون نظام تشغيل Operating System.

    ما هو نظام التشغيل هذا؟ هو نظام مكون من عدة برامج تعمل معا وجمعت وربطت وكونت ما يسمى نظام تشغيل. لابد من نظام حتى نعرف التعامل مع الحاسوب. الخلاصة

    الأنسان - نظام تشغيل - حاسوب

    ومن أنظمة التشغيل المعروفة نظام ويندوز Windows بكافة أنواعه ويونكس Unix ولينكس Linux وماك Mac وهناك الكثير الكثير.
    النظام الأول منتشر بشكل كبير ومعروف لدى الكثيرين أما باقي الأنظمة فهي مفتوحة المصدر. أي أن الكود البرمجي لها حر يستطيع أي مبرمج التعديل على النظام والسيطرة عليه كاملا.
    أسف لأنني لم اتطرق للخلايا العصبية بعد لأنني نسيت هذا الموضوع فهو مهم قبل السفر للخلايا العصبية.



     
    #5
    آخر تعديل: ‏11 سبتمبر 2016
  6. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    الخلايا(الشبكات) العصبية
    [​IMG]
    تعتبر الخلايا العصبية من أهم مكونات الدماغ البشري,إذا يحتوي الدماغ على مليارات الخلايا العصبية وهي عبارة عن شبكات متداخلة فيما بينها تنقل المعلومات والأحاسيس من الدماغ إلى باقي أعضاء الجسم البشري. بواسطته نستطيع أن نميز الخطأ من الصواب. وهذا مالا يستطيعه الحاسوب ولكن العلماء درسوا تلك الخلية العصبية وأنشؤا من خلالها فهما عميقا لجعل الحاسوب يحاكي تلك الخلايا ويميز بين الأشياء. إن علم الخلايا العصبية كبير جدا ونحن هنا بصدد التعريف البسيط حول الخلايا العصبية لأننا عندما ندخل في عالم البرمجة سيكون لدينا معرفة وفهم حولها وكيفية عمل برامج ذكية ومتطورة تحاكي البشر.

    وبعد ذلك خرج العلماء بما يسمى الخلايا العصبية الأصطناعيةAAN - Artificial Neural Networks

    إن الخلية Neuron العصبية الواحدة تستقبل الأشارات من الخلية المجاورة لها بسرعة رهيبة جدا وقد درسنا حول هذه الخلية في المدارس وكلكم يعلم ما هيتها وهنا بصدد الرجوع مرة أخرى لها كونها جزء من درسنا.


    [​IMG]
    نرى في الصورة أن الخلية تتكون من شعيرات مستقبلة ومرسلة, ومحور عصبي ونواة. إن الشعيرات المستقبلة تقوم بإستقبال الأشارات من الخلايا الأخرى وتحدد نوعها ووجهتها وتقوم الشعيرات المرسلة بإرسال الأشارة إلى خلية أخرى. كيف يمكن عمل ذلك من خلال الحاسوب؟

    تخيل أنك أصبت بألم في الأسنان أو في القدم أو في أي مكان في الجسم, فورا ترسل الخلايا العصبية إنذار إلى الدماغ بأن هناك ألم في عضو ما. تخيل أن أمامك حيوان مفترس! ستقوم الخلايا العصبية بإرسال تنبيه من الدماغ إلى باقي الأعضاء بأن الذي أمامك حيوان خطر وأن يجب عليك الهروب. كيف ذلك؟ لقد خزن في عقلك أن الحيوان مفترس ولنقل أن الحيوان أسد. لقد تعلمت في المدرسة أن الأسد حيوان خطر وقد تم حفط ذلك في عقلك.

    هل ترى الآن مدى فائدة هذه الخلايا العصبية؟!


    هل يمكننا حل المشاكل بإستخدام الخلايا العصبية؟ نعم, يجب عليك بعد أن تصبح مبرمجا أن تعرف المشكلة وصياغة الحلول المناسبة لها. لماذا نحن البشر إخترعنا الحاسوب؟ مع أننا يمكن أن نحل مشاكلنا بسرعة دون الحاجة لحاسوب. إن الحاسوب يتمتع بالسرعة الفائقة وبمجاراة خلايا البشر يقوم بحل مشاكل أكثر تريح البشر من العناء وتزيد من إنتاج الحلول المناسبة. ولأي مشكلة لابد لنا من خوارزمية. ما معنى خوارزمية؟ إن الخوارزمية هي خارطة الطريق لحل مشكلة ما. أي عندما تقع في مشكلة ما في الحياة وتجد الحل المناسب لتلك المشكلة بشكل مرتب ومتسلسل تعتبر هذه خوارزمية. وعند حل مشكلة في الحاسوب ونريد أن نقوم بعمل برنامج لحل المشكلة لابد لنا من خطوات أوليه قبل الشروع في كتابة الأكواد البرمجية لحل المشكلة. هذه الخطوات تسمى خوارزمية.

    لكن هل للذكاء الصناعي أي خوارزمية؟ ربما وربما لا. إن الخلايا العصبية مهمة جدا في عالم الكمبيوتر والصورة التالية توضح الخلية. كل دائرة تمثل خلية عصبية صناعية واحدة ترسل وتستقبل من وإلى الخلايا الأخرى. بهذه الطريقة نستطيع جعل الحاسب يتعرف على وجوه الأشخاص وتخزينها على شكل صور أو بحفظ الأرقام والكثير الكثير. لاتقلقوا من الرسم, لن أتقدم حتى يكون كل شي سهل إن شاء الله.



    [​IMG]
    [​IMG]


    في عالم البرمجة هناك تشكيلات عديدة للخلايا العصبية الصناعية المرسومة يستخدمها المبرمجون كخارطة لأنتاج برامجهم. إن الخوارزميات عالم كبير جدا وهندسة البرمجيات حتى. وعالم الانترنت يزخر بالمصادر الكثيرة جدا حول هذا العلم. ولبرمجة الخلايا العصبية الأصطناعية لابد من معادلات رياضية تعمل على تعليم الخلية الواحد الدور المناط لها وسأتطرق لها في الدروس المقبلة.




     
    #6
    آخر تعديل: ‏13 نوفمبر 2016
  7. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    لغة الليسب
    Lisp Programming Language

    محررات النصوص & بيئات التطوير المتكاملة
    [​IMG]
    سنبدأ من الآن رحلتنا الطويلة في عالم الذكاء الصناعي وإن شاء الله نصل إلى الأحتراف بخطى ثابتة ومدروسة. هذه الدورة تشمل المبرمجين والهواة وطلبة الكليات والجامعات. حتى أنا معكم سأتعلم وأحترف هذه اللغة سويا وكلي تفائل بغد أفضل وخير أشمل.

    لكي نتواصل مع الحاسب, لابد لنا من محرر نصوص Text Editor أو بيئة تطوير متكاملة Integrated Development Environment. قد ويرمز لها بـ IDE وقد يسأل سائل ما الفرق بينها؟ وما معنى ذلك؟

    محرر النصوص Text Editor هو برنامج صغير يأتي مع حزمة التطبيقات في نظام ويندوز أو يونكس أو لينكس وحتى الماك. بواسطة هذا المحرر نستطيع كتابة الأكواد البرمجية التي تعلمناها في الدروس السابقة. وبعد كتابة الكود البرمجي نأمر الكمبيوتر بتنفيذ ما قمنا به لكي يعطينا النتائج. من أبسط المحررات, المحرر الذي يأتي مع نظام ويندوز وهو Notepad. هذا المحرر بسيط جدا مقارنة مع الكثير من المحررات المتطورة. هناك محررات تعطينا ألوانا جميلة عند كتابة الكود وإذا حدث خطأ ما تنبهنا بمكان الخطأ بلون مميز. ومن أشهر المحررات Notepad++ و Emacs وهي مفتوحة المصدر وتاتي مع أنظمة لينكس وماك ويونكس.

    إن الأنترنت يزخر بالعديد من المحررات ولك ان تختار ما تشاء ولكن هنا سنعتمد على محرر سأذكره لاحقا. أنا استخدم نظام أبونتو لينكس Ubuntu وعندي محرر Emacs وأغلبكم يستخدم ويندوز. سأضع لكم المحررات اللازمة لكلا النظامين.

    أما بخصوص بيئة التطوير المتكاملة IDE فيه عبارة عن محرر نصوص مدموج في برنامج كبير يتيح لنا خيارات سهلة ومميزات تفيدنا في كتابة الكود وتسهيل مهمة البرمجة وإصلاح الأخطاء وأيضا ترتيب ملفات المشاريع تحت بعضها وإتاحة الوصل لها بشكل مريح وسهل. من أهم بيئات التطوير الخاصة بلغة الليسب Lisp برنامج LispWork IDE. أيضا وجدت بيئة جميلة جدا وهي LispBox تستطيعون تحميلها من هنا.
    Lispbox
    وتوجد عدة أصدارات للويندوز واللينكس كل حسب نظامه.

    وأيضا هنا برنامج أخر للويندوز
    DaanSystems - LispIDE - Lisp and Scheme Editor IDE

    أرجو أن تكونوا جاهزين للتعلم والعمل واتمنى أن أجد إقبالا كبيرا كي لا يذهب العمل سدى. لقد اعتمدت كتبا أجنبية رائعة حول هذه اللغة وإن شاء الله سنبدأ اليوم بالدرس الأول من البرمجة.

    جاري التحضير...





     
    #7
    آخر تعديل: ‏5 سبتمبر 2016
  8. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    المقدمة Introduction
    لغة الليسب Lisp Programming Language



    تعتبر لغة الليسب Lisp من اللغات ذات المستوى العالي, والمصطلح Lisp يشير إلى List Processing Language, أي لغة القوائم المتصلة. وهي لغة تعبيرية Expression ليست كباقي اللغات البرمجية الأخرى. ما معنى تعبيرية؟ أي أن الكود يكتب على شكل تعبيرات.

    [​IMG]
    قام جون مككارثي John McCarthy بإختراع هذه اللغة سنة 1958, وهي مناسبة جدا للذكاء الصناعي, حيث تقوم بمعالجة المعلومات الرمزية بكفاءة. ومن أشهر النسخ القياسية المتعارف عليها حسب المعيار الأمريكي هي لغة الليسب المشتركة Common LISP, وطورت خلال عشر سنوات من بداية 1980 إلى 1990. لتوحيد مجموعة الأعمال التنفيذية. خلفا لـزيتا ليسب zetalisp و تطبيق ليسب الجديد New Implementation of LISP (NIL) etc.

    وتعتبر لغة الليسب Lisp language, لغة مشتركة, سهلة ممتدة لا محدودة من ناحية التنفيذ. والبرامج المكتوبة بلغة الليسب المشتركة لا تعتمد على آلة محددة الخصائص.


    ومن مميزات اللغة:
    1 لغة آلية مستقلة
    2 تستخدم لمنهج التصميم التكراري
    3 سهلة التمدد
    4 تتيح تحديث البرامج بشكل حيوي
    5 توفر مصحح ذو مستوى عالي high level debugging
    6 توفر برمجة كائنية التوجه بشكل متطور advanced object-oriented programming
    7 توفر نطاق واسع من أنواع البيانات data types والكائنات objects و الهياكل structures و القوائم lists والناقلات vectors والمصفوفات القابلة للتعديل adjustable arrays والجداول المجزئة hash-tables و الرموز symbols
    8 لغة تعبيرية الأساس
    9 توفر نظام الشرط كائني التوجه object-oriented condition system
    10 توفر مكتبة كاملة I/O library. كل لغة لها مكتبة خاصة بها كافة الملفات التي تفيد في بناء المشاريع. و I O تعني مكتبة الأدخال Input و الأخراج Output.
    10 - وتوفر هياكل التحكم بشكل واسع extensive control structures

    لا داعي للخوف, فكل ميزة سأمر عليها بشكل تفصيلي وسأشرحها بشكل مشوق وممتع. هذه هي البرمجة من أراد الدخول. لابد لنا من مجاراة الآلة والصبر عليها كي نجعلها ذكية.
    ------------------------------------------------------
    التطبيقات التي صممت بواسطة لغة الليسب Lisp Language
    Applications Developed in LISP

    1 محرر إيماك Emacs: هذا المحرر سأستخدمه في دروس اللغة وربما أنتقل لأخر.
    2 الأوتوكاد AutoCad
    3 - مخزن ياهو Yahoo Store , والكثير الكثير


     
    #8
    آخر تعديل: ‏13 نوفمبر 2016
  9. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    PROGRAM STRUCTURE
    هيكل البرنامج


    إن عبارات لغة الليسب Lisp Language يطلق عليها تعبيرات رمزية symbolic expressions أو بإختصار S-expressions. والتعبيرات الرمزية تتكون من ثلاثة أشياء:

    1 - الذرات Atoms.
    2 - القوائم Lists.
    3 - السلاسل Strings.


    وأي تعبير رمزي S-expression يعتبر برنامج فعال. إن برامج لغة الليسب تعمل على المفسر interpreter أو ككود مترجم compiled code . إن المفسر interpreter يقوم بالتحقق من الكود البرمجي الذي سنكتبه في حلقة مكررة repeated loop, أو ما يسمى قراءة تقيم طباعة الحلقة Read-Evaluate-Print Loop REPL. ما معنى ذلك؟ معنى ذلك أي يقوم بقراءة الكود البرمجي ومن ثم يقيم عليه وبعد ذلك يقوم البرنامج بطباعة القيم لنا على الشاشة.

    بإختصار: نكتب الكود ويقوم المفسر بالتحقق إن كان صحيحا ومن ثم يطبع لنا النتيجة. كأن نكتب 1+1 ومن ثم يقوم المفسر(البرنامج الذي سنعمل عليه) بالتحقق من ذلك إن كان صحيحا وبعد ذلك يرجع لنا بالنتيجة وهي 2.


    Simple Program in Lisp Language
    كتابة أول برنامج بسيط للغة الليسب:

    لا تقلقوا !! سأبسط الأمر, لقد درسنا في المدارس وفي حصص الرياضيات العمليات الحسابية كالجمع والطرح والضرب وحتى القسمة وعرفنا كذلك طريقة كتابة الجمل الرياضية, كأن نقول 1 +1 أو 3+4 -2 وهكذا. لكن الأمر مختلف هنا في لغة الليسب Lisp Language :

    أولا يجب أن تكون العمليات داخل أقواس()()()()()()()()(). هذه هي ميزة لغة الليسب Lisp, ألم أقل لكم إنها لغة تعبيرية ذات قوائم متصلة!! حسنا, في لغات البرمجة المتعارف عليها كالسي والسي++ والجافا والبايثون وتسمى جميعها(عائلة السي) الجميع يتفق على رموز العمليات الحسابية, الجمع + الطرح - القسمة / والضرب * وحتى في طريقة كتابة الأكودا تكون متشابهة.

    أما لغة الليسب Lisp ليست من هذه العائلة فهي من كوكب أخر لا علاقة لها بتلك اللغات أبدا وحتى طريقة كتابة أكوادها تحتلف عنهم. في بداية البرنامج ستظهر لنا كلمة CL-USER وهي تعني المحث, أي ينتظرنا لنبدأ بكتابة البرنامج.لكتابة كود بسيط يجمع بين عدة أعداد نقوم أولا بفتح أقواس () ومن ثم نكتب داخلها عملية الجمع. انتظروا قليلا! العملية تختلف هنا في صياغتها مثلا لكي نجمع عددين وهما 6+5 كما اعتدنا عليها, تكون بهذه الطريقة (6 5 +), أي أن علامة الجمع تسبق الأعداد داخل القوسين, وسوف يقوم المفسر بإظهار النتيجة لنا وهي 11. رائع

    إنتباه لابد من وضع مسافات بين علامة الجمع والأرقام.

    لنقوم بكتابة برنامج أخر يجمع بين عدة أعداد كـ 4 و5 و1 و2. سنقوم بالتالي: (2 1 5 4 +)
    والنتيجة ستكون 12.


    مثال آخر

    (6 5 13 +)
    هنا الرقم 13 وليس 1 و 3 ونلاحظ المسافة بين كل رقم. المسافة تحدد ما إذا كان الرقم آحاد أو عشرات.
    والنتيجة هي 24


    إلى هنا نتوقف وسنكمل لاحقا...


     
    #9
    آخر تعديل: ‏13 نوفمبر 2016
  10. كائن من الحضارة العليا

    المشاركات:
    1,170
    الإعجابات المتلقاة:
    1,164
    كيف يعرف البرنامج انها 12 وليس 1 و 2 ونتيجة الجمع تكون 12
     
    #10
    lost|pages و Miss Dracula معجبون بهذا.
  11. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    آسف, كان خطأ مني ليس 21 وإنما 12 , لابد من وضع مسافات بين الأعداد. تم التعديل فوق
     
    #11
    أعجب بهذه المشاركة كائن من الحضارة العليا
  12. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    لقد تطرقنا في الدرس السابق إلى أن التعابير في لغة الليسب تتكون من ثلاثة عناصر وهي :
    1 - الذرات Atoms.
    2 - القوائم Lists.
    3 - السلاسل Strings.

    هيا بنا لنتعرف عليها.

    الذرات Atoms هي كل رقم أو سلسلة من الأحرف المتجاورة, إذ تحتوي على الأرقام والأحرف الخاصة.
    مثال : abc123 - block222 - 1233434 - hello - name

    أما القوائم List فهي الأقواس (). إن القوس الخالي () يعتبر قائمة خالية Empty List ومثال على القوائم :
    (i am a list) (hello) (a b c)

    ما معنى هذه القائمة (8)؟ هذه تدعى قائمة تحتوي على ذرة واحدة, والذرة هنا هي رقم 8.

    أما السلاسل String فهي مجموعة من الأحرف بين علامات إقتباس مزدوجة quotation marks " ".
    ومثال على السلاسل النصية:
    " Hello I am Lost pages"
    " welcome to lisp world"

     
    #12
    آخر تعديل: ‏13 نوفمبر 2016
  13. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    هناك برنامج إسمه SBCL و newlisp يعملان على الشاشة السوداء بعد تحميل أي منهما واحد فقط يمكنكم أن تكتبوا اسم البرنامج في نافدة الأوامر في لينكس أو ويندوز. ومن ثم ستقوم النافذة بالتحول فورا للبرنامج وبعدها تباشرون التعلم وكتابة الأكواد على شاشة الأوامر.
    في الويندوز تسمى commandLine
    في اللينكس Terminal
    هذا إذا أحببتم العمل على شاشة سطر الأوامر. أما إذا أردتم بيئة متكاملة فحملوا LispWork لمستخدمين ويندوز ولينكس وماك.
     
    #13
  14. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    التعليقات Comments

    التعليقات comments مهمة جدا, وهي في كل لغات البرمجة وتستخدم لكتابة تعليق ما على كود معين. كأن يشرح المبرمج فقرة من الأكواد مثلا أو يوثق مستندا يصف فيه نوع البرنامج وأسم المبرمج وتاريخ الأنتاج وكذلك لحفظ الحقوق كاملة.

    هذه هي التعليقات ولكل تعليق لا بد من رمز يأتي قبل كتابة التعليق. والتعليقات لا يعير لها المفسر أي إهتمام فمثلا إذا كتبنا 4 + 5 كتعليق لن يقوم المفسر بإظهار النتيجة 9 , لأن ذلك يعتبر مجرد تعليق لا أكثر.

    كيف تكتب التعاليق في لغة الليسب Lisp؟ إن رمز الفاصلة المنقوطة ; يستخدم لكتابة تعليق على سطر واحد. هيا بنا إلى الأمثلة:
    Screenshot from 2016-11-13 04-58-29.jpg

    هكذا تكتب التعاليق, أولا نبدأ بالفاصلة المنقوطة ومن ثم نكتب ما نشاء.
     
    #14
    آخر تعديل: ‏13 نوفمبر 2016
    أعجب بهذه المشاركة كائن من الحضارة العليا
  15. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    نقاط جديرة بالذكر

    نقاط مهمة لابد من ملاحظتها:

    1 - إن العمليات الأساسية للأعداد في لغة الليسب Lisp هي, الجمع + و الطرح - والقسمة / والضرب *

    2 - إن التعبيرات في لغة الليسب Lisp ليست حساسة لحالة الأحرف not case-sensitive, مثلا عندما نقول Nader أو nader فهما نفس الشي. أما في لغات البرمجة الأخرى كالسي والجافا وغيرها المتعارف عليها فهي حساسة.

    3 - في لغة الليسب Lisp يتم إستدعاء الدالة function call, انتظر!! ما معنى دالة؟ الدالة هي أمر مبرمج سابقا ومخزن في المكتبة يتم استدعاءه ليقوم بوظيفة ما. كيف؟ مثال:
    (f(xالــ f هنا تمثل الدالة والــ x القيمة التي نريد من الدالة القيام بعملها لأظهار لنا النتيجة. ولكن الدالة في لغة الليسب Lisp تحتلف في كتابتها عن باقي لغات البرمجة, فهي تكتب هكذا (f x) أي الدالة تكون داخل القوس. مثلا تذكرون الساين sin الكوساين cos في الرياضيات!!؟
    (cos(1 مثلا تكتب في الليسب Lisp هكذا (cos 1) ستمر علينا دوال كثيرة وسنكتب نحن دوال خاصة عندما نتعمق أكثر في الدروس.


    4 - إن لغة الليسب Lisp دائما تحاول تقيم كل شي, بما في ذلك الحجج arguments سنتعرف عليها لاحقا, وهناك ثلاثة أنواع من العناصر الثابتة والتي تعود بقيمها الخاصة:
    - الأرقام
    - الحرف t وهي منطقية وتعني صحيح true
    - القيمة nil وتعني خطأ false


    سنتعرف بالتفصيل الممل على كل ما تعلمناه لاحقا, يجب عليكم المذاكرة دائما. مازلنا في التمهيد.

    يتبع ...

     
    #15
    آخر تعديل: ‏13 نوفمبر 2016
  16. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    لماذا نتعلم لغة الليسب Lisp؟ لأنها تجعلنا نفعل أشياء لا تستطيع اللغات الأخرى القيام بها.
    إن لغة الليسب جميلة جدا وقليلة في كتابة الأكواد و تعابيرها أفضل من اللغات الأخرى. ولكي تتعلم لغة الليسب Lisp لابد لك من إستخدامها, نعم, لأنها لغة تفاعليه.إن المتعارف عليه في البرمجة ككل لابد من كتابة الكثير من الأكواد والتمرن دائما. لأنها لغة واللغة تحتاج لفهم قواعدها جيدا لأتقانها.

    لنراجع قليلا ما تعلمناه سابقا, وهذه المرة سأعرض بالصور لكم من شاشة سطر الأوامر الخاص بي. هنا من أبسط التعابير و سنقوم بإدخال العدد وهي الأعداد الصحيحة integer أمام المحث أو الموجه وهذه إشارته < سيقوم النظام بطباعة القيمة نفسها ويليها محث أخر يخبرنا أنه على إستعداد لأستقبال المزيد.

    [​IMG]
    لنراجع العلميات الحسابية التي تعلمناها سابقا في المثال التوضيحي التالي:
    نرى هنا كيف أن العمليات الحسابية من جمع وطرح وضرب وقسمة تتقدم الأرقام داخل الأقواس وهذه ميزة لغة الليسب Lisp. يحب أن نعتاد عليها لأنها غير مألفوفة ويجب أن نفهم الآلة.

    [​IMG]
    في المثال التالي: ندخل السلسلة النصية WELCOME WELCOME ويعيد الموجه الجملة كما هي وأيضا نرى هنا كيف قمنا بكتابة تعليق ولم يعر المفسر أي إهتمام وقادنا مباشرة لموجه أخر.
    [​IMG]
     
    #16
    آخر تعديل: ‏27 فبراير 2016
  17. EMATAO

    EMATAO عضو جديد

    المشاركات:
    47
    الإعجابات المتلقاة:
    16
    أنت رائع جزاك هبل خيرا
     
    #17
    أعجب بهذه المشاركة lost|pages
  18. EMATAO

    EMATAO عضو جديد

    المشاركات:
    47
    الإعجابات المتلقاة:
    16
    جزيت خيرا فمن يعطى خيرا ومعرفة يعطى خيرا ومعرفة
     
    #18
    أعجب بهذه المشاركة lost|pages
  19. Miss Dracula

    Miss Dracula عضو مشارك

    المشاركات:
    142
    الإعجابات المتلقاة:
    262
    الصور لا تظهر في المشاركة الأخيرة يا لوست

    هل الخطأ من عندي فقط؟؟
    ام الجميع ايضا؟؟
     
    #19
  20. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    (ثقافة)
    من منا لا يعرف معهد MIT للتكنولوجيا, والذي يعتبر من أقوى المعاهد في العالم في الولايات المتحدة الأمريكية. لغة الليسب Lisp تدرس هناك كتخصص جامعي في علوم الكمبيوتر. هذا المعهد الذي صمم المكوكات الفضائية بالتعاون مع ناسا والذي يخطط لبناء مستعمرات بشرية في المريخ.

    [​IMG]
    [​IMG]
     
    #20
  21. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    لقد إتفقنا على أننا ندرس لغة الليسب المشتركة Common Lisp. لأن في سنة 1984 كانت لغة الليسب Lisp لها عدة إصدارات وتلك الأيام كانت الحواسيب الشخصية تحتوي على ذاكرات قليلة المساحة. أما اليوم فقد تغير الحال للأفضل واتسعت المساحة لتصل بالــ جيجابت Gigabytes. ولهذا السبب أجمعوا على جعل لغة الليسب مشتركة Common Lisp حول العالم لكي لا تحدث أزمة برمجية في تنوع اللغة. أي وضعوا لها معيار موحدا كما وضعوا لباقي اللغات.
     
    #21
    أعجب بهذه المشاركة كائن من الحضارة العليا
  22. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    Functions and Data
    الوظائف والبيانات


    في هذا الدرس سوف نأخذ لمحة عن الوظائف Functions والبيانات Data. وسأعرض خلال الدرس أمثلة على الوظائف المدمجة في الليسب Lisp. إن البيانات Data هي المعلومات Information مثل الأرقام Numbers, الأسماء Names و قوائم الأشياء Lists of things.

    لقد تعلمنا في الدروس السابقة بعض الوظائف Functions وهي الوظائف الحسابية Arithmetic Functions من جمع + وطرح - وضرب * و قسمة /. إن الوظائف Functions تعمل على البيانات. كيف؟ حسنا, لنعتبر أن الوظائف Functionsصناديق والبيانات Data تتدفق من تلك الصناديق.

    أي أن الوظائف Functions تقوم بمعالجة البيانات Data وتعطينا في النهاية قيم. مثلا 5 و 6 يعتبران بيانات Data و الضرب * يعتبر وظيفة Function وهي القيام بضرب الأثنين وإخراج النتيجة لنا وهي 30.

    يتبع...

    ملاحظة: سنكمل الأمثلة في الرد التالي رويدا كي يتسنى للأخرين اللحاق بالدروس والأستيعاب وأيضا المذاكرة.



     
    #22
    أعجب بهذه المشاركة كائن من الحضارة العليا
  23. kira

    kira عضو جديد

    المشاركات:
    24
    الإعجابات المتلقاة:
    13
    الصور لاتظهر
     
    #23
  24. lost|pages

    lost|pages مترجم محترف

    المشاركات:
    1,071
    الإعجابات المتلقاة:
    1,448
    تم التعديل, هل ظهرت لكم الصور الأن, أخبروني كي اتابع تحضير الدرس التالي
     
    #24
  25. كائن من الحضارة العليا

    المشاركات:
    1,170
    الإعجابات المتلقاة:
    1,164
    ظهرت :wink:
     
    #25
    أعجب بهذه المشاركة Miss Dracula