루아 레퍼런스 매뉴얼 — 도입
루아 레퍼런스 매뉴얼 — 도입 (Introduction)
도입
루아(Lua)는 이 매뉴얼이 설명하는 스크립트 언어예요. 이 도입부에서는 루아가 어떤 언어인지, 어떤 특징을 갖고 있는지 한눈에 보여드릴게요. 어떤 프로그램에든 끼워 쓸 수 있는 확장 언어이면서, 그 자체만으로도 제대로 돌아가는 독립 언어라는 점이 루아의 큰 매력이죠. 그럼 하나씩 살펴볼게요.
본문
루아는 강력하고, 효율적이며, 가벼운, 다른 프로그램에 끼워 쓸 수 있는(임베디드 가능한) 스크립트 언어예요. 절차적 프로그래밍은 물론, 객체 지향 프로그래밍, 함수형 프로그래밍, 데이터 주도 프로그래밍, 데이터 기술까지 두루 지원하죠.
루아는 단순한 절차적 문법을, 연관 배열(associative array)에 기반한 강력한 데이터 기술 구성과 확장 가능한 의미론 위에 결합한 언어예요. 루아는 동적 타입(dynamic typing)을 사용하고, 레지스터 기반 가상 머신의 바이트코드를 해석하는 방식으로 실행되며, 세대별 가비지 컬렉션(generational garbage collection)을 갖춘 자동 메모리 관리를 제공해요. 덕분에 설정(configuration), 스크립팅, 빠른 프로토타이핑에 아주 잘 어울리는 언어랍니다.
루아는 표준 C와 C++의 공통 부분집합인 클린 C(clean C)로 작성된 라이브러리 형태로 구현돼 있어요. 루아 배포판에는 lua라는 호스트 프로그램이 포함되어 있는데, 이 프로그램이 루아 라이브러리를 사용해 대화형·배치용으로 쓸 수 있는 완전한 독립형 루아 인터프리터를 제공해요. 다시 말해 루아는, 확장 스크립트 언어가 필요한 어떤 프로그램이든 끼워 쓸 수 있는 강력하고 가벼운 언어로, 또 그 자체로 완결된 강력하되 가볍고 효율적인 독립 언어로 쓰이도록 만들어진 언어예요.
확장 언어로서 루아에는 "main" 프로그램이라는 개념이 없어요. 루아는 호스트 클라이언트에 임베디드(embedded)된 채로 동작하는데, 이 호스트를 임베딩 프로그램(embedding program) 또는 그냥 호스트(host)라고 불러요. (흔히 이 호스트가 독립형 lua 프로그램이죠.) 호스트 프로그램은 함수를 호출해 루아 코드 한 조각을 실행할 수 있고, 루아 변수를 읽고 쓸 수 있으며, 루아 코드가 부를 수 있도록 C 함수를 등록할 수도 있어요. 이렇게 C 함수를 활용하면 루아를 다양한 영역에 맞게 확장할 수 있고, 결국 같은 문법적 틀을 공유하는 맞춤형 프로그래밍 언어를 만들어 낼 수도 있게 되죠.
루아는 자유 소프트웨어(free software)이며, 라이선스에 명시된 대로 통상적인 방식대로 아무 보증 없이 제공돼요. 이 매뉴얼이 설명하는 구현은 루아 공식 웹사이트인 www.lua.org에서 구할 수 있어요.
다른 참조 매뉴얼들처럼, 이 문서도 곳곳이 딱딱해요. 루아 설계 뒤에 담긴 결정들에 대한 논의가 궁금하다면 루아 웹사이트에 공개된 기술 논문을, 루아 프로그래밍에 대한 자세한 입문서가 필요하다면 Roberto의 저서 Programming in Lua를 찾아보세요.
더 알아보기 (Learn more)
- Lua 5.4 Reference Manual (전체)
- Lua 공식 웹사이트
- 2장 "Basic Concepts" — 루아의 기본 개념 (다음 챕터)