호출음(프로그래밍 언어)
Ring (programming language)![]() | |
패러다임 | 멀티패러다임: 객체 지향, 명령어, 기능어, 절차어, 반영어, 선언어, 자연어 프로그래밍 |
---|---|
설계자 | 마무드 사미르 파예드[1][2] |
개발자 | 링 개발팀 |
처음 등장한 | 2016년 1월 | , 전(
안정된 릴리스 | 1.16[3] / 2021년 10월 ; 전 ( ) |
타이핑 분야 | 역학 |
구현 언어 | C |
OS | Windows, Linux 및 MacOS |
면허증. | 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, 웹, 게임 및 모바일 응용 프로그램을 만드는 데 사용할 수 있습니다.
역사
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]
목표들
Ring의 [22]배후에 있는 일반적인 목표는 다음과 같습니다.
- 응용 프로그램 프로그래밍 언어
- 생산성 향상 및 확장 가능한 고품질 솔루션 개발
- C/C++ 프로젝트에 삽입할 수 있는 작고 유연한 언어.
- 교육 및 컴파일러/VM 개념 소개에서 사용할 수 있는 간단한 언어입니다.
- 도메인 고유의 라이브러리, 프레임워크 및 도구를 만드는 데 사용할 수 있는 범용 언어입니다.
- 코딩 기술 없이 프로그래밍 소프트웨어의 [24]다음 버전을 만들기 위해 고안된 실용적인 언어입니다.
예
헬로월드 프로그램
같은 프로그램을 다른 스타일로 작성할 수 있습니다.다음은 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키워드 쓰다 봐
루프 명령어
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}"
실행
컴파일러 및 가상 머신
링 프로그램은 텍스트 링 파일에서 직접 해석되지 않고 바이트 코드로 컴파일되어 링 가상 시스템에서 실행됩니다.컴파일 프로세스는 일반적으로 사용자에게 보이지 않고 런타임에 실행되지만 컴파일러를 제외하고 로드 성능을 높이거나 호스트 환경의 메모리 공간을 줄이기 위해 오프라인으로 실행할 수 있습니다.
컴파일러와 가상 머신은 코딩 테크놀로지 없는 프로그래밍 소프트웨어를 통한 비주얼 프로그래밍을 사용하여 설계되어 C 코드가 생성됩니다.
내선번호
풀 인스톨 버전(Ring 1.12의 경우 파일사이즈가 약 280 MB)의 인스톨 직후에 사용할 수 있는 확장자는 다음과 같습니다.Ring측에서 정식 제공 및 유지보수가 이루어지기 때문에 다른 언어에서 문제가 발생할 수 있는 라이브러리 의존성에 대해 사용자가 신경 쓰지 않고 언어 사양이 파괴되어도 갑자기 사용할 수 없는 우려가 있습니다.
확장자는 약 500,000줄의 C 및 C++ 코드로 구현됩니다.
- Ring Allegro (Allegro 게임 라이브러리)
- RingConsoleColor(명령어프롬프트 또는 단말용 텍스트컬러 라이브러리)
- RingCurl(CURL 라이브러리)
- Ring Free GLUT (Free GLUT)
- Ring Internet(인터넷 관련 라이브러리)
- RingLibUV(LibUV 비동기 I/O 라이브러리)
- RingMurHash(해시 함수 라이브러리)
- Ring MySQL(MySQL)
- RingODBC(오픈 데이터베이스 연결)
- RingOpenGL (OpenGL 1.1-4.6)
- Ring OpenSSL(OpenSSL)
- Ring PostgreSQL(Postgre)SQL)
- RingQt(Qt 프레임워크)
- RingRayLib(raylib)
- RingSDL(SDL-Simple Direct Media Layer Library)
- Ring SQLite(SQLite)
- RingWinAPI(Windows API)
- RingWinCREG(Windows 레지스트리)
- Ring ZIP(ZIP 파일 처리 라이브러리)
라이브러리
Ring은 Ring 자체에서 작성된 라이브러리와 함께 제공되며, 이러한 라이브러리 중 일부는 웹 및 게임 개발과 관련이 있습니다.
라이브러리명 | 묘사 |
---|---|
표준 라이브러리 | 일반 클래스 및 함수. |
GUI 라이브러리 | GUI 응용 프로그램을 만들기 위한 클래스 및 함수 |
오브젝트 라이브러리 | MVC 설계 패턴을 사용하여 GUI 응용 프로그램을 만들기 위한 클래스 및 함수 |
웹 라이브러리 | MVC 설계 패턴을 사용하여 웹 응용 프로그램을 개발하기 위한 간단한 프레임워크 |
게임 엔진 | Allegro 및 LibSDL 기반의 선언형 프로그래밍을 이용한 데스크톱 및 모바일용 2D 게임 개발 지원 |
내추럴 라이브러리 | 범용 자연어 프로그래밍 라이브러리. |
트레이스 라이브러리 | 응용 프로그램을 디버깅하기 위한 라이브러리입니다. |
힌트 입력 | 함수에 형식 힌트를 추가하기 위한 라이브러리입니다. |
빅넘버 라이브러리 | 방대한 숫자에 대한 산술 연산을 지원합니다. |
폭스 링 라이브러리 | Visual Fox Pro와 유사한 기능이 포함되어 있습니다. |
ZeroLib 라이브러리 | 인덱스가 1이 아닌 0으로 시작하는 클래스를 포함합니다. |
적용들
링은 언어로 작성된 60개 이상의 어플리케이션과 함께 배포됩니다.
이러한 어플리케이션의 일부는
- 아날로그 클럭 어플리케이션
- 계산기 응용 프로그램
- 체커스 게임
- 체스 게임
- 15 퍼즐 3D 게임
- 게임 2048
- 나이트 투어 게임
- 지뢰 찾기 게임
- 오셀로 게임
- 소코반 게임
- 스도쿠 게임
- 틱택토 3D 게임
- 비디오 뮤직 플레이어 응용 프로그램
- Windows Startup Manager 응용 프로그램
도구들
링은 다음 도구를 포함하는 표준 IDE와 함께 배포됩니다(링 자체에 기록됨).
- Ring REPL(판독 평가 인쇄 루프)
- Ring2EXE(실행 가능한 응용 프로그램 배포)
- RingPM(링 패키지 매니저)
- 호출음 메모장(소스 코드 에디터)
- 폼디자이너(WYSIWYG GUI 디자이너)
또한 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는 문자열로 변환될 것이다).
「 」를 참조해 주세요.
레퍼런스
- ^ M. Ayouni (29 July 2020). "A Dialogue with Mahmoud Fayed" (PDF). Springer.
- ^ 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.
- ^ https://github.com/ring-lang/ring/releases 를 참조해 주세요.
- ^ Azeez Adewale. "The Simple programming language".
- ^ Aavesh Jilani. "The Dragon programming language".
- ^ Dr. Rangarajan Krishnamoorthy (7 August 2021). "First Encounter with the Ring Programming Language". rangakrish.com.
- ^ Omar Selim (January 2018). "The Ring programming language Review" (PDF). BIMArabia Magazine.
- ^ Ahmed Tartour (January 2020). "Your way to programming (Arabic Book, Pages 56-57) talk about Ring" (PDF). Kotobna.
- ^ Bernhard Lauer (14 August 2018). "Ring: flexible, simple, fast". Dotnetpro.
- ^ Paul Krill (24 August 2020). "Ring language upgrade focuses on WebAssembly". InfoWorld.
- ^ Ghanem, Mohamed (2021). Developing Poet Software using Ring language (PDF). MetaBook (Egypt - Mansoura). ISBN 978-977-6928-38-1.
- ^ Beginning Ring Programming - From Novice to Professional Mansour Ayouni Apress.
- ^ Hany Salah (11 January 2016). "Ring: A New programming language". youm7.com. youm7.
- ^ Ahmed Mohammed Hassan. "Ring: A programming language developed by Arab". muslims-res.com. Retrieved 2020-09-28.
- ^ Abedallah Salehani. "A book about the Ring programming language". muslims-res.com. Retrieved 2020-09-28.
- ^ Ring Team (September 2021). "Ring Language - Frequently Asked Questions (FAQ)". Ring Team.
- ^ Fayed (April 2010). "Supernova programming language". Code Project.
- ^ Omnia (December 2011). "Supernova language by Egyptian programmer". Youm7.
- ^ Softpedia Team (23 October 2021). "Ring 1.16 review". Softpedia.
- ^ 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.
- ^ V2EX (3 October 2019). "Ring - a programming language from the Middle East, supporting GUI cross-platform, as easy to learn as PHP". V2EX.
- ^ Naveen Verma (14 Aug 2018). "Ring Programming Language: What Do You Need To Know?". Medium.
- ^ Mones Hawas (29 May 2018). "Progress in developing PWCT 2.0 using Ring". youm7.com. youm7.
- ^ 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.
- ^ Rubin Liu (28 December 2017). "Different styles for writing Hello World program in the Ring programming language". codeproject.com. Code Project.
- ^ Roshan Ali (4 June 2018). "Ring programming tutorial". YouTube.
- ^ Dr. Rangarajan Krishnamoorthy (21 August 2021). ""Loop" Command in Ring Programming Language". rangakrish.com.
- ^ "Object Oriented Programming (OOP) — Ring 1.16 documentation".
- ^ Dr. Rangarajan Krishnamoorthy (4 September 2021). "Ring Language: Dynamic Behavior of Classes and Objects". rangakrish.com.
- ^ Majdi Sobain (2 May 2017). "Squares Puzzle using RingAllegro". codeproject.com. Code Project.
- ^ Fayed (11 August 2017). "Using the Natural Language Programming Library (NLPL) in the Ring Programming Language". codeproject.com. Code Project.
- ^ Fayed (12 October 2016). "Natural Language Programming in the Ring Programming Language". codeproject.com. Code Project.
- ^ Open Source Developers (15 June 2019). "Applications written in Ring". Ring Team.
- ^ Etqan Company (25 September 2018). "Gold Magic 800 Game by Etqan Company". Steam (software).
- ^ "SpaceVim lang#ring layer SpaceVim".
- ^ "ようこそ Ring 取扱説明書へ! — プログラミング言語 Ring 1.16 取扱説明書".
- ^ "Archived copy". www.tiobe.com. Archived from the original on 21 February 2018. Retrieved 28 February 2022.
{{cite web}}
: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ Emma White. "Top 100 Programming Languages". BairesDev. Retrieved 2020-10-06.
- ^ "Build software better, together". GitHub.
- ^ Ciklum (12 December 2017). "New Programming Languages – A Hype Or Reality?". ciklum.com. Ciklum.
- ^ "Variables — Ring 1.16 documentation".
추가 정보
- 가넴(2021) 링어를 사용한 시인 소프트웨어 개발(아랍어), 메타북(이집트-만수라)
- Ayouni (2020) 시작 링 프로그래밍, Apress (스프링거 네이처 일부)
- 하수나(2019) 링 베이직스(아랍어판), 하수나 학원
- Sobain (2017) RingWinCReg 확장 문서, SourceForge
- Fayed (2016) 링 프로그래밍 언어, Code Project
외부 링크
