루아 소개
루아 소개 (Introduction)
루아(Lua)는 절차적 프로그래밍(procedural programming)을 지원하고 데이터 묘사(data description)를 위해 설계된 확장(extension) 프로그래밍 언어예요. 루아는 데이터 묘사 시설을 위한 깔끔한 구문을 제공할 뿐 아니라, 상당히 일반적인 프로그래밍을 위한 구조를 갖추고 있어요. 강력한 표현력에도 불구하고 루아는 여전히 작고 가벼운 언어예요. 루아는 한 대의 전용 하드웨어가 아니라 일반적인 소프트웨어보다 유연하고 가벼운 무언가가 필요한 "구성 파일"과 같은 애플리케이션에서 아주 널리 쓰여요. 루아는 내장(interned) 문자열, 가변 인자(vararg) 함수, 괜찮은 수준의 동적 타이핑 등과 같은 강력한 기능들을 갖추고 있지만, 테이블(table)은 루아에서 데이터 구조를 표현하는 유일한 메커니즘이자 사실상 "모든 것을 통합하는(universal)" 데이터 구조예요.
루아는 '완전하게 부드러운(completely soft)' 언어로, 수백 줄의 일반적인 프로그램을 담는 데 어울리지 않는 것은 그 자체 설계상의 결함(vice)이 될 정도로 가볍게 만들어졌어요. 동시에 루아는 충분히 강력해서 전체 게임을 작성하는 데 쓰이기도 해요.
루아가 데이터 묘사 언어로 사용될 때 아무런 애매함 없이 목표를 달성하려면, 두 가지 요소가 필요해요. 첫째, 작성 중인 "대상 언어(object language)"로 데이터를 기술하는 방법 — 즉 루아 테이블 구조체로. 둘째, 그런 표현을 애플리케이션이 쉽게 읽어들이도록 루아 테이블로 조립하는 프로그래밍 방식 — 즉 태그 메서드(tag methods)와 함께 모듈(module)로.
루아가 "구성(configuration)"에 사용될 때에는 애플리케이션이 프로그램을 읽고 해석(interpret)하도록 허용하기만 하면 되어요. 루아의 포괄적이지만 컴팩트한 구문은 이 목적에 뛰어나요. 루아를 구성에 사용할 때, 사용자는 루아를 단순한 독점(proprietary) 구성 언어로 생각해요. 만약 구문이 그들의 의도와 잘 맞는다면, 그들은 그것을 사용해 복잡한 애플리케이션을 만들 수 있어요.
본문
루아는 C로 구현된 소프트웨어로, 애플리케이션 프로그램에 내장(embedded)될 수 있도록 설계된 언어예요. 독립형(standalone) 루아 인터프리터가 제공되지만, 대부분의 목적에서 루아는 애플리케이션 내에서 사용돼요 — 임의의 평가식(expression)을 호출하거나, 미리 정의된 함수들의 집합을 노출하거나, 사용자가 정의한 코드의 일부를 실행하는 등의 방식으로요.
루아가 내장되도록 설계됐기 때문에, 루아는 단지 하나의 C 표준 헤더 파일과 동일한 파일 하나만으로 구현되는 "셀프-컨테인드(self-contained)" 언어예요. 독립형 인터프리터를 제외하면, 루아의 배포본(distribution)은 아무것도 요구하지 않고 또 아무것도 숨기지도 않아요.
전체 루아 5.4 배포본은 1만 8천 줄 이하의 코드로 이루어져 있으며, 이 코드를 지원하는 매뉴얼, 문서, 예제 프로그램이 함께 포함되어 있어요. 루아는 레지스터 기반 가상 머신(register-based virtual machine)을 사용하며 미리 정의된 크기의 스택 위에서 실행돼요. 루아는 부호 없는 64비트 정수와 64비트 배정밀도 부동소수점(double)으로 부동소수점 값을 표현해요. 루아 5.4는 내장 타입 기본값을 자유롭게 사용하도록 설계되었기에, 애플리케이션이나 라이브러리 작성자는 필요에 따라 루아의 데이터 타입 크기를 선형적으로 맞춤 조정할 수 있어요 (예: 작은 장치를 위해 32비트 타입으로).