"루아"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
14번째 줄: 14번째 줄:
 
==기능==
 
==기능==
 
[[확장 언어]]와 [[스크립트 언어]]를 지향하고 있으며, 충분히 작아서 많은 플랫폼에서 사용할 수 있다. 루아는 [[불]] 값, [[숫자]](기본적으로 배정밀도 실수형), 그리고 [[문자열]]과 같은 적은 수의 [[기본 데이터형]]만을 지원하며, [[배열]], [[집합]], [[해시 테이블]], [[리스트]], [[레코드]]와 같은 전형적인 데이터 구조는 모두 연관 배열과 유사한 루아의 테이블 자료형으로 구현하고 있다. 이름 공간과 객체들 역시 이 테이블을 사용하여 표현할 수 있다. 최소한의 자료형을 사용함으로써 루아는 성능과 크기 사이의 균형을 맞추려는 시도를 하였다.루아에서 [[연산식]]들의 의미는 [[메타테이블]]에 있는 내장 함수들을 재지정해서 확장하거나 변경할 수 있다. 또한 루아는 [[고차원 함수]]나 [[가비지 콜렉션]]과 같은 고급 기능을 지원하고 있다. 이러한 많은 기능들을 사용하면 루아에서 객체 지향적인 프로그램이다.<ref name="역사"></ref>
 
[[확장 언어]]와 [[스크립트 언어]]를 지향하고 있으며, 충분히 작아서 많은 플랫폼에서 사용할 수 있다. 루아는 [[불]] 값, [[숫자]](기본적으로 배정밀도 실수형), 그리고 [[문자열]]과 같은 적은 수의 [[기본 데이터형]]만을 지원하며, [[배열]], [[집합]], [[해시 테이블]], [[리스트]], [[레코드]]와 같은 전형적인 데이터 구조는 모두 연관 배열과 유사한 루아의 테이블 자료형으로 구현하고 있다. 이름 공간과 객체들 역시 이 테이블을 사용하여 표현할 수 있다. 최소한의 자료형을 사용함으로써 루아는 성능과 크기 사이의 균형을 맞추려는 시도를 하였다.루아에서 [[연산식]]들의 의미는 [[메타테이블]]에 있는 내장 함수들을 재지정해서 확장하거나 변경할 수 있다. 또한 루아는 [[고차원 함수]]나 [[가비지 콜렉션]]과 같은 고급 기능을 지원하고 있다. 이러한 많은 기능들을 사용하면 루아에서 객체 지향적인 프로그램이다.<ref name="역사"></ref>
 +
 +
==내부==
 +
루아 프로그램은 직접적으로 [[인터프리트]]되지 않고, 바이트 코드로 컴파일되어 루아 [[가상머신]]에서 실행 된다. 컴파일 과정은 실행 시간에 사용자가 느끼지 못하게 시행되지만, [[로딩]]되는 시간을 줄여서 성능을 향상시키거나 컴파일러가 없는 메모리 사용량에 제약이 있는 환경에서 실행하기 위해서 미리 컴파일할 수도 있다.루아 가상머신은 다른 대부분의 가상머신이 스택 기반인 것과는 달리 CPU의 구조와 닮은 레지스터 기반이라서 실제 하드웨어 디자인과 유사성이 있다. 레지스터 기반의 가상머신은 값들을 과다하게 복사하는 것을 방지할 수 있고, 함수를 구성하는 명령어를 줄일 수 있는 것이 장점이다. 루아5(Lua 5)의 가상머신은 최초의 널리 사용되는 레지스터 기반의 가상머신 중 하나로 다른 두 개의 잘 알려진 [[레지스터]] 기반의 가상머신이 [[펄]]의 [[패롯]]과 [[안드로이드]]의 [[달빅]]이다.
  
 
{{각주}}
 
{{각주}}

2021년 8월 19일 (목) 12:05 판

루아(Lua)는, C언어, 자바, 자바스크립트, 파이썬과 같은 프로그래밍 언어 중에 하나이다.

300

개요

1993년에 개발된 프로그래밍 언어이며 이름은 달을 의미하는 포르투갈어 단어에서 따온거다.[1]

역사

브라질의 리우 데자네이로에 있는 교황청 대학교의 컴퓨터 그래픽 기술 그룹 회원인 루이스 엔리케 데피게이레두(Luiz Henrique de Figueiredo), 호베르투 이에루잘림스시와 발데마르 셀레스(Waldemar Celes)가 만들었다..[2]

버전

  • 5.0 버전 이전 : BSD 라이선스와 비슷한 라이선스에 따라 공개되었다.
  • 5.0 : MIT 라이선스에 따라 공개되고 있어서, 개인적으로나 상업적으로나 허락없이 사용하는 것이 가능하며, GNU같은 저작권 표시가 요구되지 않으나 사용 중 발생하는 문제에 관해서는 루아의 개발자 측에서는 책임을 지지 않으며, 루아를 사용함에 있어서 제품이나 문서 같은 곳에 루아 마크나 홈페이지로의 링크를 넣는 등 감사를 남겨줄 것을 권한다.[2]

기능

확장 언어스크립트 언어를 지향하고 있으며, 충분히 작아서 많은 플랫폼에서 사용할 수 있다. 루아는 값, 숫자(기본적으로 배정밀도 실수형), 그리고 문자열과 같은 적은 수의 기본 데이터형만을 지원하며, 배열, 집합, 해시 테이블, 리스트, 레코드와 같은 전형적인 데이터 구조는 모두 연관 배열과 유사한 루아의 테이블 자료형으로 구현하고 있다. 이름 공간과 객체들 역시 이 테이블을 사용하여 표현할 수 있다. 최소한의 자료형을 사용함으로써 루아는 성능과 크기 사이의 균형을 맞추려는 시도를 하였다.루아에서 연산식들의 의미는 메타테이블에 있는 내장 함수들을 재지정해서 확장하거나 변경할 수 있다. 또한 루아는 고차원 함수가비지 콜렉션과 같은 고급 기능을 지원하고 있다. 이러한 많은 기능들을 사용하면 루아에서 객체 지향적인 프로그램이다.[2]

내부

루아 프로그램은 직접적으로 인터프리트되지 않고, 바이트 코드로 컴파일되어 루아 가상머신에서 실행 된다. 컴파일 과정은 실행 시간에 사용자가 느끼지 못하게 시행되지만, 로딩되는 시간을 줄여서 성능을 향상시키거나 컴파일러가 없는 메모리 사용량에 제약이 있는 환경에서 실행하기 위해서 미리 컴파일할 수도 있다.루아 가상머신은 다른 대부분의 가상머신이 스택 기반인 것과는 달리 CPU의 구조와 닮은 레지스터 기반이라서 실제 하드웨어 디자인과 유사성이 있다. 레지스터 기반의 가상머신은 값들을 과다하게 복사하는 것을 방지할 수 있고, 함수를 구성하는 명령어를 줄일 수 있는 것이 장점이다. 루아5(Lua 5)의 가상머신은 최초의 널리 사용되는 레지스터 기반의 가상머신 중 하나로 다른 두 개의 잘 알려진 레지스터 기반의 가상머신이 패롯안드로이드달빅이다.

각주

  1. Lua〉, 《나무위키》
  2. 2.0 2.1 2.2 루아 (프로그래밍 언어)〉, 《위키백과》

참고자료

같이보기

{{}}