{{위키데이터 속성 추적}}
'''린든 스크립트 언어'''(Linden Scripting Language, '''LSL''')는 [[린든 랩]](Linden Lab)이 운영하고 있는 [[가상 세계]]인 [[세컨드 라이프]](Second Life)에서 사용자가 사용할 수 있는 [[스크립트 언어]]이다. LSL을 써서 Second Life에서 객체의 동작을 제어할 수 있고, 또한 [[전자 메일]], [[XML-RPC]], [[Hypertext Transfer Protocol|HTTP]] 요청 전송을 통해 외부 [[인터넷]] 통신도 행할 수 있다.

LSL은 문법 구조가 [[C 언어]]와 가까운 매우 [[형식 시스템#강한 타입과 약한 타입|강한 타입]] 언어이다. [[유한 상태 기계]](Finite-state machine, [[유한 오토마타]])를 모델로 한 "상태-[[이벤트 기반 프로그래밍|이벤트 기반]] [[스크립트 언어]](state-event driven scripting language)"라고 할 수 있다.

== LSL 구조 ==
스크립트는 [[변수 (프로그래밍)|변수]], [[함수 (프로그래밍)|함수]] 정의, 1개 이상의 상태(State)로 구성된다. 각 상태는 그 상태에 있을 때 일어난 사건에 어떻게 반응하는가로 설명한다.

기본 데이터 형식은 [[정수]], [[부동 소수점|부동소수점 실수 타입]], [[문자열]], 키([[전역 고유 식별자|UUID]]), [[벡터]](3차원 위치 및 [[RGB]] 색깔 표현), 회전([[사원수]](四元數, quaternion))가 있다. 또한 배열 형식이나 구조에 해당하는 것으로, 기본 데이터 형식을 요소로 하는 [[리스트 (추상 데이터 형)|리스트]] 형식이 있다. 내장 함수는 2010년 3월 현재 350개가 있고, 사용자는 필요에 따라 사용자 정의 함수를 정의할 수 있다.

== 실행 환경 ==
스크립트는 Second Life의 가상 세계에 배치된 의자와 벽 등의 개체에 배치되고 실행된다. 시스템 스크립트 이벤트(타이머, 이동, 아바타, 채팅, 이메일, 다른 개체와 충돌)을 전송하고, 그 결과 스크립트는 상태 천이를 일으키거나 다른 개체나 아바타와 대화를 하게 된다.

스크립트는 개체에 추가되는대로 시작된다. 개체가 가상 세계에 배포되는 한, 소유자가 로그인하지 않은 상태에서도 실행은 계속된다. 소유자가 개체를 철거하여 자신의 인벤토리로 옮겨서 가상 세계에 재배치하는 경우에도 스크립트 상태가 보존된다. [[파일 (컴퓨터)|파일]] 또는 [[데이터베이스]] 같은 영속적인 데이터 저장 장치는 제공되지 않지만, HTTP 요청 통신을 이용하여 Second Life 외부에 데이터를 저장할 수 있다.

개체는 여러 스크립트를 포함할 수 있고, 그들을 동시에 실행할 수 있다. 독립형 스크립트에서 사용할 수 있는 메모리 공간은 64[[키비바이트|KiB]] 이하로 제한된다. 각 스크립트는 [[바이트 코드]] 실행 파일에 [[컴파일러|컴파일]]되고 린든 랩의 서버에서 [[모노 (소프트웨어)|Mono]]을 이용한 [[가상 머신]]에서 실행된다.

일부 내장 함수는 부하에 따라 0.2초 ~ 20초의 지연(delay)을 설정하고 있으며, 많은 부하가 필요한 함수의 연속 실행이 제한된다. 이것은 스크립트가 시스템 자원에 과도한 부담을 주지 않도록 하기 위해서이다.

== LSL 스크립트의 예 ==
다음은 일종의 '[[Hello world 프로그램]]'이다. <code>default</code>라는 상태에 <code>state_entry</code>와 <code>touch_start</code>라는 2가지 이벤트가 기술되어 있다. 각 이벤트가 발생할 때, <code>"Hello, Avatar!"</code>나 <code>"Touched"</code>가 표시된다.

 <span style='color:darkred'>default</span>
 <span style='color:black'>{</span>
   <span style='color:darkblue'>state_entry</span><span style='color:black'>()</span>
   <span style='color:black'>{</span>
     <span style='color:darkred'>llSay</span><span style='color:black'>(</span><span style='color:black'>0</span>"<span style = 'color : green'>Hello, Avatar!</span>"<span style='color:black'>)</span>;
   <span style='color:black'>}</span>
   <span style='color:black'></span>
   <span style='color:darkblue'>touch_start</span><span style='color:black'>(</span><span style='color:green'>integer</span> <span style = ' color : black '>total_number)</span>
   <span style='color:black'>{</span>
     <span style='color:darkred'>llSay</span><span style='color:black'>(</span><span style='color:black'>0</span>"<span style = 'color : green'>Touched.</span>"<span style='color:black'>)</span>;
   <span style='color:black'>}</span>
 <span style='color:black'>}</span>

== 같이 보기 ==
* [[세컨드 라이프]](Second Life)
* [[린든 랩]](Linden Lab)
* [[모노 (소프트웨어)|Mono]]

== 외부 링크 및 관련 자료 ==
* {{언어링크|ko}} [https://web.archive.org/web/20091219225257/http://wiki.secondlife.com/wiki/LSL_Portal/ko Second Life LSL 포털] &mdash; 린든 랩이 운영하는 공식 Wiki
* {{언어링크|en}} [https://web.archive.org/web/20100915001650/http://wiki.secondlife.com/wiki/Mono Mono for Second Life] &mdash; Information regarding the move to Mono
* {{언어링크|en}} [https://web.archive.org/web/20091123080728/http://lslwiki.net/lslwiki/wakka.php?wakka=HomePage LSL Wiki] &mdash; A community effort to supplement the available LSL documentation
* {{언어링크|en}} [https://web.archive.org/web/20061207091842/http://forums.secondlife.com/forumdisplay.php?f=54 LSL forum] &mdash; Second Life LSL forum
* {{언어링크|en}} [https://web.archive.org/web/20100619211243/http://xahlee.org/sl/ls-prob.html Linden Scripting Language Problems] &mdash; Criticism by Xah Lee
* {{언어링크|en}} [https://web.archive.org/web/20100306044941/http://secondlife.mitsi.com/cgi/llscript.plx Linden Scripting Language Script Repository] &mdash; Anyone can edit and contribute scripts.
* {{언어링크|en}} [[wikia:secondlife:The Book of Script|The Book of Script - Second Life Wikia]]

* {{언어링크|en}} {{서적 인용
|제목=Scripting Your World: The Official Guide to Second Life Scripting
|저자=Dana Moore, Michael Thome, and Dr. Karen Zita Haigh
|출판사=WILEY
|ISBN=978-0-470-33983-1}}

[[분류:세컨드 라이프]]
[[분류:스크립트 언어| Linden Scripting Language]]