스퀴럴 (프로그래밍 언어)

스퀴럴
패러다임스크립트, 명령형, 절차적, 객체 지향
설계자Alberto Demichelis
발표일2003년 9월 6일(21년 전)(2003-09-06)
최근 버전3.2[1] 위키데이터에서 편집하기
최근 버전 출시일2022년 2월 10일(3년 전)(2022년 2월 10일)
라이선스MIT 허가서
웹사이트http://www.squirrel-lang.org/
영향을 받은 언어
C, C++, 루아, 파이썬
영향을 준 언어
다오, MiniD

스퀴럴(Squirrel) 프로그래밍 언어는 스크립트 언어로 명령형, 절차적, 객체 지향적 특징을 지닌다. 메모리 사용량이 적고 실시간 처리가 우수하여 주로 게임 내 탑재 언어로 쓰이고 있다.

2003년부터 개발하기 시작했고 MIT 허가서를 가지고 있다. 개발 및 유지보수는 Alberto Demichelis가 맡고 있다.

특징

[편집]

C 언어에 탑재(host)하여 동작하는 것을 목적으로 설계되었으며 빠른 실행 속도 및 다양한 플랫폼으로의 손쉬운 이식, 편리성이 특징이다. 또한 스크립트 라이브러리로 C 언어를 이용할 수 있다.

제작 동기는 처음에 루아의 클론에서 시작했으며 루아의 이질적인 문법과 기능의 제한을 확장하기 위해 스퀴럴이 제작되었다.

루아와 비교했을 때 다른 점을 들면 다음과 같다.

  • C/C++의 형태를 가지고 있고
  • 정수부동소수점(실수) 양쪽 모두 가지고 있으며
  • 배열의 인덱스는 0부터 시작
  • 테이블과 배열이 서로 다른 구조를 가지고
  • 클래스를 가지며 클래스는 상속 가능 하다.

메모리 관리 방식은 기본적으로 참조 횟수 계산 방식(reference counting)을 사용하며 가비지 컬렉팅(garbage collection)도 사용한다.

기능

[편집]

문법

[편집]

스퀴럴은 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();

사용 소프트웨어

[편집]

스퀴럴은 다음과 같은 소프트웨어가 사용하고 있다.

같이 보기

[편집]

각주

[편집]
  1. “squirrel/HISTORY at master - albertodemichelis/squirrel - GitHub”. 
  2. “m2-multiplayer.com”. 《www.m2-multiplayer.com》 (영어). 2013년 1월 2일에 원본 문서에서 보존된 문서. 2018년 7월 6일에 확인함. 

외부 링크

[편집]