curses (مكتبة برمجة)
curses هي مكتبة تحكم طرفية لأنظمة شبيهة بنظام Unix ، مما يتيح إنشاء تطبيقات واجهة المستخدم النصية (TUI).
الاسم تورية على مصطلح " تحسين المؤشر ". وهي مكتبة من الدوال التي تدير عرض التطبيق على أجهزة طرفية ذات خلايا نصية (مثل VT100 ). [ 2 ]
ncurses هو البديل المعتمد لـ curses الكلاسيكية في نظام 4.4BSD .
ملخص
باستخدام مكتبة curses، يستطيع المبرمجون كتابة تطبيقات نصية دون الحاجة إلى كتابة التعليمات البرمجية مباشرةً لنوع طرفية محدد. تُرسل مكتبة curses على النظام المُشغِّل أحرف التحكم المناسبة بناءً على نوع الطرفية. توفر المكتبة تجريدًا لنافذة واحدة أو أكثر تُطابق شاشة الطرفية. تُمثَّل كل نافذة بمصفوفة أحرف. يُحدد المبرمج المظهر المطلوب لكل نافذة، ثم يُخبر حزمة curses بتحديث الشاشة. تُحدد المكتبة الحد الأدنى من التغييرات اللازمة لتحديث العرض، ثم تُنفذها باستخدام إمكانيات الطرفية وتسلسلات التحكم الخاصة بها.
باختصار، هذا يعني أن المبرمج يقوم بإنشاء مصفوفة أحرف لكيفية ظهور الشاشة ويترك لـ curses مهمة القيام بذلك.
تم وصف واجهة برمجة تطبيقات curses في عدة مصادر. [ 3 ] تستخدم معظم تطبيقات curses قاعدة بيانات قادرة على وصف إمكانيات آلاف المحطات الطرفية المختلفة. وهناك بعض التطبيقات، مثل PDCurses، التي تستخدم برامج تشغيل أجهزة متخصصة بدلاً من قاعدة بيانات المحطات الطرفية. تستخدم معظم التطبيقات terminfo ، بينما يستخدم بعضها termcap . تتميز curses بسهولة نقلها إلى المحطات الطرفية ذات الخلايا النصية وبساطتها. بالنسبة للتطبيقات التي لا تتطلب رسومات نقطية أو خطوطًا متعددة، يكون تطبيق واجهة باستخدام curses عادةً أبسط وأسرع بكثير من تطبيق يستخدم مجموعة أدوات X.
تاريخ
كتب كين أرنولد أول مكتبة curses ، وأصدرها في الأصل مع نظام BSD UNIX، حيث استُخدمت في العديد من الألعاب، أبرزها لعبة Rogue . [ 4 ] [ 5 ] [ 6 ] أُدخلت بعض التحسينات على مكتبة BSD في التسعينيات تحت مسمى curses "4.4BSD"، مثل توفير أكثر من نوع واحد من تمييز الفيديو. مع ذلك، لا تُستخدم هذه التحسينات على نطاق واسع.
اسم "curses" هو تورية على تحسين المؤشر . [ 7 ] يُذكر أحيانًا خطأً أن محرر vi كان يستخدم curses ؛ في الواقع، تم استعارة الكود الموجود في curses والذي يُحسّن حركة المؤشر من vi، الذي سبق curses. [ 5 ]
بحسب غودهارت، بدأ كين أرنولد تطبيق curses الأصلي بإعادة استخدام وظائف من مكتبة termcap ، مع إضافة بعض التحسينات عليها. [ 8 ] بعد بضع سنوات، انتقلت ماري آن هورتون ، التي كانت تتولى صيانة مصادر vi و termcap في بيركلي ، إلى شركة AT&T وأصدرت نسخة مختلفة باستخدام terminfo ، والتي أصبحت جزءًا من نظامي UNIX System III و UNIX System V. ونظرًا لقيود الترخيص المفروضة على النظام الأخير، طُوّرت نسختا BSD وAT&T من المكتبة بشكل مستقل. بالإضافة إلى تحسين termcap/terminfo، أُدخلت تحسينات أخرى على نسخة AT&T:
- تمييز الفيديو (غامق، مسطر)
- يدعم إصدار BSD فقط ميزة "standout" .
- رسم خطي
- لم يقدم إصدار BSD دعماً يُذكر هنا.
- الألوان
- لم يكن هذا مدعومًا في إصدار BSD.
يبدو أن تطوير مكتبة curses الخاصة بشركة AT&T قد توقف في منتصف التسعينيات عند تعريف مكتبة X/Open Curses. [ 9 ] في عام 1995، قام كيث بوستيك ، المسؤول عن صيانة نظام BSD ، بإلغاء دعم مكتبة curses رسميًا لصالح مكتبة ncurses . [ 10 ] يستمر تطوير مكتبتي ncurses وPDCurses. ولا تزال نسخة من مكتبة curses الخاصة بنظام BSD مدعومة في نظام التشغيل NetBSD (دعم الأحرف العريضة، والتحويل من termcap إلى terminfo، إلخ).
دورات الكمبيوتر ودورات PDC
بدأت مسارات تطوير مختلفة بتقليد لعنات AT&T، من خلال ثلاثة تطبيقات على الأقل: pcurses من بافيل كورتيس (بدأ عام 1982)، وPDCurses (لعنات الملكية العامة) من مارك هيسلينج لدعم محرره THE (بدأ عام 1987)، بالإضافة إلى Rexx /Curses، [ 11 ] و PC curses (الإصدار 1.4 وما قبله من بيورن لارسون، والمستوحى من مكتبة بافيل كورتيس قبل عام 1990). [ 12 ] [ 13 ]
ncurses
نشأت مكتبة ncurses (اللعنات الجديدة) من اسم pcurses ، وأُعيد إصدارها باسم ncurses 1.8.1 في أواخر عام 1993. [ 14 ] تُعدّ ncurses أشهر تطبيقات curses، وقد حفّزت تطوير نسخ أخرى منها، مثل لعنات BSD في مشروع NetBSD . [ 15 ] [ 16 ]
سهولة الحمل
على الرغم من أن مكتبة ncurses طُوّرت في البداية لأنظمة Linux وOpenBSD وFreeBSD وNetBSD، فقد نُقلت إلى العديد من أنظمة ANSI/POSIX UNIX الأخرى، وذلك بشكل رئيسي بواسطة توماس ديكي. أما مكتبة PDCurses، فرغم أنها ليست مطابقة تمامًا لـ ncurses، إلا أنها تستخدم نفس استدعاءات الدوال وتعمل بنفس الطريقة، باستثناء أن PDCurses تستهدف أجهزة مختلفة، مثل نوافذ سطر الأوامر لأنظمة DOS و Win32 و OS/2 ، بالإضافة إلى X11 . ولا يُعدّ النقل بين المكتبتين أمرًا صعبًا. فعلى سبيل المثال، كُتبت لعبة ADOM، وهي لعبة من نوع روغلايك ، لنظام Linux باستخدام مكتبة ncurses، ثم نُقلت لاحقًا إلى نظام DOS باستخدام مكتبة PDCurses. [ 17 ] [ 18 ]
لقطات الشاشة
التطبيقات
صُممت مكتبة Curses لتسهيل وظائف واجهة المستخدم الرسومية على الأجهزة النصية فقط، مثل أجهزة الكمبيوتر التي تعمل في وضع سطر الأوامر، أو أجهزة طرفية ANSI، أو عملاء Telnet أو SSH ، أو ما شابه ذلك. البرامج المبنية على Curses هي برامج تُنفذ واجهة المستخدم الخاصة بها من خلال مكتبة curses، أو مكتبة متوافقة (مثل ncurses ).
غالبًا ما تتميز البرامج المبنية على لغة Curses بواجهة مستخدم تُشبه واجهة المستخدم الرسومية التقليدية، بما في ذلك عناصر واجهة المستخدم مثل مربعات النصوص والقوائم القابلة للتمرير، بدلاً من واجهة سطر الأوامر (CLI) الشائعة في الأجهزة النصية فقط. وهذا ما يجعلها أكثر سهولة في الاستخدام من البرامج التي تعمل بواجهة سطر الأوامر، مع إمكانية تشغيلها على الأجهزة النصية فقط. كما تتميز البرامج المبنية على Curses باستهلاك أقل للموارد، وتعمل على نطاق أوسع من الأنظمة (من حيث الأجهزة والبرامج) مقارنةً بنظيراتها المبنية على واجهة المستخدم الرسومية. ويشمل ذلك الأجهزة القديمة التي تعود لما قبل عام 1990، بالإضافة إلى الأنظمة المدمجة الحديثة التي تستخدم شاشات عرض نصية فقط.
ترتبط Curses في الغالب بأنظمة التشغيل الشبيهة بنظام Unix ، على الرغم من وجود تطبيقات لنظام Microsoft Windows أيضًا.
انظر أيضاً
- conio – فكرة مماثلة، ل DOS
- لغة S-Lang – لغة مُفسَّرة ذات بعض السمات ذات الصلة
- SMG$ – فكرة مماثلة، لنظام التشغيل OpenVMS
- نيوت - مكتبة واجهة مستخدم نصية مشابهة تعتمد على مكتبة اللغة العامية
مراجع
- ↑ كرادوك، ديفيد ل. (17 يونيو 2016). "أبراج الموت الإجرائية: صناعة لعبة روغ - الفصل 3" . تم الاطلاع عليه في 18 مايو 2023 .
- ↑ ديكي، توماس إي. "NCURSES - الأسئلة المتكررة" .
- ↑ سترانج، جون. البرمجة باستخدام اللعنات . أورايلي. ISBN 0-937175-02-1.
- ↑ سالوس، بيتر هـ. (أكتوبر 1994). "إن تاريخ يونكس يتعلق بالتعاون بقدر ما يتعلق بالتكنولوجيا" . بايت.
- 1 2 أرنولد، كي سي آر سي (1977). تحديث الشاشة وتحسين حركة المؤشر: حزمة مكتبة . جامعة كاليفورنيا، بيركلي.
- ↑ أرنولد، كينيث سي آر سي؛ أمير، إيلان (ديسمبر 1992). "تحديث الشاشة وتحسين حركة المؤشر: حزمة مكتبة" .
- ↑ ديكي، توماس إي. "NCURSES - الأسئلة المتكررة" .
- ↑ جودهارت، بيرني (1991). شرح لعنات يونكس . برنتيس هول. ص. 11. ISBN 0-13-931957-3.
- ↑ "X/Open Curses، العدد 4 الإصدار 2، صفحات المراجع" . مجموعة Open Group. 1997.
- ↑ ريموند، إريك س. (1 سبتمبر 1995). "ncurses: معالجة شاشة محمولة لنظام لينكس" . مجلة لينكس . تم الاطلاع عليه في 18 مايو 2023 .
- ↑ هيسلينج، مارك (2008). "Rexx/Curses" . مشروع ريكس كورسز على موقع سورس فورج . تم الاطلاع عليه بتاريخ 10 فبراير 2014 .
- ↑ إيلرمان، ف. (26-07-1993). "CURSES.NEW في pccurses.zip" . تم الاسترجاع في 10-02-2014 .
مبني على PC curses (الإصدار 1.4) من تأليف بيورن لارسون
- ↑ لارسون، بيورن (14 يناير 1990). "README.NOW في pccurs14.zip" . مؤرشف من الأصل في 23 فبراير 2014. تم الاطلاع عليه في 10 فبراير 2014.
PCcurses هو نسخة معدلة/مُعاد كتابتها من حزمة بافيل كورتيس.
- ↑ ديكي، توماس إي. (ديسمبر 1996). "NCURSES - لعنات جديدة" .
- ↑ مشروع NetBSD (فبراير 2004). "CURSES_SCREEN(3)، دليل وظائف مكتبة NetBSD" .
- ↑ كيو، رويبياو (سبتمبر 2005). "NetBSD-SoC: دعم الأحرف العريضة في مكتبة لعنات NetBSD" .
- ↑ بيسكوب، توماس (1994-2007). "أدوم - الماضي" . مؤرشف من الأصل بتاريخ 10-10-2007 . تم الاطلاع عليه بتاريخ 16-11-2007 .
- ↑ بيسكوب، توماس (15 مارس 1996). "لعبة جديدة: ADOM (لأنظمة MS-DOS وMS-Windows وLinux فقط)" . مجموعة الأخبار : rec.games.roguelike.announce . تاريخ الاسترجاع: 16 نوفمبر 2007 .
روابط خارجية
- NCURSEs - صفحات الدليل
- شرح اللعنات مؤرشف بتاريخ 28-05-2005 على موقع Wayback Machine ( بصيغة PDF )
- لعنات المجال العام
- واجهة لمبرمجي Rexx
- مجموعة أدوات Tcl
- X/Open Curses
- لعنات بايثون
- الصفحة الرئيسية لدليل استخدام NetBSD Curses، مؤرشفة بتاريخ 8 أغسطس 2014 على موقع Wayback Machine.
- X/Open Curses، العدد 4، الإصدار 2 ، 1996، opengroup.org
- X/Open Curses، العدد 7 ، 2009، opengroup.org
- Curses (مكتبة برمجة)
- معلومات المصطلحات
- برامج يونكس
