جذور ليسب
مايو 2001
(كتبت هذه المقالة لمساعدتي في فهم ما اكتشفه مكارثي بالضبط. لست بحاجة لمعرفة هذه الأمور للبرمجة بلغة ليسب، ولكنها ستكون مفيدة لأي شخص يريد فهم جوهر ليسب - سواء من حيث أصولها أو جوهرها الدلالي. حقيقة أن لديها مثل هذا الجوهر هي إحدى السمات المميزة لليسب، والسبب في أنها، على عكس اللغات الأخرى، لديها لهجات.)
في عام 1960، نشر جون مكارثي ورقة بحثية رائعة فعل فيها للبرمجة شيئًا يشبه ما فعله إقليدس للهندسة. لقد أظهر كيف، بالنظر إلى حفنة من العوامل البسيطة وتدوين للدوال، يمكنك بناء لغة برمجة كاملة. أطلق على هذه اللغة اسم ليسب، اختصارًا لـ "معالجة القوائم" (List Processing)، لأن إحدى أفكاره الرئيسية كانت استخدام بنية بيانات بسيطة تسمى القائمة لكل من الكود والبيانات.
من الجدير فهم ما اكتشفه مكارثي، ليس فقط كمعلم في تاريخ أجهزة الكمبيوتر، ولكن كنموذج لما تتجه إليه البرمجة في عصرنا. يبدو لي أن هناك نموذجين نظيفين ومتسقين حقًا للبرمجة حتى الآن: نموذج C ونموذج ليسب. هذان يبدوان كنقاط مرتفعة، مع مستنقعات منخفضة بينهما. مع نمو قوة أجهزة الكمبيوتر، كانت اللغات الجديدة التي يتم تطويرها تتحرك بثبات نحو نموذج ليسب. وصفة شائعة للغات البرمجة الجديدة في العشرين عامًا الماضية كانت أخذ نموذج C للحوسبة وإضافة أجزاء إليه، بشكل تدريجي، مأخوذة من نموذج ليسب، مثل الكتابة في وقت التشغيل وجمع القمامة.
في هذه المقالة، سأحاول شرح ما اكتشفه مكارثي بأبسط المصطلحات الممكنة. الهدف ليس فقط التعرف على نتيجة نظرية مثيرة للاهتمام توصل إليها شخص ما قبل أربعين عامًا، بل إظهار إلى أين تتجه اللغات. الشيء غير العادي في ليسب - في الواقع، الصفة المميزة لليسب - هو أنه يمكن كتابته بنفسه. لفهم ما قصده مكارثي بهذا، سنعيد تتبع خطواته، مع ترجمة تدوينه الرياضي إلى كود Common Lisp قيد التشغيل.