انتقل إلى المحتوى

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

من ويكيبيديا، الموسوعة الحرة

رينج (بالإنجليزية: 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)

وصلات خارجية

[عدل]


ملحوظات

[عدل]

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