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

الموضوع في '|||▮ 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,152
    الإعجابات المتلقاة:
    1,569
    الوظيفة prog

    لقد تعلمنا سابقا كيفية إنشاء متغيرات محلية بإستخدام الوظيفة Let, واليوم سنتعرف على وظيفة جديدة وهي prog. إن هذه الوظيفة مشابهة للوظيفة let حيث يمكننا من خلالها إنشاء متغيرات محلية.

    مثال:
    في المثال إستخدمنا الوظيفة prog وتحتوي على ثلاثة متغيرات محلية وهم x y z وكل متغير يحتوي على محتوى(قائمة list) بها ثلاثة عناصر. سنقوم هنا بطباعة المحتويات الخاصة بالمتغيرات بإستخدام دالة الطباعة format t, نرى علامة الأقتباس التي تعلمناها سابقا وهي تعني أن المحتوى سيطبع كما هو. أحب أن أذكركم بأن المتغيرات المحلية هي التي تكون داخل أقواس بداخل الدالة وليست بجانب الدالة مباشرة أي تكون في محتوى داخلي للدالة. أما إذا كانت بجانب الدالة ستكون متغيرات عامة.

    في جملة الطباعة قمنا بإستخدام موجه جديد وهو ~a, إختصار لكلمة arguments أي أن محتويات المتغيرات الثلاثة عبارة عن arguments أي عناصر أو محتويات. عند طباعة الجملة تحت ستقوم دالة الطباعة بإستبدال الموجه ~a بالقيم الخاصة بالمتغيرات الثلاثة. أي أن القيم هي قوائم بها محتويات.


    أي x = ~a
    ستكون
    x = (a b c)
    هكذا
    Screenshotfrom2016-11-1600-05-29.jpg
     
    #76
  2. lost|pages

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

    المشاركات:
    1,152
    الإعجابات المتلقاة:
    1,569
    الثوابت Constants

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

    مثلا عندما نقول PI = 3.14 هنا قيمة الباي تساوي 3.14 وكلنا يعلم قيمة الباي وهي ثابته في الرياضيات. إذا كيف نقوم بتثبيت القيمة للمتغير باي؟
    نقوم بإستخدام defconstant بالصيغة التالية:


    (defconstant PI 3.141592)

    نعم, هكذا قمنا بتعريف متغير إسمه PI نوعه ثابت لا تتغير قيمته أثناء سير عمل البرنامج.
    هيا بنا إلى الأمثلة:
    في هذا المثال, عرفنا متغير ثابت وأخر عام وهما PI و value بإسناد قيمة لكل منهما.
    وبعد ذلك قمنا بطباعة ناتج ضربها معا, وكما تلاحظون فقد إستخدمت الموجه ~a
    وقلنا إن هذا الموجه خاص بالـ arguments لأن ناتج الضرب داخل محتوى ونحن نريد
    ناتج هذا المحتوى وسيتم التعويض الناتج بدلا من الموجه كما في شاشة الأوامر.

    n.jpg
     
    #77
  3. lost|pages

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

    المشاركات:
    1,152
    الإعجابات المتلقاة:
    1,569
    Good Lisp Programming Style
    الأسلوب البرمجي الجيد في لغة ليسب

    images.jpeg
    ما هو الأسلوب الجيد؟ What is a good style
    إن الأسلوب الجيد في أي لغة برمجة يعطينا فهما جيدا للكود المكتوب وإعادة إستخدامه مرة أخرى، أيضا يكون سهل التطوير والتصحيح مع إعادة إستخدامه مرة اخرى وفعال بشكل ممتاز. وبهذه الميزات سنحصل على الدقة والمتانة والتوافق في ذلك. وهذا سيجعلنا نمشى على هذه القاعدة:

    كن دقيقا، كن واضحا, كن موجزا, كن متسقا، كن مفيدا للقراء، كن مألوفا وليس غامضا، بناء أكواد صالحة للأستعمال، السماح للأدوات بالتفاعل بشكل شفاف.


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

     
    #78
    أعجب بهذه المشاركة Rami
  4. lost|pages

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

    المشاركات:
    1,152
    الإعجابات المتلقاة:
    1,569
    Loops
    التكرار


    قد تفكر في حالة ما، تريد فيها تكرار كتلة block برمجية تحتوي على أرقام عدة مرات. في هذه الحالة سنستخدم جملة التكرار Loop Statement، التي تسمح لنا بتنفيذ مجموعة من البيانات والجمل التعبيرية عدة مرات. والرسم البياني التالي يبين لنا كما في لغات البرمجة الأخرى طريقة عمل الجمل التكرارية:

    Screenshotfrom2016-11-2202-32-33.jpg

    تحتوي لغة ليسب Lisp على عدة دوال ثابتة تختص في عملية التكرار وسنتعرف عليها واحدة واحده بشكل مفصل مع الشروحات والأمثلة وطريقة عملها. من هذه الدوال التكرارية عندنا الدالة loop و loopfor و do و dotimes
    و dolist

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

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

    التعبير النحوي للدالة التكرارية loop:
    Screenshotfrom2016-11-2203-27-12.jpg


    مثال عملي:
    1- عرفنا متغير وهو a يحمل القيمة 10.
    2 - هنا قمنا بإنشاء جملة تكرارية بإستخدام الكلمة التكرارية loop وتحتوي على التعبير البرمجي وبداخله نرى المتغير a يحتوي على قوسين بهما a +1, ويعني أن كل مرة ستقوم loop بزيادة المتغير بواحد في كل مرة تطبع فيها النتيجة.
    3 - طباعة المتغير a.
    4- هنا كلمة جديدة علينا وهي terpri أي أن هذه الدالة تقوم بجعل النتائج تحت بعضها بشكل مرتب. إحفظوها لأننا سنستخدمها كثيرا.
    5- هنا الجملة التعبيرية التالية سأشرحها بإسهاب، وتعني أن جملة التكرار loop ستقوم بطباعة قيمة المتغير a كل مرة وتزيد عليها بواحد هذا فوق، وهنا كلمة when شرطيه أي بشرط عندما يكون المتغير a يساوي 17 أعد لنا return المتغير a. كلمة return تعني العودة إلى المتغير في أخر حالة له وهي يساوي 17 أي أن أخر نتيجة للتكرار سيكون العدد 17.


    Screenshotfrom2016-11-2203-42-37.jpg
     
    #79
    أعجب بهذه المشاركة Rami
  5. lost|pages

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

    المشاركات:
    1,152
    الإعجابات المتلقاة:
    1,569
    مثال أخر:
    نفس المثال الذي فوق ولكن إستخدمنا الدالة setf بدلا من setq وهي تقريبا نفس الشي.
    البرنامج هنا سيقوم بطباعة الرقم 50 بشكل عكسي متكرر وكل مرة ينقص 5 إلى أن يقف عند الصفر. لو لاحظنا رقم 2 كلمة loop هي التكرار وكلمة when دالة الشرط التي تعلمناها سابقا.

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


    Screenshotfrom2016-11-2301-54-12.jpg
     
    #80
    آخر تعديل: ‏23 نوفمبر 2016
    أعجب بهذه المشاركة Rami