🏆 💪 أكثر الكتب تحميلاً في لغة ليسب:
A Gentle Introduction to Symbolic Computation
قراءة و تحميل كتاب A Gentle Introduction to Symbolic Computation PDF مجانا
لغة ليسب
ليسب (بالإنجليزية: LISP أو Lisp) هي لغة برمجة ذات تاريخ عريق، فقد تم وضع مواصفاتها عام 1958 وبذلك تحل بعد الفورتران التي طورت قبلها بسنة، كثاني لغة برمجة عالية المستوى.
وضعت ليسب كلغة ترميز رياضية عملية وفق تعريف تفاضل لامبدا وتكاملها لألونزو تشرش Alonzo Church's Lambda Calculus، لكنه سرعان ما فضل استخدامها في أبحاث الذكاء الاصطناعي، وبتصدرها كإحدى أقدم اللغات، قدمت ليسب مبادئ عديدة في علوم الحاسب كبنى البيانات الشجرية Tree Data Structures والبرمجة كائنية التوجه.
تشير ليسب إلى المصطلح LISt Processing language، القوائم المتصلة (بالإنجليزية: Linked Lists)إحدى بنى البيانات الأساسية للغة، بل إن كود المصدر للغة مكون من قوائم، وكنتيجة لذلك، تعامل برامج ليسب كود المصدر كبنية بيانات Data Structure ما يعطي شأنا لنظام الماكرو Macro الذي يسمح للمبرمجين بإنشاء صيغ جديدة أو لغة مدمجة مختصة المجال في ليسب Domain-specific Programming Language.
التبادل بين الكود والبيانات يعطي للغة ليسب صيغة تعرف فورية Instantly Recognizable Syntax، فبرامج ليسب مكتوبة بشكل التعبير الرمزي S-expression (ترمز S إلى Symbol) أو كقوائم محاطة بأقواس، فعند استدعاء دالة Function "f" لها الوسائط Arguments x وy وz، تكتب تلك الدالة كالتالي:
(f x y z)
تاريخ ليسب
قام باختراع ليسب الأمريكي جون مككارثي عام 1958 في معهد ماساتشوستس للتقنية. مككارثي نشر تصميمه على الورق في مجلة Communications of the ACM بعنوان "الدوال المتعددة للتعابير الرمزية وحسابها بالآلة "الجزء الأول" Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I (علما أنه لم ينشر الجزء الثاني مطلقا)، أظهر أنه بواسطة بعض المعاملات البسيطة وإجراء ترميز للدوال، يمكن بناء لغة تطابق فكرة الشمولية لتورنغ لكن من أجل الخوارزميات.
أول من قام بتنفيذ هذا التصميم كان ستيف راسل على جهاز IBM 704، بينما ظهر أول مترجم مترجم ليسب كامل كان على يدي تيم هارت Tim Hart ومايك ليفن Mike Levin في معهد ماساتشوستس للتقنية عام 1962، اللغة التي قاما ببنائها أقرب للغة المنتشرة حاليا من التي صممها مككارثي.
بعض إصدارات ليسب
LISP 1.5.
Standard LISP.
Common LISP: إحدى الإصدارات الأكثر انتشارا.
Scheme: إحدى الإصدارات الأكثر انتشارا، من تطوير غاي إل. ستيل وجيرالد جاي سسمان.
Arc.
Clojure.
Autolisp: إصدارة ليسب المستخدمة في برنامج AutoCAD.
الصيغة والمفردات في ليسب
تعد لغة ليسب لغة تعبيرية التوجه Expression-oriented Language. وبخلاف أغلب اللغات، لا فارق بين التعبيرات Expressions والجمل Statements، فالكود يكتب جميعه كتعبيرات.
لعل ما يميز صيغة كود ليسب الأقواس المستخدمة في الإحاطة بين التعبيرات، وقد سبق ذكر المصطلح S-expression الذي يعطي لصيغة ليسب استخدام الرموز.
قائمة ليسب LISP List تكتب بين قوسين بداخلهما تسرد العناصر مفصولة بمسافة بيضاء، مثلا:
(1 2 foo)
هذه قائمة بها عناصر تسمى ذرات Atoms، وهي العددين 1 و2 وfoo، العنصر foo نوع من البيانات في ليسب يدعى "رمز Symbol"، يتم التعرف على نوع العنصر دون الحاجة للإعلان عنه. القائمة الخالية () تعتبر ذرة خاصة nil حيث يمكن اعتبارها ذرة إضافة لكونها قائمة.
قد تدخل القوائم كعناصر داخل قائمة ما، مثلا:
((1 2 (3 4)))
القائمة السابقة مكونة من عددين وقائمة بها عددين.
التعبيرات في ليسب تكتب كقوائم باستخدام صيغة الرموز أولا Prefix Notation، العنصر الأول هو اسم النموذج Form (مثلا: دالة Function، معامل حسابي Operator، ماكرو Macro، أو معامل خاص Special Operator وسيأتي شرحه)، بينما بقية العناصر تعد وسائط Arguments. على سبيل المثال، الدالة list تعيد وسائطها كقائمة، والتعبير التالي:
(list '1 '2 'foo)
يمثل هذه القائمة (1 2 foo). علامات التنصيص التي تسبق الوسائط تعد إحدى المعاملات الخاصة Special Operators، تمنع علامات التنصيص الوسائط من إجراء الحساب عليها (ليس ذلك ضروريا مع الأعداد طالما أن العدد 1 هو 1 على سبيل المثال)، بينما الوسائط التي تخلو من تلك المعاملات فيتم تنفيذها بشكل دوري Recursively قبل الانتهاء من التعبير، المثال التالي:
(list 1 2 (list 3 4))
يمثل هذه القائمة (1 2 (3 4))، لاحظ أن الوسيط الثالث هو قائمة، فالقوائم يمكن أن تتداخل كما سبق ذكره.
وبالمثل تعامل المعاملات الحسابية، ففي التعبير التالي:
(+ 1 2 3 4)
سيتم حساب القائمة وإعادة الناتج 10. يمكن توضيح المعادلة نفسها بصيغة "الرموز بالداخل Infix Notation" فتكون "1+2+3+4". المعاملات الحسابية في ليسب من نوع n-ary أي قابلة لاستقبال أي عدد n من الوسائط.
📚 عرض جميع كتب لغة ليسب:
A Gentle Introduction to Symbolic Computation
قراءة و تحميل كتاب A Gentle Introduction to Symbolic Computation PDF مجانا