لغة البرمجة PC-LISP
PC-LISP هو تطبيق للغة فرانز ليسب من تطوير بيتر أشوود سميث. [ 1 ] [ 2 ] [ 3 ]
صدرت النسخة 2.07 في 1 فبراير 1986، [ 4 ] وصدرت النسخة 3.00 في 1 فبراير 1990. [ 1 ] تتوفر نسخة حديثة عبر GitHub. [ 2 ]
يعمل برنامج PC-LISP حاليًا على أنظمة لينكس وماك وويندوز بإصدارات 32 و64 بت ، [ 2 ] و NetBSD . [ 5 ] كما توجد نسخ منه لأنظمة AArch64 و ARMv5 / 6/7 و PowerPC و Motorola 68000 و SPARC / SPARC64 و Alpha و VAX . [ 5 ]
لاحظ أن لهجة Franz LISP كانت الخليفة المباشر والمحمول لإصدار ITS من Maclisp [ 6 ] وربما تكون أقرب شيء إلى LISP في كتاب ستيفن ليفي Hackers من الناحية العملية للتشغيل.
كُتبت لغة PC-LISP بشكل أساسي بلغة البرمجة C ، مع كتابة بعض أجزائها الآن بلغة Common Lisp أيضًا . [ 2 ] ولأن PC-LISP تُنفذ Franz LISP، فهي سلف ذو نطاق ديناميكي للغة Common Lisp الحديثة .
مثال
تُشغّل الجلسة الكود التالي الذي يُوضّح النطاق الديناميكي في لغة فرانز ليسب. تجدر الإشارة إلى أن لغة بي سي ليسب لا تُطبّق letالصيغة الخاصة التي تُوفّرها لغة إيماكس ليسب للمتغيرات المحلية. بدلاً من ذلك، تُعتبر جميع المتغيرات ما يُطلق عليه في لغات البرمجة المبنية على لغة ألغول "متغيرات عامة". كانت لغة سكيم أول لهجة من لغة ليسب تُدمج قواعد نطاق ألغول (المعروفة بالنطاق المعجمي )، على الرغم من أن لغة كومون ليسب أضافت هذه الميزة أيضاً.
عرض توضيحي للنطاق الديناميكي;; هذا متغير "عام" ( setq myglobal "هذا هو متغيري العام" )متغير عام آخر ( setq yourglobal "هذا هو متغيري العام" )دالة تقوم بطباعة الرموز ( defun dosomething ( mine yours ) ( princ " * Mine is - " ) ( princ mine ) ( princ "\n" ) ( princ " * Yours is - " ) ( princ yours ) ( princ "\n" ));; تجاوز الرموز ( defun nolocals () ( setq mine "لقد قمت بتعيين قيمة mine إلى قيمة جديدة" ) ( setq yours "لقد قمت بتعيين قيمة yours إلى قيمة جديدة" ) ( dosomething mine yours ))( defun main () ;; تعريف رمزين ( setq mine myglobal ) ( setq yours yourglobal ) ;; طباعتهما ( princ "استدعاء dosomething\n" ) ( dosomething mine yours ) ( princ "استدعاء nolocals\n" ) ( nolocals ) ( princ "استدعاء dosomething مرة أخرى\n" ) ( dosomething mine yours ))مثال آخر يوضح استخدام علامة الاقتباس الخلفية وقوة لغة ليسب. هذا مثال على التفاضل.
D(e,X) - ; سنحسب المشتقة الرمزية للتعبير e بالنسبة للمتغير X. نأخذ التعبير في صيغة البادئة القياسية للغة Lisp وسنستخدم قواعد التفاضل التالية. ; ; D(x) = 1 ; D(a) = 0 ; D( ln u) = D(u)/u ; D(u+v) = D (u)+D(v) ; D (uv) = D(u)-D(v) ; D(u*v) = D(u)*v + u*D(v) ; D(u/v) = D(u)*v + (u*D(v))/v^2 ; D(v^u) = (v^u)*(u*D(v)/v + D(u)*ln(v)) ; ( defun D ( e X &aux u v ) ( cond (( يساوي e X ) 1 ) (( atom e ) 0 ) ( t ( setq u ( cadr e ) v ( caddr e )) ( caseq ( car e ) ( ln ` ( / , ( D u X ) , u )) ( + ` ( + , ( D u X ) , ( D v X ))) ( - ` ( - , ( D u X ) , ( D v X ))) ( * ` ( + ( * , ( D u X ) , v ) ( * , ( D v X ) , u ))) ( / ` ( - ( / , ( D u X ) , v ) ( / ( * , u , ( D v X )) ( ^ , v 2 )))) ( ^ ` ( * , e ( + (/ ( * , v , ( D u X )) , u ) ( * , ( D v X ) ( ln , u ))))) ( t ( princ "ERROR" ) ( exit ) ]مراجع
- 1 2 أشوود-سميث، بيتر (1 فبراير 1990). "PC-LISP V3.00 (C) 1 فبراير 1990 بيتر أشوود-سميث" . جامعة كارنيجي ميلون - كلية علوم الحاسوب . تم الاطلاع عليه بتاريخ 14 نوفمبر 2024 .
- 1 2 3 4 "blakemcbride/PC-LISP" . 4 أغسطس 2020. تم الاسترجاع في 14 نوفمبر 2024 – عبر GitHub.
- ↑ أشوود-سميث، بيتر (مايو 1987). فان ديوسن، ماري س. (محررة). "PC-LISP" . مؤشرات لغة LISP . المجلد 1، العدد 1. الصفحات 51-52 . تاريخ الاسترجاع: 14 نوفمبر 2024 .
- ↑ أشوود-سميث، بيتر (20 فبراير 1986). "دليل مترجم لغة PC-LISP (الإصدار 2.07)" . جمعية تراث يونكس . تم الاطلاع عليه بتاريخ 14 نوفمبر 2024 .
- 1 2 "lang/pc-lisp - مجموعة حزم NetBSD" . NetBSD . تم الاسترجاع في 14 نوفمبر 2024 .
- ↑ فوديرارو، جون ك.؛ سكلوور، كيث ل.؛ لاير، كيفن (يونيو 1983). "فرانز ليسب". دليل فرانز ليسب (ملف PDF) . صفحة 5 – عبر جيت هاب.
روابط خارجية
- عائلة لغات البرمجة ليسب
- أدوات التطوير المتوقفة
