انطلق! (لغة برمجة)

لغة البرمجة Go! هي لغة برمجة قائمة على الوكلاء، وتندرج ضمن تقاليد لغات البرمجة المنطقية مثل Prolog . [ 1 ] وقد طُرحت في ورقة بحثية عام 2003 من قِبل فرانسيس مكابي وكيث كلارك . [ 2 ]

تصميم

يصف مؤلفو لغة Go! هذه اللغة بأنها " لغة برمجة متعددة الأنماط ، موجهة لتلبية احتياجات برمجة تطبيقات آمنة وعالية الجودة وقائمة على الوكلاء. وهي متعددة الخيوط ، ذات كتابة قوية، وذات ترتيب عالٍ (بمعنى البرمجة الوظيفية). تحتوي على تعريفات للعلاقات والدوال وإجراءات العمل. تقوم الخيوط بتنفيذ إجراءات العمل، واستدعاء الدوال، والاستعلام عن العلاقات حسب الحاجة. تتواصل الخيوط في وكلاء مختلفين وتنسق فيما بينها باستخدام رسائل غير متزامنة. كما يمكن للخيوط داخل الوكيل نفسه استخدام علاقات ديناميكية مشتركة تعمل كمخازن بيانات على نمط Linda ." [ 2 ]

ويقترح المؤلفون أيضاً أن اللغة مناسبة لتمثيل الأنطولوجيات نظراً لتكاملها بين أساليب البرمجة المنطقية والوظيفية والإجرائية . [ 3 ]

مثال

يوضح المثال التالي أسلوب النوع والتصريحات "الموجه نحو الأنطولوجيا" في لغة Go!: [ 3 ]

الجنس :: = ذكر | أنثىشخص <~ { يوم الميلاد: [] => اليوم . العمر : [] => عدد صحيح . الجنس : [] => الجنس . الاسم : [] => سلسلة . المنزل : [] => سلسلة . الأرواح : [ سلسلة ] {}}.person :[ string , day , Sex , string ] $ = person .شخص ( اسم العائلة ، تاريخ الميلاد ، الجنس ، الجنس البشري )..{ يوم الميلاد () => تاريخ الميلاد . العمر () => السنوات بين ( الآن ()، تاريخ الميلاد ). الجنس () => الجنس . الاسم () => اسم العائلة . المنزل () => الجنس البشري . يعيش ( الجنس ) :- الجنس البشري = المنزل (). السنوات بين: [ عدد صحيح ، يوم ] => عدد صحيح . السنوات بين (...) => .. }.newPerson: [ string , day , Sex , string ] => person .newPerson ( Nm , Born , Sx , Hm ) => $ person ( Nm , Born , Sx , Hm ).
  • تحدد القاعدة نوع بيانات جبرية::= جديد ، وهو نوع بيانات يحتوي فقط على مُنشئات البيانات.
  • تحدد القاعدة <~نوع الواجهة - فهي تشير إلى الخصائص المميزة لها، personكما تحدد قيود النوع على هذه الخصائص. وتوثق أن ageخاصية وظيفية ذات قيمة عددية صحيحة، وأن livesعلاقة أحادية على السلاسل النصية، وأن dayOfBirthخاصية وظيفية ذات قيمة كائن من النوع day.
  • تشير قاعدة $=النوع إلى وجود تسمية نظرية أيضًا، مع الدالة person، لنظرية تحدد الخصائص المميزة للنوع person- تنفذ personالواجهة - من حيث أربعة معلمات معينة من الأنواع string، day، Sex، و string.

تعارض مع جوجل

في نوفمبر 2009، أطلقت جوجل لغة برمجة تحمل اسمًا مشابهًا، وهو Go! (بدون علامة تعجب ). طلب ​​مكابي من جوجل تغيير اسم لغتهم، إذ كان قلقًا من "تفوقهم الساحق علينا". [ 1 ] [ 4 ] حظيت هذه المسألة باهتمام مواقع الأخبار التقنية، ووصف بعضها لغة Go! بأنها "غامضة". [ 5 ] أغلق أحد مطوري جوجل موضوع النقاش الذي فُتح حول هذه المسألة في 12 أكتوبر 2010، ومنحه الحالة "مؤسف"، مع التعليق التالي: "هناك العديد من منتجات وخدمات الحوسبة التي تحمل اسم Go!. خلال الأشهر الـ 11 التي تلت إطلاق لغتنا، كان الالتباس بين اللغتين ضئيلاً للغاية". [ 6 ]

مراجع

  1. 1 2 3 كلابورن، توماس (11-11-2009). "اسم جوجل 'Go' يثير اتهامات بـ'الشر'"" . InformationWeek . مؤرشف من الأصل بتاريخ 22-07-2010 . تم الاطلاع عليه بتاريخ 14-11-2009 .
  2. 1 2 كلارك، ك. ل.؛ مكابي، ف. ج. (2003). "انطلق! من أجل وكلاء تداوليين متعددي الخيوط". وقائع المؤتمر الدولي المشترك الثاني حول الوكلاء المستقلين وأنظمة الوكلاء المتعددين . ص 964-965 . CiteSeerX 10.1.1.117.184 . doi : 10.1145/860575.860747 . ISBN   978-1581136838. S2CID 2047545 . 
  3. 1 2 كلارك، ك. ل.؛ مكابي، ف. ج. (2006). "البرمجة الموجهة نحو الأنطولوجيا في لغة جو!". الذكاء التطبيقي . 24 (3): 189-204 . doi : 10.1007/s10489-006-8511-x .
  4. "العدد 9 - go - لقد استخدمتُ هذا الاسم بالفعل للغة البرمجة *الخاصة بي*" . 10-11-2009 . تم الاطلاع عليه بتاريخ 14-11-2009 .
  5. براونلي، جون (13 نوفمبر 2009). "لم تبحث جوجل عن كلمة "Go" قبل تسمية لغة البرمجة الخاصة بها" . Geek.com. مؤرشف من الأصل في 6 مايو 2012. تم الاطلاع عليه في 18 يناير 2010 .
  6. «لقد استخدمتُ هذا الاسم بالفعل للغة البرمجة *الخاصة بي*» · المشكلة رقم 9 · golang/go . GitHub . تم الاطلاع عليه بتاريخ 4 يوليو 2019 .

للمزيد من القراءة