리볼

Rebol
리볼
Rebol logo.png
패러다임언어 지향 프로그래밍, 데이터 교환, 기능, 프로토타입 기반, 필수
설계자칼 사센라스
개발자REBOL 테크놀로지
처음 등장한1997년; 25년 전(1997년)
안정된 릴리스
2.7.8 / 2011년 1월, 11년 전(2011-01)
프리뷰 릴리즈
2.101.0 / 2012년 12월, 9년 전(2012-12)
타이핑 분야다이내믹, 스트롱
OS크로스 플랫폼
면허증.2.7.8은 자유롭게 재배포 가능[1]소프트웨어이며 2.101.0은 Apache 2.0 라이선스[2] 가지고 있습니다.
파일 이름 확장자.r, .reb[3]
웹 사이트www.rebol.com
영향을 받다
셀프, 포스, 리스프, 로고[4]
영향받은
JSON,[5] 빨간색

Rebol ( / brlb rebl / REB-ll )는 네트워크 통신 및 분산 컴퓨팅용으로 Carl Sassenrath가 설계크로스[6] 플랫폼 데이터 교환 언어 및 멀티패러다이나믹 프로그래밍 언어입니다.또한 코드와 [6][7]데이터를 위한 작고 최적화된 도메인 고유의 언어인 방언의 개념을 도입하고 있습니다.이것은 또한 디자이너 Carl Sassenrath에 따르면 언어의 가장 주목할 만한 특성입니다.

프로그래밍, 쓰기 기능, 프로세스 수행에 사용할 수 있지만 도메인 고유의 언어나 사투리를 쉽게 만들 수 있는 것이 가장 큰 장점입니다.

--

JavaScript 개발에 참여한 것으로 알려진 Douglas Crockford는 Rebol을 "더 현대적인 언어이지만 Lisp와 매우 유사한 아이디어를 가지고 있다"며 "이 모든 것이 프로그램으로 실행 가능한 데이터 표현에 기초하고 있다"고 JSON의 영향 [5]하나로 묘사했다.

원래 언어와 공식 구현은 REBOL Technologies가 개발한 독점적이고 폐쇄적인 소스였습니다.Lawrence [9]Rosen과의 논의 후 Rebol 버전 3 인터프리터는 Apache 2.0 라이선스로 2012년 [10]12월 12일에 출시되었습니다.이전 버전은 바이너리 형식에서만 사용할 수 있으며 해당 버전에 대한 소스 릴리스는 계획되지 않았습니다.

Rebol은 인터넷 애플리케이션(클라이언트 측과 서버 측 모두), 데이터베이스 애플리케이션,[6] 유틸리티 및 멀티미디어 애플리케이션을 프로그래밍하는 데 사용되어 왔습니다.

어원학

Rebol은 처음에 Relative Expression Based Object Language의 약자로 모두 [6][8]대문자로 작성되었습니다.예를 들어, LISPLisp로 대체됨으로써 나타나는 언어 명명법의 현대적인 경향에 맞추기 위해 프로그래머들은 REBOL을 모두 대문자로 쓰는 관행을 중단했습니다.Sassenrath는 결국 자신의 [11]블로그에서 명명 문제를 커뮤니티 토론에 부쳤다.이후 글에서 사센라트는 언어 이름을 레볼로 [12]쓰는 관습을 채택했다.

역사

1997년에 처음 출시된 Rebol은 AmigaOS의 설계자이자 주요 개발자인 Carl Sassenrath에 의해 20년에 걸쳐 설계되었으며, 표현 의미론에 대한 연구와 Lisp, Forth, Logo 및 Self 프로그래밍 언어의 개념을 사용합니다.

  1. REBOL Technologies는 1998년에 설립되었습니다.
  2. 확장 인터프리터 에디션의 핵심이 된 인터프리터인 REBOL 2는 1999년에 처음 출시되었습니다.
    1. 강력암호화와 ODBC 액세스를 추가한 REBOL/Command는 2000년 9월에 출시되었습니다.
    2. REBOL/View는 2001년 4월에 출시되었으며 핵심 언어에 그래픽 기능이 추가되었습니다.
    3. REBOL/IOS는 REBOL을 사용하여 구축된 확장 가능한 협업 환경으로서 2001년 8월에 출시되었습니다.
    4. REBOL/SDK는 2002년 12월에 프리프로세서뿐만 아니라 바인드할 수 있는 커널 선택권을 제공합니다.
  3. 최신 버전의 인터프리터인 Rebol 3 [R3]는 2008년 1월부터 REBOL Technologies에 의해 알파 버전이 출시되었습니다.2012년 12월 Apache 2 프로젝트로 출시된 이후 Rebol [13]커뮤니티에 의해 개발되고 있습니다.

설계.

사용의 용이성

Rebol 설계 원칙 중 하나는 "간단한 방법으로 간단한 작업을 수행하는 것"[6]입니다.다음 예제에서는 그래픽 사용자 인터페이스를 사용하여 간단한 Hello 월드 프로그램을 설명하는 데 Visual 인터페이스 사투리를 사용합니다.

 레이아웃 [텍스트 "Hello world!"버튼 "Quit" [Quit]

R3-GUI 에서의 유사한 예는 다음과 같습니다.

보기 [텍스트 "Hello world" 버튼 "종료" 온액션 [종료]

R3-GUI Hello world example

사투리

도메인 고유의 언어(사투리)는 특정 목적에 최적화된 마이크로 언어입니다.사투리를 사용하여 비즈니스 규칙, 그래픽 사용자 인터페이스 또는 프로그램 설치 시 화면 시퀀스를 정의할 수 있습니다.사용자는 기존의 Rebol 단어를 재사용하여 해당 [6]방언에서 특정 의미를 부여함으로써 자신만의 사투리를 정의할 수 있습니다.사투리는 특정 방법으로 Rebol 블록(또는 문자열 구문 분석)을 처리하는 함수에 의해 해석됩니다.

Rebol의 방언 능력의 예는 단어와 함께 볼 수 있다.return데이터 교환 사투리로 return특별한 의미가 없는 단어일 뿐이에요. 사투리로.return는 함수 결과값을 [4]반환하는 네이티브 함수를 참조하는 글로벌 변수입니다.Visual Interface Language(VID; 비주얼인터페이스 언어)에서는return는, 레이아웃 엔진이 캐리지 리턴을 시뮬레이트 하는 키워드입니다.이 키워드는, 다음의 [7]행의 선두로 「펜」을 이동시킵니다.

그래픽 능력을 가진 Rebol 인터프리터는 많은 사투리를 이해하고 해석해야 합니다.다음 표는 가장 중요한 항목들을 중요도 순으로 나열한 것입니다.

방언명 해석자 목적
데이터 교환 방언 load기능. 데이터와 메타데이터를 나타냅니다.Rebol 방언의 공통 플랫폼
사투리 do기능. 프로그래밍
구문 분석 방언 parse기능. 패턴 매칭
기능사양언어 make기능. 함수 정의; 함수 프로그래밍
오브젝트 지정 언어 make기능. 오브젝트 정의/퍼포먼스; 프로토타입 기반 프로그래밍
Visual Interface Language(VID; 비주얼 인터페이스 언어)
또는
리브GUI
layout기능.
또는
display기능.
그래픽 사용자 인터페이스를 지정합니다
방언을 그려라 view기능. 그래픽 요소들( 선, 다각형 등)을 정의합니다.
스크립트 명세 방언 do기능. 스크립트 정의
보안 정책 방언 secure기능. 보안 정책을 지정하는

구문

Rebol 구문은 자유, 특정 위치이다.하지만 압흔 종종 인간의 독자들을 위해 텍스트의 구조 전달하는 데 사용됩니다.

방언마다 구문 특성이 다를 수 있습니다.모든 Rebol 방언의 공통 플랫폼은 데이터 교환 방언입니다. 다른 방언은 보통 여기에서 파생됩니다.데이터 교환 사투리는 모든 방언의 공통 플랫폼일 뿐만 아니라 데이터와 메타데이터를 표현하고, 데이터 구조를 채우고, 인터넷을 통해 데이터를 전송하고, 데이터 스토리지에 저장하는 데 직접 사용됩니다.

C와 같은 프로그래밍 언어와 달리 데이터 교환 방언은 선언, 문장, 식 또는 키워드로 구성되어 있지 않습니다.유효한 데이터 교환 방언 텍스트 스트림은 블록(루트 블록은 암묵적이며 서브 블록은 대괄호로 구분됨), 패렌(둥근 괄호로 구분됨), 문자열(다행 문자열에 적합한 큰따옴표 또는 곱슬 괄호로 구분됨), URL, e-ma로 구성된 트리 데이터 구조입니다.il 주소, 파일, 경로 또는 기타 복합값.ALGOL 블록과 달리 Rebol 블록은 Lisp에서 따옴표로 묶인 s-표현식과 유사한 복합값입니다.코드가 레볼 블록의 형태로 쓰여져 있다는 사실은 언어를 호모코닉하게 [4]만든다.

블록뿐만 아니라 다른 복합값(블록은 단어, 세트워드(콜론으로 둘러싸인 단어), get-words(콜론으로 둘러싸인 단어), lit-words(아포스트로피로 둘러싸인 단어), 숫자, 돈, 문자 등의 스칼라 값을 공백으로 구분하여 포함할 수 있습니다.단어에는 특수문자를 사용할 수 있으므로 주의하시기 바랍니다.a+b와는 다른 단어이다a + b공백으로 구분된 세 단어의 시퀀스입니다.

세미콜론 뒤에 줄 끝까지 코멘트가 표시될 수 있습니다.여러 줄의 코멘트 또는 사전 파서가 무시하지 않는 코멘트는 여러 줄의 [4]문자열과 같은 "일반" 데이터 유형을 사용하여 작성할 수 있습니다.

의미론

도메인 고유의 언어를 포함하는 블록을 특정 평가자 함수에 [6]인수로 제출할 수 있습니다.

하다

가장 자주 사용되는 평가자는do기능.기본적으로 인터프리터 콘솔에 입력된 텍스트를 해석하는 데 사용됩니다.

에 의해 해석되는 do 사투리dofunction은 데이터 교환 방언의 표현 지향 하위 언어입니다.언어의 주요 의미 단위는 표현이다.ALGOL에서 내려오는 필수 프로그래밍 언어와는 달리 do 방언에는 키워드도 문장도 없습니다.

단어는 대소문자를 구분하지 않는 변수로 사용됩니다.모든 동적 유형 언어에서와 마찬가지로 변수에는 연관된 유형이 없으며 유형은 값과 연결됩니다.그 결과, 즉, 단어에 대한 평가는 단어에 의해 발견되었을 때 반환된다.do기능.단어 집합 형식을 할당에 사용할 수 있습니다.명령 프로그래밍에는 문장이 없어도 할당과 함께 부작용이 있는 함수를 사용할 수 있습니다.[4]

루트 블록의 서브 블록은 스스로 평가됩니다.이 속성은 블록을 인수로 제출하여 다음과 같은 함수를 제어함으로써 구조화된 프로그래밍을 위해 데이터 블록을 처리하는 데 사용됩니다.if,either,loop블록이 특정 인터프리터 [6]함수에 전달되었을 때, 및 방언의 경우.

특정 문제는 변수에 할당된 복합 값이 복사되지 않는다는 것입니다.복사를 작성하려면 이 값을copy기능합니다.[4]

do함수는 보통 평가의 프레픽스스타일을 따릅니다.여기서 함수는 그 뒤에 이어지는 인수를 처리합니다.그러나 infix 연산자를 이용한 infix 평가도 존재합니다.infix 평가는 프리픽스 평가보다 우선합니다.예를들면,

복근 -2 + 3

는 infix 덧셈이 절대값 계산보다 우선하므로 1을 반환합니다.infix 식을 평가할 때 평가 순서는 왼쪽에서 오른쪽으로, 연산자는 다른 연산자보다 우선하지 않습니다.예를들면,

2 + 3 * 4 

는 20을 반환하지만 곱셈을 우선시하는 평가는 14를 산출합니다.모든 연산자에 프리픽스버전이 있어요 Do는 보통 인수를 함수에 전달하기 전에 평가합니다.다음 표현은 다음과 같습니다.

먼저 Wikipedia Rebol 페이지를 읽고 결과를 에 전달합니다.print기능.괄호를 사용하여 평가 순서를 변경할 수 있습니다.프리픽스 표기법을 사용하면 식에서 괄호가 사용되지 않도록 [4]할 수 있습니다.

간단한 우선순위 규칙은 둘 다 장점입니다.

  • 식을 쓸 때 우선순위 테이블을 "참조"할 필요가 없습니다.
  • 새 연산자가 정의될 때 우선순위 테이블을 다시 쓸 필요가 없습니다.
  • 표현은 infix에서 prefix 표기로 쉽게 변환할 수 있습니다.

단점도 있습니다.

  • 기존의 우선 순위 규칙에 익숙한 사용자는 실수를[6] 하기 쉽습니다.

해석

parse함수를 사용하여 사투리를 지정, 검증, 변환 및 해석하는 것이 좋습니다.실행 [6]시 구문 분석 식을 대조하여 이를 수행합니다.

구문 분석 표현은 구문 분석 방언으로 작성됩니다. 구문 분석 방언은 do 방언과 마찬가지로 데이터 교환 방언의 표현 지향 하위 언어입니다.do 방언과 달리 구문 분석 방언은 연산자와 가장 중요한 비말단을 나타내는 키워드를 사용합니다.infix 구문 분석 연산자에는 접두사 등가가 없으며 우선순위 규칙을 사용합니다(시퀀스는 [6]선택보다 우선도가 높습니다).

해석 프로세스 중에 실행하는 액션을 포함할 수 있습니다.parse함수를 사용하여 블록 또는 문자열을 처리할 수 있습니다.문자열 해석 수준에서parse문자와 딜리미터를 고려하여 "저수준" 해석을 처리해야 합니다.블록 해석은 상위 수준이며, Rebol [6]값 수준에서 스캔을 처리합니다.

구문 분석 사투리는 하향식 구문 분석 언어 또는 구문 분석 표현 문법(PEG)으로 표현되는 문법 패밀리에 속합니다.주요 유사점은 모든 가족이 가지고 있는 순서선택 연산자의 존재이다.구문 해석 및 구문 해석 방언과 PEG의 유사성은 산술식을 해석하는 PEG의 예를 다음과 같이 변환함으로써 알 수 있습니다.

숫자: [#"0" - #"9"]: [일부 숫자("Expr "")] 제품: [모든 [["*" "/" ]개요 : ["+" "-" 제품]Expr: 합계 해석/모두 "12+13" Expr

실장

공식 Rebol 2.7.8 구현은 여러 에디션(/Core, /View, /Command, /SDK 및 /IOS)에서 사용할 수 있습니다./Core 에디션과 /View 에디션 모두 자유롭게 재배포 가능한 소프트웨어입니다.[1]

런타임 환경은 단일 실행 파일에 저장됩니다.콘솔 에디션인 Rebol/Core 2.7.8은 약 300KB, 그래피컬 사용자 인터페이스 에디션인 Rebol/View 2.7.8은 약 650KB입니다.

Rebol/View플랫폼에 의존하지 않는 그래픽스와 사운드 액세스를 제공하며 자체 윈도우 툴킷과 확장 가능한 스타일 세트(GUI 위젯)를 갖추고 있습니다.Rebol/Command 2.7.8 또는 Rebol/SDK 2.7.8과 같은 확장 버전에는 유료 라이센스가 필요합니다. ODBC 데이터 액세스와 같은 기능과 독립 실행형 실행 파일을 생성하는 [citation needed]옵션이 추가됩니다.

유산

  • Rebol은 JavaScript Object [5]Notation의 영감 중 하나로 Douglas Crockford에 의해 명명되었습니다.
  • Rebol은 Rebol과 유사한 언어를 [14]해석한 오픈 소스 Orca 프로젝트에 영감을 주었습니다.
  • 보론은 해석된 호모아이코닉 언어이며 도메인 고유의 언어를 포함하기 위한 레볼에서 영감을 얻었으며 이와 유사합니다.LGPLv3의 조건에 따라 라이선스가 부여된 C 라이브러리로 구현됩니다.
  • Red 프로그래밍 언어는 Rebol에서 직접 영감을 얻었지만 Red의 구현 선택은 특히 인식된 [15]한계를 극복하도록 조정되었습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b REBOL 테크놀로지.REBOL/View 및 REBOL/Core 2.7.8 라이선스
  2. ^ GitHubR3 소스
  3. ^ "Carl's REBOL Blog - Let's switch to .reb suffix". Rebol.com. August 18, 2013. Retrieved January 23, 2014.
  4. ^ a b c d e f g Goldman, E., Blanton, J. (2000)REBOL: 공식 가이드.McGrow-Hill Osborne 미디어ISBN 0-07-21279-X.
  5. ^ a b c 크로크포드, 더글라스JSON Saga, Jsonsaga.ppt Wayback Machine에서 2012년 10월 4일 아카이브 완료
  6. ^ a b c d e f g h i j k l 로버츠, 랄프(2000).REBOL for Dummies.헝그리 마인드ISBN 0-7645-0745-1.
  7. ^ a b Overlot, Olivier(2001).리볼 프로그래밍눈동자.ISBN 2-212-11017-0.
  8. ^ a b Sassenrath, Carl (July 1, 2000). "Inside the REBOL scripting language". Dr. Dobb's Journal.
  9. ^ "REBOL to become open source". Rebol.com. September 25, 2012. Retrieved January 23, 2014.
  10. ^ Sassenrath, Carl (December 12, 2012). "Comments on: R3 Source Code Released!". Retrieved August 14, 2014. You probably thought the source release would never happen? Am I right? Well, it's there now in github at github.com/rebol/rebol.
  11. ^ "Calling REBOL Rebol?". December 14, 2012. Archived from the original on December 3, 2013. Retrieved December 2, 2013.
  12. ^ Sassenrath, Carl. "Cross-compiling Rebol for your favorite embedded board". Retrieved September 16, 2016.
  13. ^ "Source code for the Rebol interpreter". rebol/rebol GitHub. Retrieved March 14, 2017.
  14. ^ Freecoderebol-orca 프로젝트
  15. ^ GitHubRed 프로젝트

추가 정보

외부 링크