호출음(프로그래밍 언어)

Ring (programming language)
울리다
Ringlogo transparent.png
패러다임멀티패러다임: 객체 지향, 명령어, 기능어, 절차어, 반영어, 선언어, 자연어 프로그래밍
설계자마무드 사미르 파예드[1][2]
개발자링 개발팀
처음 등장한2016년 1월 25일, 6년 전(2016-01-25)
안정된 릴리스
1.16[3] / 2021년 10월 23일; 9개월 전 (2021년 10월 23일)
타이핑 분야역학
구현 언어C
OSWindows, LinuxMacOS
면허증.MIT 라이선스
파일 이름 확장자.ring, .rh, .rform
웹 사이트http://ring-lang.net
영향을 받다
Lua, Python, Ruby, C, C#, BASIC, QML, xBase, 초신성
영향받은
심플랑,[4] 드래곤랑

동적 유형범용 프로그래밍 언어입니다.C/C++ 프로젝트에 포함하거나 C/C++ 코드를 사용하여 확장하거나 독립 실행형 [6]언어로 사용할 수 있습니다.지원되는 프로그래밍 패러다임명령형, 절차형, 객체 지향형, 함수형, 메타형, 중첩 구조를 사용한 선언형자연 프로그래밍입니다.[7][8]이 언어는 휴대용(Windows, Linux, macOS, Android,[9] Web [10]Assembly 등)[11]이며 콘솔,[12][13][14][15] GUI, , 게임모바일 응용 프로그램을 만드는 데 사용할 수 있습니다.

역사

호출음 IDE(호출음 메모장 - 폼 디자이너)

2009년, Mahmoud Samir Fayed는 사용자 인터페이스(UI) 작성에 초점을 맞추고 자연 언어 프로그래밍과 관련된 아이디어를 사용하는 초신성이라고 불리는 작은 도메인 고유의 언어를 만들었고, 그 후 그는 범용적이고 자연 언어 작성의 생산성을 높일 수 있는 새로운 언어의 필요성을 깨달았다.Ring은 개발자가 자연스러운 인터페이스와 선언형 [16][17][18][19]DSL을 만들 수 있도록 돕는 데 초점을 맞춘 언어를 제공하는 것을 목표로 하고 있다.

  • 2016년 1월 25일, 링 1.0이 출시되었습니다.
  • 2016년 10월 6일, 링 1.1이 출시되었습니다.
  • 2017년 1월 25일, 링 1.2가 출시되었습니다.
  • 2017년 5월 15일, 링 1.3이 출시되었습니다.
  • 2017년 6월 29일, 링 1.4가 출시되었습니다.
  • 2017년 8월 21일, 링 1.5가 출시되었습니다.
  • 2017년 11월 30일, 링 1.6이 출시되었습니다.
  • 2018년 1월 25일, 링 1.7이 출시되었습니다.
  • 2018년 6월 25일, 링 1.8이 출시되었습니다.
  • 2018년 10월 6일, 링 1.9가 출시되었습니다.
  • 2019년 1월 25일, 링 1.10이 출시되었습니다.
  • 2019년 9월 15일 링 1.11이 발매되었습니다.
  • 2020년 1월 25일 링 1.12가 발매되었습니다.
  • 2020년 9월 15일 링 1.13이 발매되었습니다.
  • 2021년 1월 25일 링 1.14가 발매되었습니다.
  • 2021년 9월 24일 링 1.15가 출시되었습니다.
  • 2021년 10월 23일 링 1.16이 출시되었습니다.[20][21]

목표들

PWCT 2.0(Android) - 링을 사용한 개발 중

Ring의 [22]배후에 있는 일반적인 목표는 다음과 같습니다.

  • 응용 프로그램 프로그래밍 언어
  • 생산성 향상 및 확장 가능한 고품질 솔루션 개발
  • C/C++ 프로젝트에 삽입할 수 있는 작고 유연한 언어.
  • 교육 및 컴파일러/VM 개념 소개에서 사용할 수 있는 간단한 언어입니다.
  • 도메인 고유의 라이브러리, 프레임워크 및 도구를 만드는 데 사용할 수 있는 범용 언어입니다.
  • 코딩 기술 없이 프로그래밍 소프트웨어[24]다음 버전을 만들기 위해 고안된 실용적인 언어입니다.

소스 코드 쓰기의 다른 스타일
선언적 프로그래밍(웹 개발)
자연어 프로그래밍
RingQt를 사용한 TreeView컨트롤 퍼포먼스 테스트

헬로월드 프로그램

같은 프로그램을 다른 스타일로 작성할 수 있습니다.다음은 4가지 스타일을 사용하는 표준 "Hello, World!" 프로그램의 예입니다.

첫 번째 스타일:

"안녕, 월드!"를 참조하십시오.

두 번째 스타일:

"안녕, 월드!"라고 써주세요.

세 번째 스타일:

"stdlib.ring" print("Hello, World!"")를 로드합니다.

다른 스타일: Clipper 및 Visual FoxPro와 같은 xBase 언어와 유사합니다.

"안녕, 월드!"

키워드 및 연산자 변경

은 언어 키워드 및 연산자 변경을 지원합니다.

이 작업은 동일한 소스 파일에서 여러 번 수행될 수 있으며, 이 작업은

Ring 키워드를 일본어로 번역하다

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

Ring 키워드를 아랍어로 변환

ChangeRingKeyword "Hello, World!"를 참조하십시오.ChangeRingKeyword " 참조

Pascal 프로그래밍 언어와 유사한 스타일 사용

ChangeRing키워드 기능하다 기능. ChangeRing키워드   쓰다 시작한다. = :시작한다.  기능. 주된 시작한다. 쓰다("안녕, 세계!"); 돌아가다 0; 끝.  ChangeRing키워드 기능. 기능하다 ChangeRing키워드 쓰다  

[25][26]

루프 명령어

Loop 명령어는 정수를 사용하여 외부[27] 루프를 둘러싸는 데 continue semantics를 적용할 수 있습니다.

changeRingKeyword 루프 계속 카운트 = 1:5의 x에 대해 y = 1 ~ 2인 경우? "루프 실행 예정, 카운트 = " + count count ok?" "x: " + x + ", y: " + y" 다음 번

객체 지향 프로그래밍

링은 객체 지향 프로그래밍(클래스, 객체, 구성, 상속, 캡슐화 등)을 지원합니다.[28]

new point { # 포인트클래스에서 새 객체를 만듭니다.중괄호 x=10 y=20 z=30 # 오브젝트 속성을 설정합니다.print() # print() 메서드를 호출합니다.# 중괄호 클래스 포인트를 사용하여 객체액세스의 끝 x y z #클래스를 정의합니다(x,y,z) func print # print() 메서드를 정의합니다.x + nl + y + nl + z # 속성값을 인쇄합니다(nl은 새 행을 인쇄하는 것을 의미합니다).

In Ring 클래스는 Eval() 함수를[29] 사용하여 런타임에 정의할 수 있습니다.

새로운 클래스를 동적으로 만듭니다.". eval "class Dynamic Class a b") ?"인스턴스 인쇄 중..." ?"새로운 Dynamic Class {a=1 b=2}"

실행

컴파일러 및 가상 머신

PWCT를 사용한 VM 링 구현 - 가상 시스템 지침
PWCT를 사용한 링 VM 구현 - 리스트 구조

링 프로그램은 텍스트 링 파일에서 직접 해석되지 않고 바이트 코드로 컴파일되어 가상 시스템에서 실행됩니다.컴파일 프로세스는 일반적으로 사용자에게 보이지 않고 런타임에 실행되지만 컴파일러를 제외하고 로드 성능을 높이거나 호스트 환경의 메모리 공간을 줄이기 위해 오프라인으로 실행할 수 있습니다.

컴파일러와 가상 머신은 코딩 테크놀로지 없는 프로그래밍 소프트웨어를 통한 비주얼 프로그래밍을 사용하여 설계되어 C 코드가 생성됩니다.

내선번호

온라인 폼 디자이너(Web Assembly) - RingQt 사용
2D 게임용 링 게임 엔진을 사용한 소코반 구현
RingQt를 통한 Qt3D 사용

풀 인스톨 버전(Ring 1.12의 경우 파일사이즈가 약 280 MB)의 인스톨 직후에 사용할 수 있는 확장자는 다음과 같습니다.Ring측에서 정식 제공 및 유지보수가 이루어지기 때문에 다른 언어에서 문제가 발생할 수 있는 라이브러리 의존성에 대해 사용자가 신경 쓰지 않고 언어 사양이 파괴되어도 갑자기 사용할 수 없는 우려가 있습니다.

확장자는 약 500,000줄의 C 및 C++ 코드로 구현됩니다.

[30]

라이브러리

Ring은 Ring 자체에서 작성된 라이브러리와 함께 제공되며, 이러한 라이브러리 중 일부는 웹 및 게임 개발과 관련이 있습니다.

라이브러리명 묘사
표준 라이브러리 일반 클래스 및 함수.
GUI 라이브러리 GUI 응용 프로그램을 만들기 위한 클래스 및 함수
오브젝트 라이브러리 MVC 설계 패턴을 사용하여 GUI 응용 프로그램을 만들기 위한 클래스 및 함수
웹 라이브러리 MVC 설계 패턴을 사용하여 웹 응용 프로그램을 개발하기 위한 간단한 프레임워크
게임 엔진 Allegro 및 LibSDL 기반의 선언형 프로그래밍을 이용한 데스크톱 및 모바일용 2D 게임 개발 지원
내추럴 라이브러리 범용 자연어 프로그래밍 라이브러리.
트레이스 라이브러리 응용 프로그램을 디버깅하기 위한 라이브러리입니다.
힌트 입력 함수에 형식 힌트를 추가하기 위한 라이브러리입니다.
빅넘버 라이브러리 방대한 숫자에 대한 산술 연산을 지원합니다.
폭스 링 라이브러리 Visual Fox Pro와 유사한 기능이 포함되어 있습니다.
ZeroLib 라이브러리 인덱스가 1이 아닌 0으로 시작하는 클래스를 포함합니다.

[31][32]

적용들

Gold Magic 800 게임 - RingAllegro 및 RingOpen 사용GL
온라인 오셀로 게임 (Web Assembly) - RingQt 사용

링은 언어로 작성된 60개 이상의 어플리케이션과 함께 배포됩니다.

이러한 어플리케이션의 일부는

[33][34]

도구들

Ring Package Manager를 사용한 Tetris 게임 실행

링은 다음 도구를 포함하는 표준 IDE와 함께 배포됩니다(링 자체에 기록됨).

또한 Ring은 많은 코드 에디터(Emacs, Notepad++, Geany, Atom, Sublime Text 2, Visual Studio Code)를 위해 확장자와 함께 배포됩니다.

SpaceVim(커뮤니티 구동 vim 디스트리뷰션)은 링 프로그래밍 [35]언어를 지원합니다.

문서

링은 Sphinix를 사용하여 작성된 문서와 함께 배포됩니다.

일본어 [36]번역도 있습니다.

접수처

인기

링은 TIOBE Programming Community Index에서 측정한 바와 같이 인기가 급상승하고 하락했습니다.2018년 2월, Ring은 처음으로 톱 50에 진입했다(포지션 [37]45).2020년 10월 현재 링은 TIOBE [38]지수 93을 차지하고 있다.링은 [39]현재 개발 중인 프로그래밍 언어 목록에 GitHub에 의해 나열되어 있습니다.

비판

링 비평가들은 널리 사용되는 프로그래밍 언어에서는 [40]흔하지 않은 링의 일부 기능을 지적했다.

목록 인덱스는 0이 아닌 1부터 시작합니다.

Ring에서 목록의 첫 번째 항목과 문자열의 첫 번째 문자의 색인은 1입니다.

cName = "Ring" ? cName [ 1 ] # 인쇄 R aList = [ " One " " Two " ] ? aList [ 1 ]# 인쇄 1

암묵적 유형 변환

이 언어는 숫자와 [41]문자열 사이를 자동으로 변환할 수 있습니다.

/***규칙:**<>NUMBER>, +<>STRING> 할 것이며,><>NUMBER>,**<>STRING>,+<>NUMBER> 할 것이며,><>STRING>.*)=10#)는 숫자는 y)"20"#는 y는 문자열 nSum)x+y#nSum는 숫자(y를 위해 변환될 것이다)cMsg)"Sum)"+nSum)cMsg은 문자열(nSum는 문자열로 변환될 것이다).

「 」를 참조해 주세요.

레퍼런스

  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. ^ https://github.com/ring-lang/ring/releases 를 참조해 주세요.
  4. ^ Azeez Adewale. "The Simple programming language".
  5. ^ Aavesh Jilani. "The Dragon programming language".
  6. ^ Dr. Rangarajan Krishnamoorthy (7 August 2021). "First Encounter with the Ring Programming Language". rangakrish.com.
  7. ^ Omar Selim (January 2018). "The Ring programming language Review" (PDF). BIMArabia Magazine.
  8. ^ Ahmed Tartour (January 2020). "Your way to programming (Arabic Book, Pages 56-57) talk about Ring" (PDF). Kotobna.
  9. ^ Bernhard Lauer (14 August 2018). "Ring: flexible, simple, fast". Dotnetpro.
  10. ^ Paul Krill (24 August 2020). "Ring language upgrade focuses on WebAssembly". InfoWorld.
  11. ^ Ghanem, Mohamed (2021). Developing Poet Software using Ring language (PDF). MetaBook (Egypt - Mansoura). ISBN 978-977-6928-38-1.
  12. ^ Beginning Ring Programming - From Novice to Professional Mansour Ayouni Apress.
  13. ^ Hany Salah (11 January 2016). "Ring: A New programming language". youm7.com. youm7.
  14. ^ Ahmed Mohammed Hassan. "Ring: A programming language developed by Arab". muslims-res.com. Retrieved 2020-09-28.
  15. ^ Abedallah Salehani. "A book about the Ring programming language". muslims-res.com. Retrieved 2020-09-28.
  16. ^ Ring Team (September 2021). "Ring Language - Frequently Asked Questions (FAQ)". Ring Team.
  17. ^ Fayed (April 2010). "Supernova programming language". Code Project.
  18. ^ Omnia (December 2011). "Supernova language by Egyptian programmer". Youm7.
  19. ^ Softpedia Team (23 October 2021). "Ring 1.16 review". Softpedia.
  20. ^ G link Solutions Team (28 January 2019). "The evolution of the Ring programming language". glinksolutions.vn. GlinkSolution. Archived from the original on 2019-04-21.
  21. ^ V2EX (3 October 2019). "Ring - a programming language from the Middle East, supporting GUI cross-platform, as easy to learn as PHP". V2EX.
  22. ^ Naveen Verma (14 Aug 2018). "Ring Programming Language: What Do You Need To Know?". Medium.
  23. ^ Mones Hawas (29 May 2018). "Progress in developing PWCT 2.0 using Ring". youm7.com. youm7.
  24. ^ 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. S2CID 225395711.
  25. ^ Rubin Liu (28 December 2017). "Different styles for writing Hello World program in the Ring programming language". codeproject.com. Code Project.
  26. ^ Roshan Ali (4 June 2018). "Ring programming tutorial". YouTube.
  27. ^ Dr. Rangarajan Krishnamoorthy (21 August 2021). ""Loop" Command in Ring Programming Language". rangakrish.com.
  28. ^ "Object Oriented Programming (OOP) — Ring 1.16 documentation".
  29. ^ Dr. Rangarajan Krishnamoorthy (4 September 2021). "Ring Language: Dynamic Behavior of Classes and Objects". rangakrish.com.
  30. ^ Majdi Sobain (2 May 2017). "Squares Puzzle using RingAllegro". codeproject.com. Code Project.
  31. ^ Fayed (11 August 2017). "Using the Natural Language Programming Library (NLPL) in the Ring Programming Language". codeproject.com. Code Project.
  32. ^ Fayed (12 October 2016). "Natural Language Programming in the Ring Programming Language". codeproject.com. Code Project.
  33. ^ Open Source Developers (15 June 2019). "Applications written in Ring". Ring Team.
  34. ^ Etqan Company (25 September 2018). "Gold Magic 800 Game by Etqan Company". Steam (software).
  35. ^ "SpaceVim lang#ring layer SpaceVim".
  36. ^ "ようこそ Ring 取扱説明書へ! — プログラミング言語 Ring 1.16 取扱説明書".
  37. ^ "Archived copy". www.tiobe.com. Archived from the original on 21 February 2018. Retrieved 28 February 2022.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  38. ^ Emma White. "Top 100 Programming Languages". BairesDev. Retrieved 2020-10-06.
  39. ^ "Build software better, together". GitHub.
  40. ^ Ciklum (12 December 2017). "New Programming Languages – A Hype Or Reality?". ciklum.com. Ciklum.
  41. ^ "Variables — Ring 1.16 documentation".

추가 정보

외부 링크