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

رينج  وتعنى الخاتم، هي لغة برمجة جديدة ، الرينج تعد لغة برمجة نصية تشبه في ذلك بايثون وروبي وهي مطورة باستخدام لغة سي، وتعمل على مختلف أنظمة التشغيل مثل ويندوز ولينكس وماك، كما تدعم العديد من أنماط البرمجة 

 تاريخ اللغة 
 بدأ التخطيط لها في نوفمبر 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م

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

 برنامج 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

 مراجع 

 وصلات خارجية 
 موقع اللغة على sourceforge.net
 مقال عن اللغة في codeproject.com
 مرجع كامل عن اللغة
 مجموعة من الأمثلة لبرامج صغيرة كتبت برينج

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

تصنيف:اختراعات مصرية
تصنيف:برمجيات 2016
تصنيف:برمجيات تستخدم رخصة إم آي تي
تصنيف:برمجيات حرة بلغة سي
تصنيف:برمجيات حرة متعددة المنصات
تصنيف:لغات برمجة
تصنيف:لغات برمجة أنشئت في 2016
تصنيف:لغات برمجة ديناميكية النمط
تصنيف:لغات برمجة عالية المستوى
تصنيف:لغات برمجة نصية
تصنيف:مشاريع برمجيات حرة