دارجة
مكتبة برمجة S-Lang هي مكتبة برمجية لأنظمة Unix و Windows و VMS و OS/2 و macOS . توفر هذه المكتبة إجراءات لتضمين مترجم للغة البرمجة النصية S-Lang ، ومكونات لتسهيل إنشاء تطبيقات نصية . [ 4 ] تشمل هذه المكونات إجراءات لإنشاء خرائط المفاتيح ومعالجتها، وميزة تحرير الأسطر التفاعلية، ووظائف إدارة الشاشة/الطرفية على المستويين الأدنى والأعلى. وهي برمجيات مجانية ومفتوحة المصدر، مُرخصة بموجب رخصة جنو العمومية العامة .
نبذة تاريخية
بدأ جون إي. ديفيس تطوير مكتبة برمجة S-Lang عام ١٩٩٢، انطلاقًا من اعتقاده بأنّ الدوال التي كتبها لمحرر نصوص قد تكون مفيدة في برامج أخرى. [ ٥ ] احتوت النسخة الأولى من المكتبة على إجراءات إدخال/إخراج للتفاعل مع محطات الحاسوب، بالإضافة إلى تطبيق لمترجم بسيط قائم على المكدس ذي بنية شبيهة بـ PostScript، والذي طوّره ديفيس لاستخدامه في برنامج رسم بياني علمي. وكان محرر النصوص JED أول برنامج يدمج المترجم ويستخدم مكونات الإدخال/الإخراج الطرفية للمكتبة.
مترجم
يشكل المفسر الجزء الأكبر من مكتبة S-Lang، وهو أيضًا المكان الذي تجري فيه معظم عمليات التطوير. على الرغم من أن الصيغة الأصلية التي يدعمها المفسر كانت تُشبه PostScript، فقد تطورت هذه الصيغة لتصبح أقرب إلى لغة C، مع دعم إضافي لبنى البرمجة كائنية التوجه . وانعكاسًا لخلفية ديفيس في الفيزياء واهتمامه المهني بالحوسبة العلمية، تدعم اللغة بشكل أصلي العديد من العمليات القائمة على المصفوفات المتجهة ، على غرار MATLAB و IDL . [ 6 ]
حتى الإصدار 2.0، لم يكن المفسر برنامجًا مستقلاً. بل دعا ديفيس إلى تضمينه في التطبيقات لجعلها قابلة للتوسيع. وكان استخدام المفسر يعني إما تضمينه في برنامج مكتوب بلغة C ، أو استخدامه ضمن سياق تطبيق آخر (مثل محرر JED ). أما واجهة سطر الأوامر S-Lang، slsh، فكانت برنامجًا تجريبيًا لا تتجاوز وظائفه تشغيل البرامج النصية. مع الإصدار 2.0، الذي صدر عام 2005، أصبح slsh تفاعليًا، وتطور ليصبح تطبيقًا قائمًا بذاته، مع عدد من الوحدات الخارجية لاستخدامها. وبذلك، أصبح يُعرف باسم مفسر S-Lang.
إدارة الشاشة
في منتصف التسعينيات، وأثناء نقل برنامج جدول البيانات sc إلى مكتبة S-Lang، طوّر ديفيس خاصية إدارة الشاشة في المكتبة. صُمم هذا المكون لتحسين مخرجات الشاشة (عن طريق تقليل عدد الأحرف المُرسلة إلى الطرفية)، وتوفير طريقة بسيطة لدعم مجموعة متنوعة من الطرفيات من خلال طبقة تجريد إضافية بين كود التطبيق والطرفية. كان قارئ الأخبار slrn أول تطبيق يستفيد استفادة كاملة من هذه الواجهة. ومنذ ذلك الحين، استفادت العديد من البرامج الأخرى (مثل Mutt [ 7 ] ) من هذه الميزة في المكتبة، وأصبحت بلا شك الجانب الأكثر استخدامًا فيها، حيث يُعتبر هذا المكون بديلاً لمكتبة curses . [ 8 ] [ 9 ] ومنذ الإصدار 2.0، أصبحت إجراءات إدارة الشاشة تدعم ترميز UTF-8 بشكل كامل .
مثال على كود المصدر
#! /usr/bin/env slsh % يحل البرنامج أدناه المشكلة التالية: % فرز ملف إدخال يتكون من أسطر كهذه % % var1=23 other=14 ditto=23 fred=2متغيرات خاصة Keys و Values ؛ تعريف دالة الفرز sort_fun ( i , j ) { متغيرات s و a و b ؛s = Values [ i ] - Values [ j ]; ! if ( s ) return strcmp ( Keys [ i ], Keys [ j ]); return s ; }define slsh_main () { variable line , len , i , vals ; foreach line ( stdin ) { % تقسيم السلسلة إلى مصفوفة من السلاسل % % باستخدام الأحرف البيضاء و = كفاصل % line = strtok ( line , " \t\n=" ); len = length ( line ) / 2 ; if ( len == 0 ) continue ;% العناصر الزوجية هي مفاتيح، والعناصر الفردية هي قيم % المصفوفة [0::2] تحتوي على فهارس، حيث يحدد الرقم 2 الخطوة % ويتم إنشاء الفهارس من 0 إلى طول السطر (line) Keys = line [[ 0 :: 2 ]]; vals = line [[ 1 :: 2 ]];% تم تعريف المتغير أعلاه Values = atoi ( vals );i = array_sort ([ 0 : len - 1 ], & sort_fun ); % هناك طرق مختلفة لكتابة النتيجة. إليك % طريقة سريعة تتجنب استخدام حلقة تكرار. % تشير الأقواس الفارغة () إلى تعريف المتغير وتحدد % أنه يجب تجاهل القيمة المُعادة. () = printf ( "%s\n" , strjoin ( Keys [ i ] + "=" + vals [ i ], " " )); } }انظر أيضاً
مراجع
- ↑ ديفيس، جون (26 نوفمبر 2017). "نبذة عني" . برمجيات جون إي. ديفيس . مؤرشف من الأصل في 1 يونيو 2020. تم الاطلاع عليه في 1 يونيو 2020 .
- ↑ "إصدارات العامية" .
- ↑ ديفيس، جون (4 مارس 2018). "معلومات ترخيص برنامج S-Lang" . برمجيات جون إي. ديفيس . مؤرشف من الأصل في 1 يونيو 2020. تم الاسترجاع في 31 مايو 2020 .
- ↑ كتاب لينكس المقدس، إصدار 2010: التمهيد إلى أوبونتو، فيدورا، كنوبيكس، ديبيان، أوبن سوزي، و13 توزيعة أخرى ، بقلم كريستوفر نيغوس، وايلي ، 2009، رقم ISBN 978-0-470-48505-7، ص 775
- ↑ "تاريخ موجز للغة S" . تم الاطلاع عليه في 6 يونيو 2017 .
- ↑ تحقيق أقصى استفادة من المعالج متعدد النوى: استغلال OpenMP من لغة برمجة نصية رقمية مفتوحة المصدر ، نوبل، ماجستير، التزامن والحوسبة: الممارسة والتجربة، المجلد 20، العدد 16، الصفحات 1877-1891، 2008، doi: 10.1002/cpe.1296
- ↑ "دليل تثبيت Mutt" . تم الاطلاع عليه بتاريخ 2015-10-04 .
- ↑ مكتبة مطوري MySQL ، بقلم بول دوبوا، بيرسون للتعليم، 2009، رقم ISBN 9780672329388القسم 6.1
- ↑Linux application development, by Michael K. Johnson and Erik W. Troan, Addison-Wesley, 2005, ISBN 9780321219145, p513
External links
- S-Lang Library Information Page, by John E. Davis
- S-Lang Releases
- S-Lang Documentation
- S-Lang
- Text user interface libraries
- Unix programming tools
