رينج (لغة برمجة)

لغة برمجة

رينج (بالإنجليزية: Ring)‏ وتعنى الخاتم، هي لغة برمجة جديدة [3]، الرينج تعد لغة برمجة نصية تشبه في ذلك بايثون وروبي وهي مطورة باستخدام لغة سي، وتعمل على مختلف أنظمة التشغيل مثل ويندوز ولينكس وماك، كما تدعم العديد من أنماط البرمجة [4][5]

تاريخ اللغة

عدل
  • بدأ التخطيط لها في نوفمبر 2011م
  • بدأ التنفيذ في سبتمبر 2013م
  • تم اختيار اسم اللغة في إبريل 2015م
  • تم الانتهاء من المترجم في مايو 2015م
  • تم الانتهاء من كتابة التوثيق في سبتمبر 2015م
  • تم إطلاق الإصدار الأول في 25 يناير 2016م
  • تم إطلاق الإصدار 1.1 في 6 أكتوبر 2016م
  • تم إطلاق الإصدار 1.2 في 25 يناير 2017م
  • تم إطلاق الإصدار 1.3 في 15 مايو 2017م
  • تم إطلاق الإصدار 1.4 في 29 يونيو 2017م
  • تم إطلاق الإصدار 1.5 في 21 أغسطس 2017م
  • تم إطلاق الإصدار 1.6 في 30 نوفمبر 2017م
  • تم إطلاق الإصدار 1.7 في 25 يناير 2018م
  • تم إطلاق الإصدار 1.8 في 25 يونيو 2018م
  • تم إطلاق الإصدار 1.9 في 6 أكتوبر 2018م
  • تم إطلاق الإصدار 1.10 في 25 يناير 2019م
  • تم إطلاق الإصدار 1.11 في 15 سبتمبر 2019م
  • تم إطلاق الإصدار 1.12 في 25 يناير 2020م
  • تم إطلاق الإصدار 1.13 في 15 سبتمبر 2020م
  • تم إطلاق الإصدار 1.14 في 25 يناير 2021م
  • تم إطلاق الإصدار 1.15 في 24 سبتمبر 2021م
  • تم إطلاق الإصدار 1.16 في 23 أكتوبر 2021م

[6][7][8]

الهدف

عدل
  • لغة برمجة متخصصة في تطوير التطبيقات
  • تركز على الإنتاجية وتطوير التطبيقات ذات الجودة العالية
  • لغة صغيرة الحجم وسريعة يمكن تضمينها في مشاريع بلغة سى أو سى++
  • لغة بسيطة يمكن أن تستخدم في التعليم وكذلك تقديم مفاهيم بناء لغات البرمجة
  • لغة عامة ومتعددة الأغراض يمكن ان تستخدم في بناء الأدوات والمكتبات المتخصصة في مجال معين
  • لغة عملية صممت من أجل بناء الجيل القادم من مشروع تقنية البرمجة بدون كود.[9]

امثلة

عدل

برنامج Hello World!

عدل

يمكن كتابة برنامج الترحيب كالتالى:

See "Hello, World!"

ما يلي هو نص برمجي لتنفيذ تعمية قيصر على مدخل معين :

# Project : Caesar cipher

cipher = "pack my box with five dozen liquor jugs"
abc = "abcdefghijklmnopqrstuvwxyz"
see "text is to be encrypted:" + nl
see cipher+ nl + nl
str = ""
key = random(24) + 1
see "key = " + key + nl + nl
see "encrypted:" + nl
caesarencode(cipher, key)
see str + nl + nl
cipher = str
see "decrypted again:" + nl
caesardecode(cipher, key)
see str + nl

func caesarencode(cipher, key)
       str = ""
       for n = 1 to len(cipher)
            if cipher[n] != " "
               pos = substr(abc, cipher[n])
               if pos + key < len(abc)
                  str = str + abc[pos + key]
               else
                  if (pos+key)-len(abc) != 0
                     str = str + abc[(pos+key)%len(abc)]
                  else
                      str = str +abc[key+pos]
                  ok
                    ok 
               else
                  str = str + " "
               ok
       next
     return str

func caesardecode(cipher, key)
       str = ""
       for n= 1 to len(cipher)
            if cipher[n] != " "
               pos = substr(abc, cipher[n])
               if (pos - key) > 0 and pos != key
                   str = str + abc[pos - key]
                   loop
               else 
                   if pos = key
                      str = str + char(122)
                   else
                     str = str + abc[len(abc)-(key-pos)]
                   ok                     
               ok                
            else
               str = str + " "
            ok
       next
       return str

تدعم رينج البرمجة كائنية التوجه (الكائنات، الاصناف، التغليف، الوراثة)

new point {            # Create new object from the Point class the access the object using braces
x=10  y=20  z=30       # Set the object attributes
print()                # Call the print() method
}                      # end of object access using braces
class point            # Define the class
x y z                  # Define the attributes (x,y,z)
func print             # Define the print() method
? x + nl + y + nl + z  # Print the attributes values (nl means printing a new line)

تدعم رينج العودية، ويمكن رؤية هذا في المثال أدناه وهو برنامج لتوليد الاعداد الكاتالانية :

for n = 1 to 15
    see catalan(n) + nl
next
 
func catalan n
     if n = 0 return 1 ok
     cat = 2 * (2 * n - 1) * catalan(n - 1) / (n + 1)
     return cat

المخرجات:

1
2
5
14
42
132
429
1430
4862
16796
58786
208012
742900
2674440
9694845

مراجع

عدل
  1. ^ "Released 1.21.2". 13 سبتمبر 2024. اطلع عليه بتاريخ 2024-09-13.
  2. ^ ا ب ج د ه و ز ح ط وصلة مرجع: http://ring-lang-081.osdn.jp/docs-1.10/introduction.html#ring.
  3. ^ لغة برمجة جديدة بمواصفات عالمية من إبتكار مهندس مصرى الموقع الإخباري اليوم السابع ، اطلع عليه بتاريخ 22-04-2016 "نسخة مؤرشفة". مؤرشف من الأصل في 2016-07-28. اطلع عليه بتاريخ 2016-04-21.{{استشهاد ويب}}: صيانة الاستشهاد: BOT: original URL status unknown (link)
  4. ^ لغة برمجية جديدة بأيدٍ عربيةموقع الباحثون المسلمون، اطلع عليه بتاريخ 22-04-2016 نسخة محفوظة 11 أكتوبر 2017 على موقع واي باك مشين.
  5. ^ موقع الغيتهوب الموقع لإستضافة المشاريح الحرة المفتوحة المصدر، اطلع عليه بتاريخ 22-04-2016 نسخة محفوظة 10 يناير 2020 على موقع واي باك مشين.
  6. ^ إصدارات اللغةموقع أخبار اللغة، اطلع عليه بتاريخ 12-10-2017 نسخة محفوظة 12 أكتوبر 2017 على موقع واي باك مشين.
  7. ^ historyموقع سورس فورغ لإستضافة المشاريع الحرة، اطلع عليه بتاريخ 22-04-2016 "نسخة مؤرشفة". مؤرشف من الأصل في 2017-08-30. اطلع عليه بتاريخ 2016-04-21.{{استشهاد ويب}}: صيانة الاستشهاد: BOT: original URL status unknown (link)
  8. ^ تطور إصدارات اللغةتطور اللغة، اطلع عليه بتاريخ 27-01-2019 نسخة محفوظة 08 أكتوبر 2018 على موقع واي باك مشين.
  9. ^ motivationموقع سورس فورغ لإستضافة المشاريع الحرة، اطلع عليه بتاريخ 22-04-2016 "نسخة مؤرشفة". مؤرشف من الأصل في 2017-08-30. اطلع عليه بتاريخ 2016-04-21.{{استشهاد ويب}}: صيانة الاستشهاد: BOT: original URL status unknown (link)

وصلات خارجية

عدل

ملحوظات

عدل

تم استخدام إبانة نحو للغة البرمجة لوا في الاكواد بتلك الصفحة لعدم توافر إبانة نحو خاصة برينج في ويكيبيديا، استخدمت إبانة نحو لوا لانها الاقرب الى رينج.