스퀴럴 (프로그래밍 언어)
보이기
패러다임 | 스크립트, 명령형, 절차적, 객체 지향 |
---|---|
설계자 | Alberto Demichelis |
발표일 | 2003년 |
라이선스 | zlib/libpng 사용 허가서 |
웹사이트 | http://www.squirrel-lang.org/ |
영향을 받은 언어 | |
C, C++, 루아, 파이썬 | |
영향을 준 언어 | |
다오, MiniD |
스퀴럴(Squirrel) 프로그래밍 언어는 스크립트 언어로 명령형, 절차적, 객체 지향적 특징을 지닌다. 메모리 사용량이 적고 실시간 처리가 우수하여 주로 게임 내 탑재 언어로 쓰이고 있다.
2003년부터 개발하기 시작했고 zlib/libpng 라이선스를 가지고 있다. 개발 및 유지보수는 Alberto Demichelis가 맡고 있다.
특징
[편집]C 언어에 탑재(host)하여 동작하는 것을 목적으로 설계되었으며 빠른 실행 속도 및 다양한 플랫폼으로의 손쉬운 이식, 편리성이 특징이다. 또한 스크립트 라이브러리로 C 언어를 이용할 수 있다.
제작 동기는 처음에 루아의 클론에서 시작했으며 루아의 이질적인 문법과 기능의 제한을 확장하기 위해 스퀴럴이 제작되었다.
루아와 비교했을 때 다른 점을 들면 다음과 같다.
- C/C++의 형태를 가지고 있고
- 정수와 부동소수점(실수) 양쪽 모두 가지고 있으며
- 배열의 인덱스는 0부터 시작
- 테이블과 배열이 서로 다른 구조를 가지고
- 클래스를 가지며 클래스는 상속 가능 하다.
메모리 관리 방식은 기본적으로 참조 횟수 계산 방식(reference counting)을 사용하며 가비지 컬렉팅(garbage collection)도 사용한다.
기능
[편집]- 유동적인(dynamic) 자료형
- 대리자
- 클래스 & 상속
- 우선 순위 함수
- 제네레이터
- 협동 스레드 (코루틴)
- 재귀 호출 최적화
- 예외 처리 (try, catch, throw)
- 자동 메모리 관리 (참조 횟수 계산 방식, 가비지 컬렉팅)
- 약한 참조 횐수 계산
- 컴파일러 및 가상 머신을 합쳐 6k 정도의 C++ 코드로 구성
- 옵션으로 16비트 문자 코드(UTF-16 유니코드 대응) 사용 가능
문법
[편집]스퀴럴은 C/C++와 유사한 문법을 가진다.
스퀴럴로 구현한 팩토리얼
function factorial(x) { if (x == 0) { return 1; } else { return x * factorial(x-1); } }
난수 제조기 (코루틴)
function gen_random(max) { local last=42 local IM = 139968; local IA = 3877; local IC = 29573; for(;;) { //loops forever yield (max * (last = (last * IA + IC) % IM) / IM); } } local randtor = gen_random(100); for(local i = 0; i < 10; i += 1) print(">"+resume randtor+"\n");
클래스와 상속
class BaseVector { constructor(...) { if(vargc >= 3) { x = vargv[0]; y = vargv[1]; z = vargv[2]; } } x = 0; y = 0; z = 0; } class Vector3 extends BaseVector { function _add(other) { if(other instanceof this.getclass()) return ::Vector3(x+other.x,y+other.y,z+other.z); else throw "wrong parameter"; } function Print() { ::print(x+","+y+","+z+"\n"); } } local v0 = Vector3(1,2,3) local v1 = Vector3(11,12,13) local v2 = v0 + v1; v2.Print();
사용 소프트웨어
[편집]스퀴럴은 다음과 같은 소프트웨어가 사용하고 있다.
- 작은 임금님과 약속의 나라 파이널 판타지 크리스탈 크로니클 (Wii 웨어)
- Portal2
- Left4Dead2
- GTA Vicecity Multiplayer
- GTAIV's IV-MP
- Mafia II's M2-Multiplayer
- Alien Swarm
- Counter Strike: Global Offensive
- Shadow Warrior
- 동방빙의화
같이 보기
[편집]외부 링크
[편집]- 스퀴럴 웹사이트
- 스퀴럴 위키 Archived 2008년 8월 20일 - 웨이백 머신
- 오픈소스 게임 아카데미