لغة البرمجة CLU
CLU هي لغة برمجة قائمة على الفئات تم إنشاؤها في معهد ماساتشوستس للتكنولوجيا (MIT) بواسطة باربرا ليسكوف وطلابها بدءًا من عام 1973. [ 8 ] على الرغم من أنها لم تجد استخدامًا واسع النطاق، إلا أنها قدمت العديد من الميزات التي تستخدم على نطاق واسع الآن، وتعتبر خطوة في تطوير البرمجة الموجهة للكائنات (OOP).
تشمل المساهمات الرئيسية أنواع البيانات المجردة ، [ 9 ] وتقنية الاستدعاء بالمشاركة ، والمكررات ، وقيم الإرجاع المتعددة (وهي شكل من أشكال التعيين المتوازي )، والأنواع المُعاملة الآمنة من حيث النوع ، والأنواع المتغيرة الآمنة من حيث النوع . كما أنها تتميز باستخدامها للفئات ذات المُنشئات والأساليب، ولكن بدون وراثة .
مجموعة
استندت بنية لغة CLU إلى لغة ALGOL ، التي كانت آنذاك نقطة الانطلاق لمعظم تصميمات اللغات الجديدة. تمثلت الإضافة الرئيسية في مفهوم المجموعة (Cluster) ، وهو نظام توسيع الأنواع في CLU وجذر اسم اللغة (CLUster). [ 10 ] تتوافق المجموعات عمومًا مع مفهوم "الفئة" في لغة البرمجة الكائنية. على سبيل المثال، إليك بنية CLU لمجموعة تُنفذ الأعداد المركبة :
العدد المركب = المجموعة هي الجمع والطرح والضرب، ... rep = record [ real_part: real, imag_part: real ] add = proc ... end add; طرح = إجراء ... نهاية الطرح؛ الضرب = إجراء ... نهاية الضرب؛ ... نهاية العدد المركب؛ تُنفّذ المجموعة تجريدًا للبيانات، وهو عبارة عن مجموعة من الكائنات ومجموعة من العمليات الأساسية لإنشاء هذه الكائنات ومعالجتها. [ 11 ] : 1.3 تُقابل هذه المكونات العامة للفئة في لغات البرمجة الكائنية الحديثة. تُعرّف المجموعة أيضًا نوعًا يمكن تسميته خارج المجموعة (في هذه الحالة، "complex_number")، ولكن نوع تمثيله (rep) مخفي عن العملاء الخارجيين.
أسماء المجموعات عامة، ولم يتم توفير آلية مساحة اسم لتجميع المجموعات أو السماح بإنشائها "محليًا" داخل مجموعات أخرى.
في مجموعة البيانات، يتم تحويل الأنواع صراحةً بين النوع المجرد والتمثيل؛ أما التحويلات الضمنية بين هذه الأنواع فتُشار إليها باستخدام النوع الخاص cvt . لا تُجري لغة CLU تحويلات ضمنية للأنواع في غير ذلك . يوجد نوع عام any ، وإجراء force[] للتحقق من أن الكائن ينتمي إلى نوع معين. قد تكون الكائنات قابلة للتغيير أو غير قابلة للتغيير، وتكون الأخيرة من الأنواع الأساسية مثل الأعداد الصحيحة، والقيم المنطقية، والأحرف، والسلاسل النصية. [ 10 ]
ميزات أخرى
من السمات الرئيسية الأخرى لنظام أنواع CLU المُكرِّرات ، التي تُعيد الكائنات من مجموعة بشكل تسلسلي، واحدًا تلو الآخر. [ 10 ] توفر المُكرِّرات واجهة برمجة تطبيقات (API) متطابقة بغض النظر عن نوع البيانات المستخدمة معها. وبالتالي، complex_numberيمكن استخدام مُكرِّر مجموعة من s بشكل تبادلي مع مُكرِّر مصفوفة من integers. من السمات المميزة لمُكرِّرات CLU أنها تُنفَّذ كروتينات فرعية، حيث تُقدَّم كل قيمة إلى المُستدعي عبر عبارة yield . أصبحت المُكرِّرات المشابهة لتلك الموجودة في CLU سمة شائعة في العديد من اللغات الحديثة، مثل C# وRuby وPython، على الرغم من أنها تُعرف مؤخرًا باسم المُولِّدات.
تتضمن لغة CLU أيضًا معالجة الاستثناءات ، استنادًا إلى محاولات مختلفة في لغات أخرى؛ حيث تُثار الاستثناءات signalوتُعالج باستخدام ` except. على عكس معظم اللغات الأخرى التي توفر معالجة الاستثناءات، لا تُرسل الاستثناءات ضمنيًا إلى سلسلة الاستدعاء. كما تُعتبر الاستثناءات في CLU جزءًا من تدفق التنفيذ العادي، وتُعدّ طريقة "طبيعية" وفعّالة وآمنة من حيث النوع للخروج من الحلقات أو للعودة من الدوال؛ وهذا يسمح بالتعيين المباشر لقيم الإرجاع "إلا في حال" انطباق شروط أخرى. أما الاستثناءات التي لم تُلتقط أو تُرسل إشارة صريحة لها، فتُحوّل فورًا إلى استثناء فشل خاص يُنهي البرنامج عادةً.
غالباً ما يُنسب الفضل إلى لغة CLU باعتبارها أول لغة تحتوي على أنواع متغيرة آمنة من حيث النوع ، تسمى oneofs ، قبل أن تحتوي لغة ML عليها.
من السمات المميزة الأخيرة في لغة CLU خاصية التعيين المتوازي (التعيين المتعدد)، حيث يمكن أن يظهر أكثر من متغير على الجانب الأيسر من عامل التعيين . على سبيل المثال، كتابة `x = x - x ... - x = x - x = x - x - x = x - x - x = x - x - xx,y := y,xxyx,y,z := f(t)
جميع الكائنات في برنامج CLU موجودة في الكومة، وإدارة الذاكرة تتم تلقائيًا.
تدعم لغة CLU تجريدات البيانات المُعرَّفة من قِبل المستخدم والمُعَرَّفة بأنواع مُحدَّدة. وكانت أول لغة تُقدِّم أنواعًا مُعَرَّفة بأنواع مُحدَّدة وآمنة من حيث النوع، باستخدام عبارات where للتعبير عن قيود على وسائط النوع الفعلية. وعلى عكس اللغات التي تعتمد على القوالب العامة، يُمكن التحقق من نوع استخدام تجريد البيانات هذا دون الحاجة إلى الوصول إلى تنفيذه.
تأثير
كانت لغتا CLU و Ada مصدر إلهام رئيسي لقوالب C++ . [ 5 ]
أثرت آليات معالجة الاستثناءات في لغة CLU على لغات لاحقة مثل C++، [ 5 ] وجافا وغيرها الكثير. [ 13 ]
تتضمن لغات Sather و Python و C# المكررات ، والتي ظهرت لأول مرة في CLU. [ 8 ]
كانت لغتا بيرل ولوا تأخذان عمليات إسناد متعددة وإرجاعات متعددة من استدعاءات الدوال من CLU. [ 14 ]
تستخدم لغتا بايثون وروبي خاصية الاستعارة عن طريق المشاركة ، وعبارة yield ، [ 15 ] والتخصيص المتعدد. [ 16 ]
مراجع
- 1 2 كورتيس، دوروثي (2009-11-06). "الصفحة الرئيسية لـ CLU" . مجموعة منهجية البرمجة، مختبر علوم الحاسوب والذكاء الاصطناعي . معهد ماساتشوستس للتكنولوجيا . تم الاسترجاع في 2016-05-26 .
- 1 2 كورتيس، دوروثي (2009-11-06). "فهرس /pub/pclu" . مجموعة منهجية البرمجة، مختبر علوم الحاسوب والذكاء الاصطناعي . معهد ماساتشوستس للتكنولوجيا. مؤرشف من الأصل في 2021-06-21 . تم الاسترجاع في 2016-05-26 .
- ↑ "ملفات CLU، 1976-1989" . مجموعة أشرطة ساحة التكنولوجيا (ToTS)، MC-0741 . قسم المجموعات المميزة، معهد ماساتشوستس للتكنولوجيا. swh:1:dir:5dc935d1c236b15a99b0750cf236b2d89ec951d0 .
- ↑ أوشيجيما، تيتسو. "clu2c" . clu2c . woodsheep.jp . تم الاسترجاع 2016/05/26 .
- 1 2 3 ستروستروب، بيارن (1996). تاريخ لغة C++: 1979-1991 . نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 699-769 . doi : 10.1145/234286.1057836 . تاريخ الاسترجاع: 25 مارس 2022 .
- ↑ لوند، فريدريك. " استدعاء بواسطة الكائن" . effbot.org . مؤرشف من الأصل في 23 نوفمبر 2019. تم الاسترجاع في 21 نوفمبر 2017.
استبدل "CLU" بـ "Python"، و"record" بـ "instance"، و"procedure" بـ "function or method"، وستحصل على وصف دقيق لنموذج كائنات بايثون.
- ↑ لاتنر، كريس (2014-06-03). "الصفحة الرئيسية لكريس لاتنر" . كريس لاتنر . تم الاطلاع عليه بتاريخ 2014-06-03 .
لغة سويفت هي ثمرة جهد دؤوب من فريق من خبراء اللغة، ومختصي التوثيق، وخبراء تحسين أداء المترجمات، ومجموعة داخلية بالغة الأهمية قامت بتجربة اللغة داخليًا وقدمت ملاحظاتها للمساعدة في صقل الأفكار واختبارها عمليًا. وبالطبع، استفادت اللغة بشكل كبير من الخبرات المكتسبة بصعوبة من العديد من اللغات الأخرى في هذا المجال، مستمدةً أفكارها من لغات مثل أوبجكتيف-سي، وراست، وهاسكل، وروبي، وبايثون، وسي شارب، وسي إل يو، وغيرها الكثير.
- 1 2 ليسكوف، باربرا (1992). "تاريخ لغة CLU". المؤتمر الثاني لجمعية ACM SIGPLAN حول تاريخ لغات البرمجة.
- ↑ ليسكوف، باربرا ؛ زيلز، ستيفن (1974). "البرمجة باستخدام أنواع البيانات المجردة". وقائع ندوة ACM SIGPLAN حول لغات البرمجة عالية المستوى جدًا . الصفحات 50-59 . CiteSeerX 10.1.1.136.3043 . doi : 10.1145/800233.807045 .
- 1 2 3 ليسكوف، ب .؛ سنايدر، أ.؛ أتكينسون، ر.؛ شافرت، س. (أغسطس 1977). "آليات التجريد في لغة CLU". اتصالات ACM . 20 (8): 564-576 . CiteSeerX 10.1.1.112.656 . doi : 10.1145/359763.359789 . S2CID 17343380 .
- ^ ليسكوف، ب. أتكينسون، ر.؛ بلوم، T.؛ موس، إي. شافيرت، JC. شيفلر، ر. سنايدر، أ. (1981). الدليل المرجعي CLU . ملاحظات محاضرة في علوم الكمبيوتر. المجلد. 114. سبرينغر. دوى : 10.1007/BFb0035014 . رقم ISBN 9783540108368. S2CID 27382594 .
- ↑ بارون، د. و.؛ بوكستون، ج. ن.؛ هارتلي، د. ف.؛ نيكسون، إ.؛ ستراشي، س. (1963). "السمات الرئيسية للغة CPL" . مجلة الكمبيوتر . 6 (2): 134-143 . doi : 10.1093/comjnl/6.2.134 .
- ↑ ظهرت لغة CLU في وقتٍ واجه فيه مطورو البرمجيات تحدياتٍ متزايدة في إدارة التعقيد وضمان الموثوقية في الأنظمة الكبيرة. باربرا ليسكوف، مع فريقها في معهد ماساتشوستس للتكنولوجيا . شركة زاكترا تكنولوجيز . 2024-12-02 . تم الاطلاع عليه بتاريخ 2025-06-23 .
- ↑ إيروساليمسكي، ر.؛ دي فيغيريدو، ل.هـ.؛ سيليس، و. (2007). "تطور لغة لوا" (ملف PDF) . وقائع المؤتمر الثالث لجمعية ACM SIGPLAN حول تاريخ لغات البرمجة - HOPL III . الصفحات 2-1 - 2-26 . doi : 10.1145/1238844.1238846 . ISBN 978-1-59593-766-7تمت أرشفة الملف (PDF) من النسخة الأصلية بتاريخ 2010-07-03.
- ↑ "جذور روبي وقيادة ماتز" . هندسة تطبيقات المحفظة . 8 نوفمبر 2019. تاريخ الاسترجاع: 15 نوفمبر 2019.
يرى ماتز أن الكتل البرمجية هي أعظم ابتكارات روبي (وأنا أوافقه الرأي). استوحى الفكرة من لغة برمجة من سبعينيات القرن الماضي تُدعى CLU من معهد ماساتشوستس للتكنولوجيا، والتي كانت تُطلق عليها اسم "المكررات"...
- ↑ "دليل البرمجة الوظيفية - وثائق بايثون 3.8.3" . docs.python.org . تم الاطلاع عليه بتاريخ 25-05-2020 .
روابط خارجية
- الموقع الرسمي
- ليسكوف، باربرا (أبريل 1992). "تاريخ CLU" (ملف PDF) . MIT-LCS-TR-561. مؤرشف من الأصل (ملف PDF) بتاريخ 17-09-2003.
- clu2c : برنامج لتحويل كود CLU إلى لغة C
- قاموس لغات البرمجة
- مقارنة CLU في موقع تجريبي متعدد اللغات لخوارزمية "99 زجاجة بيرة"
- مقالات تتضمن أمثلة على كود CLU
- لغات البرمجة الأكاديمية
- لغات البرمجة القائمة على الفئات
- برنامج معهد ماساتشوستس للتكنولوجيا
- لغات البرمجة الإجرائية
- لغات البرمجة التي تم إنشاؤها عام 1975
- لغات البرمجة التي ابتكرتها النساء
