액션스크립트

1 개요

2000년 7월 1.0 버전으로 플래시 5를 통해 세상에 선보인 프로그래밍 언어이다. 초창기엔 단순히 애니메이션을 조작하는 수준의 간단한 언어였지만, 점차 발전을 거듭해 현재 액션스크립트 3.0은 하나의 뛰어난 프로그래밍 언어라고 봐도 무방한 수준까지 발전했다. 여담이지만, 특이한 게 플래시에서 나온 언어라 그런지 책이나 인터넷 강좌 등에선 Hello, world! 출력부터 하고 시작하는 다른 언어들과는 달리, 애니메이션을 조작하는 play(), stop() 등의 메서드부터 시작한다.

2 액션스크립트 1.0 (ActionScript 1.0) (AS 1.0)

매크로미디어 사에서 개발한 최초의 액션스크립트. 액션스크립트의 시작이다. 절차지향 언어라 하기도 애매하고 객체지향 언어라고 하기에도 애매하지만, 실제로 코드를 작성해 보면 그다지 어려운 언어가 아니며, 오히려 배우기 쉽다. 특징중에 하나로 메소드와 프로퍼티를 구분하기 위해 모든 프로퍼티 이름 앞에는 _(언더바)가 들어간다는 건데, 애당초 메소드와 프로퍼티는 호출하는 방법부터가 다르기 때문에 그냥 삽질이다(...).
코드를 해석하는 데에 쓰는 가상 머신은 AVM1을 사용한다.

3 액션스크립트 2.0 (ActionScript 2.0) (AS 2.0)

AS 1.0처럼 매크로미디어 사에서 개발한 것으로, AS 1.0에서 여러 기능이 추가되고, 개선되었다. 가상 머신은 전 버전처럼 AVM1를 사용하기에 AS 1.0과 어느 정도 호환이 된다. 내장 클래스가 생기고, PHPJavaScript와의 연동 등으로 점차 확대되어 플래시가 웹에서의 입지를 굳혀 나가면서 자연스럽게 이 때에 많은 액션스크립트 입문자가 생겼다.
몇몇 영세규모 업체들(가끔 찌라시나 현수막 같은걸로 광고하는 "홈페이지 XX만원에 만들어 드립니다!!" 같은 곳)에서는 아직도 현역인데, 그 이유는 이게 현역이던 시절에 어딘가에서 예제 등으로 나온 스크립트를 퍼오긴 했는데 정작 이걸 고칠 줄은 몰라서. 그냥 개발자를 채용하라고!!

CC 버전부터는 더 이상 지원하지 않는다. 거기다 여기에 대응되는 플래시 플레이어인 15.0 버전부터 AVM1이 제거되었기 때문에 기존의 AS 2.0 기반 플래시 파일이 제대로 작동하지 않아서 헬게이트가 열려버렸다(...)

4 액션스크립트 3.0 (ActionScript 3.0) (AS 3.0)

2005년에 어도비 사가 매크로미디어를 인수한 이후 개량이라고 쓰고 새로 만든다고 읽는다을 하여 2007년에 세상에 나온 JIT 언어이다. 언어 구조가 JavaScript와 비슷하며,[1] 기존의 2.0과는 완전히 달라서 실력있는 프로그래머들은 웃고[2] 입문자들은 울었다.[3] 사실 프로그래밍에 경험이 있는 사람들에게는 약간 주먹구구식인 느낌이 있었던 2.0보다는 새로 변경된 3.0 쪽의 문법이 훨씬 합리적으로 느껴질 것이다.

AS 3.0은 가상 머신으로 AVM2을 사용하는데, AS 1.0에서 조금 개선되었을 뿐인 AS 2.0과는 달리...
기존 버전과 호환이 전혀 안된다.
기본적인 속성값이나 메서드 등은 같기에 사용이 되긴 하지만, 버튼 클릭이나 마우스 오버 등 이벤트 처리를 심볼 안에서 해결할 수 없다! 일일이 타임라인 또는 별도의 클래스 파일에 코딩을 해서 연결시켜야 하는데, 여기를 제외한 곳에는 AS를 코딩할 수 없게 해놨기 때문. 익숙하지 않은 사람은 번거로움을 넘어서 현기증이 난다.

그래도 기존 개발자들이 3.0을 쓸 수 밖에 없게 만드는 엄청난 장점이 하나 있다. 바로 속도. 어도비 측의 주장으로는 2.0에 비해서 속도가 10배 빠르다고 하며, AS 3.0의 정규 표현식 속도는 JavaScript의 1.5배다. 더욱이 단순 계산이라면 AS 2.0의 몇백 배를 넘는다.

그리고, 클래스의 도입 등. 이전 버전보다 좀 더 객체지향적인 언어로 발전하였다. 그 외에도 2.0에서 줄기차게 써 재끼던 _(언더바)가 사라지고 컴파일러는 엄격해졌다. 변수 선언도 반드시 먼저해야 되게 바뀌었지만, 예외는 있다.('var'를 쓰지 않고 특정 위치에 대입하는 경우)

이런 이유로 액션스크립트 3.0은 뜨는 해가 되고 2.0은 지는 해가 되었다. 몇 년이 지난 지금, 액션스크립트 2.0의 자리를 거의 밀어내고 현역으로 뛰고 있기는 한데... 전체 프로그래밍 언어에서의 점유율을 본다면 그저 안습(...)이다.어둠의 루트를 타고 이용하는 사람은 많지만(...).

거기다가 플래시 CC부터는 아예 3.0을 쓸 수밖에 없게 되었으므로 어지간해서는 3.0으로 짜자.

5 사용되는 곳

액션스크립트는 주로 플래시 플레이어에서 사용되지만, 플래시 플레이어 뿐만 아니라, 플래시 항목에서 볼 수 있는 플래시 파생 기술들(FLEX, AIR, 플래시 라이트 등)에서도 기능은 조금씩 다르지만 공통적으로 사용된다.
  1. 아닌게 아니라 AS 3.0의 언어 규격은 ECMAScript 4 표준 제안서에 기초한다. ECMA 3판에 기초하는 현행 자바 스크립트에 가까운 문법을 가지고 있다는 이야기. 실제로 JavaScript로 만든 소스를 AS 3.0으로 옮겨보면 의외로 손댈 데가 별로 없다. 다만, 객체지향과 관련한 부분에서는 자바의 모델을 가져온 부분도 존재해서 자바와 비슷하다고 볼 수도 있다.
  2. 더욱 기능이 확장되고 자유로워져서.
  3. AS2.0와 비교해서 난이도가 상대적으로 높아졌기 때문에. 문법적으로 엄격해져서 플래시 제어를 위한 스크립트 언어라기보다는 일반화된 프로그래밍 언어의 냄새가 짙게 난다. 물론 C++이나 Java에 비하면 양반이겠지만... 특히 C++는 다중상속까지 있다 특히 버튼에다가 직접 코딩을 할 수 없기 때문에 플짤 제작자들은 여전히 AS 2.0 사용자가 많다.