본문 바로가기

프로그래밍(TA, AA)/스크립트

[스크립트] 루아스크립트 알아보기

루아(Lua) 프로그래밍 언어는 가벼운 명령형/절차적 언어로, 확장 언어로 쓰일 수 있는 스크립팅 언어를 주 목적으로 설계되었습니다. 그러나 알고리즘적 설계(테이블 등)가 많이 내재되어 있고 인터프리터(언어 실행기)로만 코드뭉치를 실행할 수 있어, 선언형 언어로도 볼 수 있습니다.


루아는 확장 언어와 스크립트 언어를 지향하고 있으며, 충분히 작기 때문에 많은 플랫폼에서 사용할 수 있습니다. 루아는 bool 값, 숫자(기본적으로 배정도 실수형), 그리고 문자열과 같은 적은 수의 기본 데이터형만을 지원하며, 배열/집합/해시테이블/리스트/레코드와 같은 전형적이 데이터 구조는 모두 연관 배열과 유사한 루아의 테이블 자료형으로 구현하고 있습니다. 이름 공간과 객체들 역시 이 테이블을 사용하여 표현할 수 있습니다. 최소한의 자료형을 사용함으로써 루아는 성능과 크기 사이의 균형을 맞추려는 시도를 하였습니다.


루아에서 연산식들의 의미는 메타테이블에 있는 내장 함수들을 재지정해서 확장하거나 변경할 수 있습니다. 또한 루아는 고차원 함수나 가비지 컬렉션과 같은 고급 기능을 지원하고 있습니다. 이러한 많은 기능들을 사용하면 루아에서 객체지향적인 프로그램을 만들 수 있습니다.



내부 구조


루아 프로그램은 직접적으로 인터프리트되지 않고, 바이트 코드로 컴파일되어 루아 가상 머신에서 실행됩니다. 컴파일 과정은 실행 시간에 사용자가 느끼지 못하게 시행되지만, 로딩되는 시간을 줄여서 성능을 향상시커나 컴파일러가 없는 메모리 사용량에 제약이 있는 환경에서 실행하기 위해서 미리 컴파일할 수도 있습니다.


루아 가상머신은 다른 대부분의 가상머신이 스택 기반인것과는 달리 CPU의 구조와 닮은 레스터 기반이라서 실제 하드웨어 디자인과 유사성이 있습니다. 레지스터 기반의 가상머신은 값들을 과다하게 복사하는 것을 방지할 수 있고, 함수를 구성하는 명령어를 줄일 수 있는 것이 장점입니다. Lua5의 가상머신은 최초의 널리 사용되는 레지스터 기반의 가상머신 중 하나이며, 다른 두 개의 잘 알려진 레지스터 기반의 가상머신이 Perl의 패롯(Parrot)과 Android의 달빅(Dalvik)입니다.



루아는 특히 게임에서 많이 사용됩니다. (ex. MMORPG 월드오브워크래프트의 사용자 인터페이스, 캐릭터 애니메이션, 게임상의 세계의 외관 / 바이오웨어 네버윈터 나이츠에서 모듈 스크립팅 언어로 사용) 또한, 이 Lua 언어를 기반으로 한 CoronaSDK카라는 소프트웨어가 있는데, 이를 사용하면 IOS와 Android(게임) 개발을 쉽고 빠르게 할 수 있습니다. 요즘에는 Cocos-2d에서도 lua언어를 지원한다고 합니다.




출처: http://tylerneylon.com/a/learn-lua/


루아 15분에 배우기