확장 가능한 임베디드 언어

Extensible Embeddable Language
뱀장어
패러다임멀티패러다임: 스크립트, 명령어, 기능, 객체 지향
설계자데이비드 올로프슨
처음 등장한2005년, 17년 전(2005년)
안정된 릴리스
0.3.6 / 2014년 2월 4일, 8년 전(2014-02-04)
타이핑 분야역학
OS크로스 플랫폼
면허증.GNU 약소 일반 공중 사용 허가서
파일 이름 확장자뱀장어
웹 사이트eel.olofson.net
영향을 받다
루아, C, 파스칼

Extensible Embeddable Language(EEL)는 David Olofson이 개발 중인 스크립트 및 프로그래밍 언어입니다.EEL은 음악 신시사이저나 산업용 제어 시스템과 같이 kHz 범위의 사이클 레이트를 가진 실시간 시스템에서 스크립팅하는 을 의도하고 있지만 플랫폼 독립적인 범용 프로그래밍 언어로 사용하기를 원합니다.

철학

언어 디자인에 대해서는, 전원, 사용의 용이성, 안전성의 실용적인 밸런스를 잡는 것이 일반적인 생각입니다.그 목적은 과도한 구문이나 제한된 기능에 의존하지 않고 많은 전형적인 프로그래밍 오류를 방지하는 데 도움이 되는 것입니다.

역사

EEL의 첫 번째 화신은 X11 게임 XKobo의 SDL 포트인 Free and Open Source 게임 Kobo Delux의 사운드 엔진에 사용되는 구조화된 오디오 정의를 위한 단순한 파서 형태였다.이것은 흐름 제어가 매우 제한적이고 현재 버전의 구문과는 상당히 다른 단순한 인터프리터였습니다.이 EEL의 초기 브랜치는 2002년에 처음 출시되었으며 버전 0.5.1 현재도 Kobo Delux에서 사용되고 있습니다.

2003년 12월 EEL은 독립형 프로젝트로 분할되어 삽입형 레올로지 애플리케이션에서 실시간 스크립팅에 사용하기 위해 대대적인 개서를 거쳤습니다.여기서 인터프리터에서 컴파일러/VM으로 전환하여 실제 프로그래밍 언어 EEL이 실현되었습니다.첫 공식 발매는 2005년 1월이었다.그 후 EEL은 저자의 개인적, 전문적인 요구에 의해 서서히 진화해 왔습니다.

특징들

일반

이 언어는 특정 프로그래밍 패러다임을 위해 엄격하게 설계된 것은 아니지만 최소한의 구문설탕 기능을 통해 객체 지향 프로그래밍, 더 구체적으로 말하면 프로토타입 기반 프로그래밍을 지원합니다.기능, 모듈러, 메타프로그래밍 등의 다른 패러다임도 지원됩니다.

포인터를 피하고 완전히 관리된 구조화된 데이터 유형을 제공하므로 EEL 프로그램은 가상 머신이나 호스트 애플리케이션을 크래시하지 않아야 한다는 점에서 EEL은 "안전"합니다.

하이라이트

  • C와 같은 구문
  • (원시 포인터가 아닌) 불투명한 참조입니다.
  • 동적 타이핑
  • 자동 메모리 관리
  • 예외 처리
  • 다음과 같은 내장 구조화 데이터 유형:

코드 예시

고전적인 hello world 프로그램은 다음과 같이 작성할 수 있습니다.

내보내기 함수 main <args> { print("Hello, world!"\n), 0; }을(를) 반환합니다.

다음은 재귀 함수의 예입니다.

내보내기 함수 메인 <recurs> { print("재귀 테스트 1:\n"); 프로시저 recurse(recurse(recurse) {print} = ", arg, "n"; } recurse(10); print("재귀 테스트 2; 상호 재귀 테스트:\n"); 프로시저 {recurse(recursecursecursecursecursecursecursure) {recurs}print = " , arg , " \n " ; arg mrecurse 2 ( recurse ) ; } procedure mrecurse 2 ( recurse 1 ( recurse - 1 ) ; } ; mrecurse 1 ( 10 ) ; print("재귀 테스트 2, 함수 참조:\n" ) ; mrecurrecurse 1 ( recurse 1 )fn(재귀, fn), } 로컬 mrr2 = 프로시저(재귀, fn) { mrrecurse1(재귀 - 1, fn);}, mrrrse1(10, mrr2); print(재귀 테스트 완료).\n); 0; } 반환

내부

EEL 소스 코드는 커스텀 VM의 바이트 코드로 컴파일 됩니다.커스텀 VM에는 명령 수와 오버헤드를 최소화하도록 설계된 비교적 높은 수준의 명령 세트가 있습니다.EEL VM은 레지스터 기반이며 "스택리스"로 VM 컨텍스트 관리에 C 콜 스택에 의존하지 않습니다.

기본적인 메모리 관리 방법은 참조 카운팅입니다.이것에 의해, 동시 가비지 수집 없이, 결정론적 타이밍에 자동적으로 메모리를 관리할 수 있습니다.

VM은 "림보 목록"을 사용하여 식 내에 작성된 중간 개체를 추적하므로 예외 처리가 대폭 간소화되고 모든 작업에서 활성 참조 카운트가 필요하지 않습니다.

적용들

코보 디럭스

코보 디럭스는 [1]EEL을 응용한 앱입니다.

레퍼런스

  1. ^ 2013년 베스트 오브 2013: 31년 연속 - James Monkman이 indiegames.com에 올린 코모도어 64의 독립 게임(2013년 12월 20일)

외부 링크