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

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

  • مهتم ولكن ليست من تخصصي

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

    الأصوات: 0 0.0%
  • قديمة وصعبة

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

    الأصوات: 0 0.0%
  • غير مرحب بها في سوق العمل

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

    الأصوات: 4 80.0%

  • مجموع المصوتين
    5

lost|pages

مترجم محترف
إنضم
7 فبراير 2015
المشاركات
1,285
الإعجابات
1,624
#76
الوظيفة 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
 

lost|pages

مترجم محترف
إنضم
7 فبراير 2015
المشاركات
1,285
الإعجابات
1,624
#77
الثوابت Constants

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

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


(defconstant PI 3.141592)

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

n.jpg
 

lost|pages

مترجم محترف
إنضم
7 فبراير 2015
المشاركات
1,285
الإعجابات
1,624
#78
Good Lisp Programming Style
الأسلوب البرمجي الجيد في لغة ليسب

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

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


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

 
الإعجابات: Rami

lost|pages

مترجم محترف
إنضم
7 فبراير 2015
المشاركات
1,285
الإعجابات
1,624
#79
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
 
الإعجابات: Rami

lost|pages

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

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


Screenshotfrom2016-11-2301-54-12.jpg
 
التعديل الأخير:
الإعجابات: Rami