رینگ (زبان برنامه‌نویسی)

رینگ (زبان برنامه‌نویسی)
پارادایم برنامه‌نویسیچند پارادایمی: شیءگرا، دستوری، تابعی، رویه‌ای، پژواکی، اعلانی، طبیعی
طراحی شده توسطمحمود سمیر فاید[۱][۲]
توسعه‌دهندهتیم توسعه رینگ
ظهوریافته در۲۵ ژانویه ۲۰۱۶ (۲۰۱۶-25}})
انتشار پایدار
1.25[۳] ویرایش در ویکی‌داده / ۶ ژانویه ۲۰۲۶ (۶ ژانویه ۲۰۲۶-خطا: زمان نامعتبر}})
پویا
زبان پیاده‌سازی
سی
سیستم‌عاملویندوز، لینوکس و مک‌اواس
پروانهپروانه ام‌آی‌تی
.ring, .rh, .rform
وبگاه

    Ring در ویکی‌کتاب (انگلیسی)

    رینگ یک زبان برنامه‌نویسی همه منظوره پویا است که می‌توان آن را در پروژه‌های C/C++ تعبیه کرد، با استفاده از کد C/C++ گسترش داد و/یا به عنوان یک زبان مستقل استفاده کرد.[۴] پارادایم‌های برنامه‌نویسی دستوری، رویه ای، شی گرا، تابعی، فرا و اعلاتی با استفاده از ساختارهای تو در تو و برنامه‌نویسی طبیعی در رینگ پشتیبانی می‌شوند.[۵][۶] این زبان قابل حمل است (ویندوز، لینوکس، مک‌اواس، اندروید،[۷] وب‌اسمبلی،[۸] و غیره) و می‌توان از آن برای ایجاد کنسول، رابط کاربری گرافیکی، وب، بازی و برنامه‌های موبایل استفاده کرد.[۹][۱۰][۱۱]

    تاریخچه

    ویرایشگر رینگ (دفتر یادداشت / طراح فرم)
    • در ۲۵ ژانویه ۲۰۱۶، رینگ ۱٫۰ منتشر شد.
    • در ۶ اکتبر ۲۰۱۶، رینگ ۱٫۱ منتشر شد.
    • در ۲۵ ژانویه ۲۰۱۷، رینگ ۱٫۲ منتشر شد.
    • در ۱۵ می ۲۰۱۷، رینگ ۱٫۳ منتشر شد.
    • در ۲۹ ژوئن ۲۰۱۷، رینگ ۱٫۴ منتشر شد.
    • در ۲۱ آگوست ۲۰۱۷، رینگ ۱٫۵ منتشر شد.
    • در ۳۰ نوامبر ۲۰۱۷، رینگ ۱٫۶ منتشر شد.
    • در ۲۵ ژانویه ۲۰۱۸، رینگ ۱٫۷ منتشر شد.
    • در ۲۵ ژوئن ۲۰۱۸، رینگ ۱٫۸ منتشر شد.
    • در ۶ اکتبر ۲۰۱۸، رینگ ۱٫۹ منتشر شد.
    • در ۲۵ ژانویه ۲۰۱۹، رینگ ۱٫۱۰ منتشر شد.
    • در ۱۵ سپتامبر ۲۰۱۹، رینگ ۱٫۱۱ منتشر شد.
    • در ۲۵ ژانویه ۲۰۲۰، رینگ ۱٫۱۲ منتشر شد.
    • در ۱۵ سپتامبر ۲۰۲۰، رینگ ۱٫۱۳ منتشر شد.
    • در ۲۵ ژانویه ۲۰۲۱، رینگ ۱٫۱۴ منتشر شد.
    • در ۲۴ سپتامبر ۲۰۲۱، رینگ ۱٫۱۵ منتشر شد.
    • در ۲۳ اکتبر ۲۰۲۱، رینگ ۱٫۱۶ منتشر شد.[۱۲]

    اهداف

    PWCT 2.0 (اندروید) - با استفاده از رینگ در حال توسعه است

    اهداف کلی پشت رینگ:[۱۳][۱۴]

    • زبان برنامه‌نویسی کاربردی
    • بهره‌وری و توسعه راه حل‌های با کیفیت بالا که می‌توانند مقیاس شوند.
    • زبان کوچک و انعطاف‌پذیری که می‌تواند در پروژه‌های C/C++ تعبیه شود.
    • زبان ساده قابل استفاده در آموزش و معرفی مفاهیم Compiler/VM.
    • زبان همه منظوره که می‌تواند برای ایجاد کتابخانه‌ها، چارچوب‌ها و ابزارهای خاص دامنه استفاده شود.
    • زبان عملی طراحی شده برای ایجاد نسخه بعدی نرم‌افزار Programming Without Coding Technology.[۱۵]

    مثال‌ها

    سبک‌های مختلف برای نوشتن کد
    برنامه‌نویسی اعلامی (توسعه وب)
    برنامه‌نویسی به زبان طبیعی
    تست عملکرد کنترل TreeView با استفاده از RingQt

    برنامه سلام دنیا

    در رینگ، یک برنامه را می‌توان با استفاده از سبک‌های مختلف نوشت. در اینجا نمونه ای از استاندارد "سلام، جهان!" را با استفاده از چهار سبک مختلف می‌بینید:

    سبک اول:

    see "Hello, World!"
    

    سبک دوم:

    put "Hello, World!"
    

    سبک سوم:

    load "stdlib.ring"
    print("Hello, World!")
    

    سبک دیگر: شبیه به زبان‌های xBase مانند Clipper و Visual FoxPro

    ? "Hello, World!"
    

    تغییر کلمات کلیدی و اپراتورها

    رینگ از تغییر کلمات کلیدی و عملگرهای زبان پشتیبانی می‌کند.

    این کار را می‌توان بارها در یک فایل انجام داد و برای مقاصد زیر کاربردی است:

    • ترجمه کلمات کلیدی از انگلیسی به سایر زبان‌های انسانی (زبان‌های برنامه‌نویسی غیر انگلیسی)
    • سفارشی کردن زبان برای استفاده از سبک مورد علاقه
    • انتقال کدهای قدیمی که به زبان‌های دیگر نوشته شده‌است

    نمونه ترجمه کلمات کلیدی رینگ به به فارسی:

    ChangeRingKeyword See بنویس
    
    بنویس "Hello, World!"
    
    ChangeRingKeyword بنویس See
    

    نمونه ترجمه کلمات کلیدی رینگ به به عربی:

    ChangeRingKeyword See إطبع
    
    إطبع "Hello, World!"
    
    ChangeRingKeyword إطبع See
    

    نمونه ترجمه کلیدی رینگ به ژاپنی:

    ChangeRingKeyword See 手紙を出す
    ChangeRingOperator + そして
    改行 = nl
    します。 = :します。
    
    手紙を出す "こんにちは、世界" そして 改行 します。
    
    ChangeRingKeyword 手紙を出す See // キーワードの復旧
    ChangeRingOperator そして + // 演算子の復旧
    

    استفاده از سبک مشابه زبان برنامه‌نویسی پاسکال در رینگ:

    ChangeRingKeyword func function
    ChangeRingKeyword see  write
    begin = :begin
    
    function main
    begin
    write("Hello, World!");
    return 0;
    end
    
    ChangeRingKeyword function func
    ChangeRingKeyword write see
    

    [۱۶][۱۷]

    فرمان حلقه

    دستور حلقه (Loop) می‌تواند یک عدد صحیح بگیرد تا ادامه کار را در حلقه‌های بیرونی محصور کند[۱۸]

    changeRingKeyword loop continue
    count = ۲
    for x in 1:5
      for y = 1 to ۲
      if x = ۳
      ? "About to execute 'loop', count = " + count
      continue count
      ok
      ? "x: " + x + ", y: " + y
      next
    next
    

    برنامه‌نویسی شی گرا

    رینگ از برنامه‌نویسی شی گرا (کلاس‌ها، اشیاء، ترکیب، ارث، کپسولاسیون و غیره) پشتیبانی می‌کند)[۱۹]

    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)
    

    در رینگ کلاس‌ها را می‌توان در زمان اجرا با استفاده از تابع Eval() تعریف کرد[۲۰]

    ? "Creating a new class dynamically..."
    eval("class DynamicClass a b")
    
    ? "Printing the instance..."
    ? new DynamicClass {a=1 b=۲}
    

    پیاده‌سازی

    کامپایلر و ماشین مجازی

    پیاده‌سازی Ring VM با استفاده از PWCT - Virtual Machine Instructions
    پیاده‌سازی Ring VM با استفاده از PWCT - List Structure

    برنامه‌های رینگ مستقیماً از فایل رینگ متنی تفسیر نمی‌شوند، بلکه در بایت کد کامپایل می‌شوند سپس در ماشین مجازی رینگ اجرا می‌شوند. فرایند کامپایل معمولاً برای کاربر نامرئی است و در زمان اجرا انجام می‌شود، اما می‌توان آن را به صورت آفلاین انجام داد تا با کنار گذاشتن کامپایلر، عملکرد بارگذاری برنامه افزایش یابد.

    افزودنی‌ها (Extensions)

    طراح فرم آنلاین (WebAssembly) - با استفاده از RingQt
    پیاده‌سازی بازی Sokoban با استفاده از موتور بازی رینگ برای بازی‌های دو بعدی
    استفاده از Qt3D از طریق RingQt

    افزدونی‌های زیر بلافاصله پس از نصب نسخه کامل نصب (با حجم فایل حدود ۲۸۰ مگابایت برای رینگ ۱٫۱۲) قابل استفاده هستند. از آنجایی که این‌ها به‌طور رسمی از سمت رینگ ارائه می‌شوند، کاربران در وابستگی‌های کتابخانه ای که ممکن است در زبان‌های دیگر مشکلاتی ایجاد کند مشکل ندارند و این نگرانی وجود ندارد که حتی در صورت تغییرات مخرب در مشخصات زبان، نتوانند به در لحظه از آن‌ها استفاده کنند.

    برنامه‌های افزودنی با حدود ۵۰۰۰۰۰ خط کد C و C++ پیاده‌سازی شده‌اند.

    کتابخانه‌ها

    رینگ دارای کتابخانه‌هایی است که با خود رینگ نوشته شده‌اند، برخی از این کتابخانه‌ها مربوط به توسعه وب و بازی هستند.

    نام کتابخانه شرح
    کتابخانه استاندارد کلاس‌ها و توابع عمومی
    کتابخانه رابط کاربری گرافیکی کلاس‌ها و توابع برای ایجاد برنامه‌های رابط کاربری گرافیکی
    کتابخانه اشیاء کلاس‌ها و توابع برای ایجاد برنامه‌های رابط کاربری گرافیکی با استفاده از الگوی طراحی MVC
    کتابخانه وب چارچوب ساده برای توسعه برنامه‌های کاربردی وب با استفاده از الگوی طراحی MVC
    موتور بازی پشتیبانی از توسعه بازی‌های دو بعدی برای دسکتاپ و موبایل با استفاده از برنامه‌نویسی اعلامی بر اساس Allegro و LibSDL
    کتابخانه طبیعی کتابخانه برنامه‌نویسی زبان طبیعی همه منظوره.
    کتابخانه ردیابی کتابخانه ای برای اشکال زدایی برنامه‌ها.
    نکات را تایپ کنید کتابخانه ای برای افزودن نکات نوع به توابع.
    کتابخانه شماره بزرگ پشتیبانی از عملیات حسابی روی اعداد بزرگ
    کتابخانه حلقه روباه شامل توابع مشابه Visual FoxPro.
    کتابخانه ZeroLib شامل کلاس‌هایی است که شاخص به جای ۱ از ۰ شروع می‌شود.

    برنامه‌های کاربردی

    بازی Gold Magic 800 - با استفاده از RingAllegro و RingOpenGL
    بازی آنلاین اتللو (WebAssembly) - با استفاده از RingQt

    رینگ با بیش از ۶۰ برنامه کاربردی که به این زبان نوشته شده ، منتشر شده‌است.

    برخی از این برنامه‌ها عبارتند از:

    ابزارها

    اجرای بازی تتریس با استفاده از پکیج منیجر رینگ

    رینگ با یک IDE استاندارد توزیع می‌شود که حاوی ابزارهای زیر که با رینگ نوشته شده‌اند، می‌باشد.

    • Ring REPL (خواندن-ارزیابی-چاپ)
    • Ring2EXE (توزیع برنامه‌های اجرایی)
    • RingPM (مدیریت بسته رینگ)
    • دفترچه یادداشت رینگ (ویرایشگر کد منبع)
    • طراح فرم (طراح رابط کاربری گرافیکی WYSIWYG)

    همچنین رینگ به واسطه اکستنشن، برای بسیاری از ویرایشگرهای کد (Emacs، Notepad++، Geany، Atom، Sublime Text 2، Visual Studio Code) قابل استفاده شده‌است.

    SpaceVim (یک توزیع vim مبتنی بر جامعه) نیز از زبان برنامه‌نویسی رینگ پشتیبانی می‌کند.[۲۴]

    مستندات

    مستندات رینگ با استفاده از Sphinix تهیه شده‌است.

    مستندات رینگ همچنین به زبان ژاپنی وجود دارد.[۲۵]

    محبوبیت

    طبق بررسی که توسط شاخص انجمن برنامه‌نویسی TIOBE اانجام شده، محبوبیت رینگ افزایش و کاهش سریعی داشته‌است. در فوریه ۲۰۱۸، رینگ برای اولین بار به لیست ۵۰ تای برتر راه یافت (مقام 45).[۲۶] از اکتبر ۲۰۲۰، رینگ در شاخص TIOBE جایگاه ۹۳ را دارد.[۲۷] رینگ توسط گیت‌هاب در لیست زبان‌های برنامه‌نویسی فعال ذکر شده‌است.[۲۸]

    نقدها

    منتقدان رینگ به برخی از ویژگی‌های آن که در زبان‌های برنامه‌نویسی پرکاربرد رایج نیستند اشاره می‌کنند.[۲۹]

    شروع شاخص فهرست از یک به جای صفر

    در زبان رینگ، شاخص اولین مورد در لیست‌ها و اولین کاراکتر در رشته‌ها ۱ است.

    cName = "Ring"
    ? cName[1] # print R
    aList = ["One","Two","Three"]
    ? aList[1] # print One
    

    تبدیل نوع ضمنی

    این زبان می‌تواند به‌طور خودکار اعداد و رشته‌ها را به هم تبدیل کند.[۳۰]

    /*
    ** Rules:
    ** <NUMBER> + <STRING> --> <NUMBER>
    ** <STRING> + <NUMBER> --> <STRING>
    * /
    
    x    = 10 # x is a number
    y    = "20" # y is a string
    nSum = x + y # nSum is a number (y will be converted to a number)
    cMsg = "Sum = " + nSum # cMsg is a string (nSum will be converted to a string)
    

    جستارهای وابسته

    منابع

    1. M. Ayouni (29 July 2020). "A Dialogue with Mahmoud Fayed" (PDF). Springer.
    2. Alinsen TV channel Team (4 August 2020). "Alinsen TV channel introduce Ring as one of the inventions made in the Middle East". Alinsen TV Channel.
    3. "Released 1.25". 6 ژانویه 2026. Retrieved 6 January 2026.
    4. Dr. Rangarajan Krishnamoorthy (7 August 2021). "First Encounter with the Ring Programming Language". rangakrish.com.
    5. Omar Selim (January 2018). "The Ring programming language Review" (PDF). BIMArabia Magazine.
    6. Ahmed Tartour (January 2020). "Your way to programming (Arabic Book, Pages 56-57) talk about Ring" (PDF). Kotobna. Archived from the original (PDF) on 21 February 2022. Retrieved 20 June 2022.
    7. Bernhard Lauer (14 August 2018). "Ring: flexible, simple, fast". Dotnetpro.
    8. Paul Krill (24 August 2020). "Ring language upgrade focuses on WebAssembly". InfoWorld.
    9. Hany Salah (11 January 2016). "Ring: A New programming language". youm7.com. youm7.
    10. Ahmed Mohammed Hassan. "Ring: A programming language developed by Arab". muslims-res.com. Retrieved 2020-09-28.
    11. Abedallah Salehani. "A book about the Ring programming language". muslims-res.com. Retrieved 2020-09-28.
    12. V2EX (3 October 2019). "Ring - a programming language from the Middle East, supporting GUI cross-platform, as easy to learn as PHP". V2EX.
    13. Naveen Verma (14 Aug 2018). "Ring Programming Language: What Do You Need To Know?". Medium.
    14. Mones Hawas (29 May 2018). "Progress in developing PWCT 2.0 using Ring". youm7.com. youm7.
    15. Fayed, Mahmoud S.; Al-Qurishi, Muhammad; Alamri, Atif; Hossain, M. Anwar; Al-Daraiseh, Ahmad A. (October 2020). "PWCT: a novel general-purpose visual programming language in support of pervasive application development". CCF Transactions on Pervasive Computing and Interaction. 2 (3): 164–177. doi:10.1007/s42486-020-00038-y.
    16. Rubin Liu (28 December 2017). "Different styles for writing Hello World program in the Ring programming language". codeproject.com. Code Project.
    17. Roshan Ali (4 June 2018). "Ring programming tutorial". YouTube.
    18. Dr. Rangarajan Krishnamoorthy (21 August 2021). ""Loop" Command in Ring Programming Language". rangakrish.com.
    19. "Object Oriented Programming (OOP) — Ring 1.16 documentation".
    20. Dr. Rangarajan Krishnamoorthy (4 September 2021). "Ring Language: Dynamic Behavior of Classes and Objects". rangakrish.com.
    21. Majdi Sobain (2 May 2017). "Squares Puzzle using RingAllegro". codeproject.com. Code Project.
    22. Open Source Developers (15 June 2019). "Applications written in Ring". Ring Team.
    23. Etqan Company (25 September 2018). "Gold Magic 800 Game by Etqan Company". Steam (software).
    24. "SpaceVim lang#ring layer | SpaceVim".
    25. "ようこそ Ring 取扱説明書へ! — プログラミング言語 Ring 1.16 取扱説明書". Archived from the original on 30 اكتبر 2021. Retrieved 20 June 2022. {{cite web}}: Check date values in: |archive-date= (help)
    26. "Archived copy". www.tiobe.com. Archived from the original on 21 February 2018. Retrieved 28 February 2022.{{cite web}}: نگهداری یادکرد:عنوان آرشیو به جای عنوان (link)
    27. Emma White. "Top 100 Programming Languages". BairesDev. Retrieved 2020-10-06.
    28. "Build software better, together". GitHub.
    29. Ciklum (12 December 2017). "New Programming Languages – A Hype Or Reality?". ciklum.com. Ciklum.
    30. "Variables — Ring 1.16 documentation".

    بیشتر

    پیوند به بیرون