لغة نيو ليسب

لغة newLISP هي لغة برمجة نصية ، وهي لهجة من عائلة لغات البرمجة Lisp . صممها وطورها لوتز مولر. [ 2 ] نظرًا لمتطلباتها المنخفضة من الموارد، يمكن استخدام newLISP في تطبيقات الأنظمة المدمجة. تتضمن العديد من الوظائف المدمجة، بما في ذلك وظائف الشبكات، ودعم المعالجة الموزعة ومتعددة النوى، والإحصاءات البايزية. newLISP برنامج مجاني ومفتوح المصدر، مُرخص بموجب رخصة جنو العمومية العامة ، الإصدار 3 أو أحدث.

تاريخ

تأثر تصميم لغة newLISP بلهجتي لغة Lisp الرئيسيتين ، وهما Common Lisp و Scheme ، بالإضافة إلى لغات أخرى مثل Pascal و C. ظهرت newLISP لأول مرة عام 1991، وطُوّرت في الأصل على محطة عمل Sun-4 . [ 3 ] ثم انتقلت لاحقًا إلى نظام Windows 3.0 ، حيث صدرت النسخة 1.3 على CompuServe حوالي عام 1993، ثم أصبحت متاحة كتطبيق بواجهة مستخدم رسومية (GUI) لنظام Windows، وتطبيق سطر أوامر MS-DOS (كلاهما 16 بت ). وفي عام 1995، مع إصدار Windows 95 ، انتقلت newLISP إلى نظام 32 بت .

في أبريل 1999، نُقلت لغة البرمجة newLISP إلى نظام لينكس ؛ حيث أُعيدت كتابة بعض خوارزمياتها الأساسية ، وأُزيلت جميع التعليمات البرمجية الخاصة بنظام ويندوز. صدرت newLISP كمشروع برمجي مفتوح المصدر مرخص بموجب رخصة جنو العمومية (GPL) ، وتوقف تطويرها على نظام ويندوز بعد الإصدار 6.0.25. خلال النصف الأول من عام 2001، نُقلت newLISP مرة أخرى إلى نظام ويندوز على منصة Cygwin بدون إمكانيات رسومية. في النصف الثاني من عام 2001، صدرت واجهة أمامية متعددة المنصات Tcl / Tk باسم newLISP-tk في الإصدار 6.3.0 تقريبًا. في عام 2006، أُضيفت دقة 64 بت للعمليات الحسابية الصحيحة ولبعض العمليات على الملفات في الإصدار 9.0.

منذ إصدار النسخة 6.5 في منتصف عام 2002، كان التطوير نشطًا للغاية، وتمت إضافة العديد من الميزات الجديدة. [ 4 ]

19581960196519701975198019851990199520002005201020152020
 LISP 1، 1.5، LISP 2 (مهجورة)
 ماكليس
 تداخل
 MDL
 آلة التأتأة
 مخطط R5RS R6RS R7RS صغير
 لا شيء
 ZIL (لغة تنفيذ Zork)
 فرانز ليسب
 muLisp
 لغة الشفرة الشائعة معيار ANSI
 لي لِسْب
 مخطط معهد ماساتشوستس للتكنولوجيا
 XLISP
 تي
 شيز سكيم
 إيماكس ليسب
 أوتو ليسب
 PicoLi sp
 غامبيت
 EuLisp
 لغة ISLISP
 أوبن ليسب
 مخطط PLT مضرب
 لغة نيو ليسب
 جنو غايل
 لغة ليسب المرئية
 كلوجر
 قوس
 LFE
 هي

فلسفة

تسعى لغة البرمجة newLISP إلى توفير نسخة سريعة وقوية ومتعددة المنصات وكاملة الميزات من لغة Lisp، مع استخدام موارد نظام متواضعة فقط مثل مساحة تخزين البيانات (مثل مساحة القرص) والذاكرة . [ 5 ] [ 6 ]

توفر هذه اللغة ميزات لغة ليسب مثل القوائم، ومعالجة الرموز، وتعيين الدوال، والدوال المجهولة (تعبيرات لامدا)، وتعبيرات S (باستثناء القوائم غير الصحيحة)، ووحدات الماكرو. كما توفر الوظائف المتوقعة من لغة برمجة نصية حديثة، بما في ذلك دعم التعبيرات النمطية ، وXML ، وUnicode ( UTF-8 )، والشبكات عبر بروتوكول التحكم بالنقل (TCP)، وبروتوكول الإنترنت (IP)، وبروتوكول بيانات المستخدم (UDP)، ومعالجة المصفوفات ، والرياضيات المتقدمة، والإحصاء والتحليل الإحصائي البايزي ، والتمويل الرياضي ، والحوسبة الموزعة.

يعمل برنامج newLISP على أنظمة التشغيل Berkeley Software Distribution (BSD) و Linux و macOS و Solaris و Windows . [ 1 ] وهو يدعم الوصول إلى قواعد بيانات MySQL و SQLite و ODBC ، وواجهة البوابة العامة (CGI)، وبروتوكول نقل البريد البسيط (SMTP)، وبروتوكول مكتب البريد (POP3)، وبروتوكول نقل الملفات (FTP)، واستدعاء الإجراءات عن بُعد XML ( XML-RPC ). ويمكن تشغيله في وضع الخادم كخدمة ( daemon ).

خصائص اللغة

السياقات

تدعم لغة newLISP مساحات أسماء تُسمى السياقات ، والتي يمكن إسنادها إلى متغيرات وتمريرها إلى الدوال ، ولكنها مرتبطة برموز فريدة عالميًا، مما يحد من استخدامها كعناصر أساسية (كائنات). يُمكن في newLISP اتباع أسلوب برمجة كائنية التوجه قائم على النماذج الأولية ، باستخدام السياقات كنماذج أولية لإنشاء الكائنات . لا تتداخل المتغيرات داخل السياقات مع المتغيرات التي تحمل الاسم نفسه في سياقات أخرى، ولكن داخل السياق الواحد، تتصرف المتغيرات وفقًا لقواعد النطاق الديناميكي .

نطاق

تستخدم لغة newLISP النطاق الديناميكي . فعند استدعاء دالة، يمكنها رؤية جميع متغيرات الدالة المستدعِية، ومتغيرات الدالة المستدعِية، وهكذا، ضمن نفس السياق أو نطاق الأسماء . وهي تدعم المتغيرات الديناميكية المحلية المُعرَّفة صراحةً وضمنًا، والتي تُخفي المتغيرات التي تحمل نفس الاسم من البيئة الخارجية، مما يمنع استخدامها أو تغييرها عن طريق الخطأ من بيئة الدالة المستدعِية. كما تُخفي متغيرات المعاملات للدالة المستدعَية تلقائيًا متغيرات بيئة الدالة المستدعِية. وعلى مستوى اللغة، يمكن تجميع المتغيرات في نطاقات أسماء منفصلة. [ 7 ]

إدارة الذاكرة

تستخدم لغة newLISP طريقة لإدارة الذاكرة التلقائية تختلف عن أساليب جمع البيانات المهملة التقليدية ، وتُسمى إدارة الذاكرة ذات المرجع الواحد فقط (ORO). يُشار إلى كل متغير فقط من خلال سياقه، ويُشار إلى كل سياق بشكل عام.

لا يدعم newLISP مشاركة الكائنات الفرعية بين الكائنات ، أو البنى الدورية، أو المتغيرات المتعددة التي تشير إلى نفس الكائن. تُنسخ الكائنات عند تخزينها في هياكل البيانات أو تمريرها إلى الدوال، باستثناء بعض الدوال المدمجة. الاستثناءات هي الرموز والسياقات، التي تُشارك بدلاً من نسخها، وبالتالي يمكن استخدامها للتوجيه غير المباشر. تُسمى الرموز والسياقات بشكل عام وتُحذف صراحةً؛ يؤدي حذف رمز أو سياق إلى فحص جميع الكائنات الأخرى لاستبدال المراجع إليه nil.

خيارات واجهة المستخدم الرسومية

خادم واجهة المستخدم الرسومية (GUI) الخاص بـ newLISP (newLISP-GS) هو خادم بروتوكول الإنترنت (TCP/IP) قائم على لغة جافا ، يوفر واجهة برمجة رسومية. تتضمن توزيعات newLISP الثنائية بيئة تطوير قائمة على newLISP-GS، كما تتوفر واجهات برمجة قائمة على GTK-server و OpenGL و Tcl / Tk .

الملفات الثنائية المستقلة

أي إصدار جديد من لغة LISP يسمح بإنشاء ملفات تنفيذية وتطبيقات محمولة للنشر، وهي مكتفية ذاتيًا ولا تحتاج إلى تثبيت.

التفاعل مع المكتبات المشتركة

تحتوي لغة newLISP على وظيفة استيراد، والتي تسمح باستيراد الوظائف من مكتبة الارتباط الديناميكي (DLL) على واجهة برمجة تطبيقات Windows Win32، أو من مكتبة مشتركة على Linux أو Unix .

الأطر

تتضمن أطر عمل الويب المتاحة لـ newLISP كلاً من Dragonfly [ 8 ] و Rockets. [ 9 ]

مراجع

  1. 1 2 3 "newLISP" . تم الاسترجاع في 20 نوفمبر 2018 .
  2. والينغ، روب. "مقابلة مع لوتز مولر، مبتكر لغة نيو ليسب" . Softwarebyrob.com . مؤرشف من الأصل بتاريخ 31 أكتوبر 2007. تم الاطلاع عليه بتاريخ 20 نوفمبر 2018 .
  3. مولر، لوتز. "newLISP - لغة برمجة نصية LISP" . دون لوسيو . مؤرشف من الأصل بتاريخ 12 أبريل 2016. تم الاطلاع عليه بتاريخ 20 نوفمبر 2018 .
  4. كوباياشي، شيغيرو. "kosh04/newlisp" . جيت هاب . تم الاسترجاع في 20 نوفمبر 2018 .
  5. "التصنيف: newLISP" . Rosetta Code . تم الاسترجاع في 20 نوفمبر 2018 .
  6. لازار، ألكسندرو (5 يناير 2009). "نظرة على لغة نيو ليسب" . أو إس نيوز . تم الاسترجاع في 20 نوفمبر 2018 .
  7. براسويل، ناثان (22 مارس 2023). "تجميع عملي لـ fexprs باستخدام التقييم الجزئي. يمكن لـ fexprs أن تحل محل وحدات الماكرو بكفاءة عالية في لغة Lisp الوظيفية البحتة" .{{cite web}}: CS1 maint: url-status ( link )
  8. سليباك، جريج؛ هيلدمان، مارك. "إطار عمل الويب دراغون فلاي" . آب تراك . مؤرشف من الأصل بتاريخ 2016-03-03 . تم الاطلاع عليه بتاريخ 2018-11-20 .
  9. رايمر، جيريمي. "مدونة newLISP على Rockets 2.0" . رجل الصواريخ . تم الاسترجاع في 20 نوفمبر 2018 .