루아 튜토리얼 시작하기

 

루아의 튜토리얼을 시작해보겠습니다.

 

스크립트 언어는 쉬운 접근성 때문에 묘한 매력이 있죠?

 

스크립트 언어를 배우기 위해서 비장한 각오같은 것은 하지 않아도 됩니다 😀

 

그냥 타이핑을 치는 기분으로 시작하는게 좋습니다. 그게 재미있으면 한 시간도 할 수 있고 두 시간도 할 수 있는게 스크립트 랭귀지 입니다~

 

'나는 지금부터 엄청난 코딩을 할거야' 라는 무거운 마음자세 보다는 그냥 편안하게 한컴타자를 치는 것 처럼 타이핑과 프로그램의 리액션을 즐긴다고 생각하면 이게 일이 아니라 재미있는 놀이가 됩니다.

 

루아는 기존 언어를 다루어 본 사람이나 그렇지 않은 사람이나 빠른 적응이 가능하다는 장점이 있습니다.

 

한국에는 대중적으로 소개가 되지 않았지만 해외에서 루아를 많이 사용하는데 초등학생들도 루아를 합니다;;

 

그것도 잘해요. 로블록스에서 게임개발하여 돈도 잘 벌고...

 

사실 초등학생부터 루아를 잘 할 수 있는 것은 대부분 모국어가 영어이거나 영어권인 유럽의 친구들입니다. 그러니 혹시라도 주눅들 필요는 없어요. 루아가 한글로 나왔다면 한국의 초등학생이 더 잘할 것입니다.

 

루아 인터프리터

그럼 바로 인터프리터를 열고 시작해 보겠습니다.

 

루아 최신버전의 파일명은 lua54 입니다. 루아를 설치하지 않았다면 아래 링크를 참고해서 설치합니다. 참고로 루아는 무료 프로그램입니다.

 

루아(lua) 프로그래밍 언어 설치하기 테스트 | 인터프리터 사용법과 비주얼 스튜디오 코드 설정 | 윈도우 10 (tistory.com)

 

* 시작은 언제나 Hello 출력으로 해봅니다.

 

시작 단계에서는 데니스 리치의 전통을 지켜야죠.

print("Hello My Friend!")

이렇게 보니 역시 스크립트 언어인 파이썬의 문법과도 닮았네요. 아니 루비와 닮은지도... 어쨋든 print ("내용") 이거는 누구나 쉽게 할 수 있습니다. 


사칙연산도 해볼까요? 인터프리터를 종종 계산기 처럼 사용합니다. 계산기 프로그램이 있어도 인터프리터에서는 복잡한 식을 만들기 쉬워서 익숙해지면 이 만한 계산기가 없어요. 그냥 타이핑 하면 됩니다.

 

정적 타입 프로그래밍 언어에서 나누기 할 때 보통 나머지나 소수점을 잘라 버리는데 루아는 나누기도 64비트 실수로 해버립니다. 한가지 주의할 점은 3.333333... 같이 무한이 반복되는 소수 (수학에서 순환소수라고 하는)의 경우 64비트에 저장하는 것은 택도 없기 때문에 아래의 예처럼 일정한 자리에서 잘라버립니다. 나누기를 할 때 마다 자료의 유실이 있기 때문에 주의합니다.

 

 

변수의 선언도 그냥 "a = 숫자" 이런 식으로 사용할 수 있습니다. 동적타입의 언어는 컴파일러(인터프리터)가 알아서 수를 놓고 추론해서 할당합니다. 루아는 두 종류의 숫자 타입이 있는데 정수형과 실수형 정도로 볼 수 있습니다. (정확히는 정수형과 부동소수점 수)

 

어떤 변수에 숫자를 할당하면 둘 중 하나의 형태로 저장합니다. 64비트 정수, 64비트 소수. 64비트란 1과0을 저장하는 비트(bit) 64개를 하나로 묶은 단위입니다. 

 

0000 0000 0000 .... 이렇게 0이 64개 줄지어 있는데 이를 이진수에서 10진수로 계산하면 다음과 같은 숫자 범위를 사용할 수 있습니다. 이게 루아에서 사용가능한 정수형의 범위입니다. 음수도 사용해야 하니까 이를 반으로 나눈 숫자의 - 에서 + 까지 사용할 수 있습니다.

 

일단 세보지 않아도 매우 큰 숫자임을 알 수 있죠. 절대 부족할 것 같지 않습니다.

 

 

hello world 에서 본 것 처럼 print 함수를 가지고 여러가지 형식으로 계산결과를 출력할 수 있습니다.

 

계산기라고 생각하고 잠깐 가지고 놀면 금방 익숙해집니다. 제곱 연산자 ^도 있어서 유용합니다.

 

 

* 루아 예약된 키워드(Lua Reserved Keywords)

 

아래의 단어들은 루아에서 예약된 키워드입니다. 키워드란 루아 인터프리터가 사용하기 때문에 사용자가 이 이름들을 가지고 뭔가 변수나 함수를 만들면 충돌이 일어나서 사용할 수 없는 단어들입니다.

 

잘 보면 대부분 다른 언어에도 있는 키워드들입니다.

 

키워드는 루아의 문법(syntax) 이기 때문에 사용자 정의 식별자(변수이름, 함수이름 등)에 사용할 수 없습니다.

 

and  break  do  else  elseif 
end  false  for  function  if 
in  local  nil  not  or 
repeat  return  then  true  until 
while        

*참고: Lua 5.1 Reference Manul

 

 

* 루아 주석 (Lua Comments)

 

주석은 한줄 주석 -- 과 여러줄 주석이 있습니다.

 

--[[ ]] 주석 스타일은 C나 다른 언어와 다르니까 주의합니다.

 

비주얼 스튜디오 코드를 사용한다면  Ctrl + / 의 단축키로도 주석처리를 사용할 수 있으니 편리합니다.

-- Comment 주석

--[[ multiline comment
    print("Multiline comments")
    print("Multiline comments")
]]

print("Hello Lua!")

 

* 글로벌 변수

 

글로벌 변수는 변수 이름만 입력하면 됩니다. 글로벌이란 전역변수를 의미하는데 변수의 한 종류입니다. 기본적으로 nil 값으로 초기화합니다. (아래 nil 설명)

 

 

 

* 타입(type) 함수

type 함수는 변수의 형식을 알아냅니다.

 

루아는 동적 타입(dynamic type)의 스크립트 언어기 때문에 사용자가 자료형을 정의하지 않습니다.

 

실행시간(runtime)에 인터프리터가 추측하여 자료형을 결정한다는 뜻 입니다.

 

아래의 type 함수 예를 보면 숫자는 number 로 통일되어 있고 nil 이란게 있고 불린형이 있고 문자열 string 도 있고 꽤 다양하네요.

 

 

* nil 닐

 

전역변수를 선언하면 처음에 nil 값이 주어집니다.

 

이는 쓸모있는 값이 없다는 뜻이며 다른 언어의 null 과 비슷합니다.

 

전역변수를 사용한 후 초기화 시키기 위해서도 사용할 수 있습니다.

 

위에 예약된 키워드에 nil 이 들어 있었죠.

 

Boolean 식에서 nil 은 false 값을 갖습니다.

 

C언어 계열에 익숙하다면 루아의 Boolean 형이 혼란스러운 이유가 좀 보입니다.

 

루아에서 0이 true 값을 갖는다는 것이 좀 특이합니다. nil 이 false 고 나머지 숫자들은 true 라는... 이 규칙은 나중에 다시 볼 필요가 있을 것 같네요.

 

정리

스크립트 언어인 루아를 시작해 봤습니다. 셸 인터프리터를 써보면 파이썬과도 닮은 점을 찾을 수 있는데 쉽게 익힐 수 있다는 것이 큰 장점입니다. 아직 한국에서는 사용자가 적지만 매력있는 언어고 배우는데 많은 시간이 필요하지 않으니까 가벼운 마음으로 한번 배워보는 것도 좋습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band