لغة البرمجة Io
Io هي لغة برمجة كائنية التوجه خالصة، مستوحاة من لغات Smalltalk و Self و Lua و Lisp و Act1 و NewtonScript . [ 2 ] تعتمد Io نموذج كائنات قائم على النماذج الأولية، مشابهًا لنموذجي Self وNewtonScript، مما يلغي التمييز بين الكائن والفئة . وكما في Smalltalk، كل شيء فيها كائن، وتستخدم الكتابة الديناميكية . وكما في Lisp، فإن البرامج عبارة عن أشجار بيانات. وتستخدم Io الممثلين (Actors) لتحقيق التزامن .
من أبرز ميزات Io صغر حجمها وانفتاحها على استخدام موارد برمجية خارجية. [ 3 ] يتم تشغيل Io بواسطة آلة افتراضية صغيرة محمولة .
تاريخ
ابتكر ستيف ديكورت هذه اللغة عام 2002، بعد محاولته مساعدة صديقه درو نيلسون في لغته "سيل". أدرك ديكورت أنه لا يملك معرفة كافية بكيفية عمل اللغات، فقرر كتابة لغة صغيرة لفهم المشكلات بشكل أفضل. [ 4 ]
فلسفة
يهدف Io إلى استكشاف التوحيد المفاهيمي واللغات الديناميكية ، لذا فإن المقايضات تميل إلى تفضيل البساطة والمرونة على الأداء.
سمات
- برمجة كائنية التوجه خالصة تعتمد على النماذج الأولية
- الكود كبيانات، متماثل الأضلاع
- التقييم الكسول لمعاملات الدالة
- الدوال ذات الرتبة العليا
- الاستبطان والتأمل والبرمجة الفوقية
- التزامن القائم على الممثل
- الروتينات الفرعية
- معالجة الاستثناءات
- جمع البيانات المهملة التدريجي لدعم الروابط الضعيفة
- سهولة الحمل
- مكتبة مشتركة ، مكتبة ارتباط ديناميكي (DLL)، تحميل ديناميكي على معظم المنصات
- آلة افتراضية صغيرة
بناء الجملة
في أبسط صورها، تتكون صيغة Io من مُعرّف واحد: [ 5 ]
doStuffبافتراض أن doStuff أعلاه عبارة عن طريقة ، يتم استدعاؤها بدون وسائط، ونتيجة لذلك، لا يلزم استخدام الأقواس الصريحة.
لو كان للدالة doStuff وسائط، لكانت ستبدو كالتالي:
doStuff ( 42 )لغة Io هي لغة لتبادل الرسائل ، وبما أن كل شيء فيها عبارة عن رسالة (باستثناء التعليقات )، فإن كل رسالة تُرسل إلى مُستقبِل. يُوضّح المثال السابق هذا الأمر جيدًا، ولكنه ليس كاملًا. لتوضيح هذه النقطة بشكل أفضل، دعونا ننظر إلى المثال التالي:
إصدار النظاميوضح المثال أعلاه تمرير الرسائل في Io؛ يتم إرسال رسالة "version" إلى كائن "System".
تُعدّ المعاملات حالةً خاصةً لا يكون تركيبها النحوي واضحًا ومباشرًا كما في الأمثلة السابقة. يقوم محلل Io باعتراض مجموعة من المعاملات المُعرّفة بواسطة المُفسّر، ويُترجمها إلى استدعاءات دوال. على سبيل المثال، ما يلي:
1 + 5 * 8 + 1يُترجم إلى:
1 + ( 5 * ( 8 )) + ( 1 )جميع المعاملات في Io عبارة عن دوال؛ وعدم حاجتها إلى أقواس صريحة يُعدّ ميزة. وكما تلاحظ، يوجد هنا أيضًا قدرٌ من أسبقية المعاملات ، ومستويات الأسبقية هي نفسها في لغة C.
الأساليب والكتل
في Io، توجد طريقتان لإنشاء الدوال المجهولة : الطرق والكتل. وهما متطابقتان تقريبًا باستثناء النطاق . فبينما تتمتع الكتل بنطاق معجمي ، تتمتع الطرق بنطاق ديناميكي .
كل من الطريقة والكتلة عبارة عن دوال من الرتبة العليا .
أمثلة
برنامج "مرحباً بالعالم" المنتشر في كل مكان :
"مرحباً بالعالم!" printlnيتم إنشاء كائنات جديدة عن طريق استنساخ الكائنات. في Io تحديدًا، يتم إنشاء كائن جديد فارغ، ويتم تخزين الاختلافات بينه وبين الكائن الأصلي فقط داخل الكائن الجديد؛ يُعرف هذا السلوك باسم الوراثة التفاضلية . فيما يلي مثال على هذا السلوك:
A := Object clone // ينشئ كائنًا جديدًا فارغًا باسم "A"دالة مضروب بسيطة غير تكرارية، في Io:
دالة حساب المضروب := طريقة ( ن ، إذا ( ن == 0 ، إرجاع 1 ) النتيجة := 1 النطاق من 1 إلى ( ن ) لكل ( i ، النتيجة = النتيجة * i ) )بما أن إسناد القيمة res * iإلى resالمتغير هو آخر إجراء يتم تنفيذه، فإن الدالة تُرجع النتيجة ضمنيًا، وبالتالي لا حاجة إلى تعبير إرجاع صريح. يوضح المثال أعلاه استخدام النطاقات ، دون استخدام for()حلقة تكرارية، والتي ستكون أسرع.
مراجع
- ↑ "إصدارات Io" . GitHub . تم الاسترجاع في 2020-02-06 .
- ↑"Guide – Io". iolanguage.org. Retrieved 2026-05-09.
- ↑"Io Programming: Writing Addons". Wikibooks.org: open books for an open world. Retrieved 2023-06-22.
- ↑Tate, Bruce (2010). "Chapter 3: Io". Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (1st ed.). Raleigh, North Carolina: Pragmatic Bookshelf. p. 60, 72. ISBN 978-1934356593.
- ↑"io guide". iolanguage.org. Retrieved 2023-06-22.
External links
- Official website
- Io on GitHub
- Io at Synrc Research Center
- Jasmine.Io on GitHub, Behavior Driven Development (BDD) testing framework for Io
- Programming languages
- Dynamic programming languages
- Dynamically typed programming languages
- Prototype-based programming languages
- Object-oriented programming languages
- Programming languages created in 2002
- Scripting languages
- 2002 software
- Homoiconic programming languages
