본문 바로가기

만들기 / Programming/MAXMSP,Jitter

Max의 특징

1-2. Max의 특징

Max의 특징은 무엇보다도 프로그래밍 언어라는 것이다. Max는 시퀀스 소프트웨어도, 워드 프로세서도, 비디오 에디팅 소프트웨어도, 브라우저도 아니다. 어플리케이션을 사용하여 가능한 정도의 것이라면 Max를 사용할 필요도 없을 것이다. 그러면 도대체 Max로 무엇이 가능할까?
확실히 힘주어 말하지만, 어플리케이션으로 가능하지 않은 많은 것들이 가능하다. 어플리케이션에서는 불가능한 것을 실현시키기 위해서 Max가 생겨났다고도 생각해 볼 수 있다.
예를 들어서 문장을 쓰고 싶을 때에는 워드 프로세서를 사용한다. 워드 프로세서는 문장을 작성하기 위한 도구이다. 그러나 워드 프로세서에서 작성하기 힘든 문장을 생각해 냈다고 해 보자. 한 문장마다 색을 달리 하는 문장이다. 수작업으로 문자의 색을 지정하는 것은 가능할 지라도 그것이 장문이라면 현실적으로는 불가능하다. 워드 프로세서의 개발자에게 부탁하여도 그와 같은 기능을 만들어 줄 것 같지는 않다.
만약 이미 사용법에 익숙해진 워드 프로세서라면 매크로 기능 등을 이용하여 원하는 기능을 스스로 만들 수도 있을 것이다. 여기에 더해서 한 글자마다 색을 바꾸는 새로운 도구를 만들고 싶은 때에는 방법이라곤 프로그래밍 밖에 없다. 만들기 위한 도구가 프로그래밍 언어인 것이다.

프로그래밍 언어의 필요성은 음악 제작이나 영상 제작과 같은 창조적인 분야에 있어서야 말로 점점 더 필요성이 대두될 것이다. 다기능이라 할지라도 기존의 어플리케이션으로는 실현 불가능한 것이 있고, 그것만으로는 만족할 수 없는 것이 있다. 기존의 어플리케이션은 많은 사람들이 필요로 하는 기능의 최대 공약수를 갖추고 있는 것에 지나지 않다. 따라서, 모든 어플리케이션을 모아 놓았다 할지라도 당신이 필요로 하는 모든 요구가 충족될 가능성은 전혀 없다. 이는 논리적으로도, 현실적으로도 있을 수 없는 일이다.
따라서 도구를 만드는 도구, 이를테면 프로그래밍 언어가 필요해진다. 단, 필요한 도구는 간단히 작성 할 수 있는 것을 조건으로 한다. 도구를 만들기 위해 수 개월이 걸린다면 주객전도 일 것이다. 필요한 도구를 만들어 실제의 제작을 행하는 것이 목적이고 도구를 만드는 것 자체가 목적은 아니기 때문이다. 이는 직업적인 프로그래머나 연구자에게 맡겨 놓자. 우리들이 필요로 하는 것은 우리들이 바라는 도구를 아주 빨리 만들 수 있는 도구이며, 바로 그것이 Max라는 사용하기 쉬운 프로그래밍 언어인 것이다.

그러면 프로그래밍 언어로서의 Max의 구체적인 특징을 열거해 보자.
- 에디터나 인터프리터, 디버거 등을 갖춘 통합적인 개발 환경인 점
- 오브젝트 지향의 그래픽컬 프로그래밍 언어인 점
- 표준적인 수순에 의한 빠르고 간단한 프로그래밍
- 프로그램의 동작 원리가 심플하고 이해하기 쉬운 점
- 습득이 용이하고 단계적으로 프로그래밍 능력을 높여 나갈 수 있는 점
- 프로그램의 작성 편집과 실행을 연속적으로 행할 수 있어, 개발 효율이 좋은 점
- 헬프나 어시스턴트 등 프로그래밍을 보조해 주는 기능이 충실한 점
- 멀티미디어 관련 기능이 풍부하고 충실한 점
- Max 또는 C 언어에 의해 기능을 확장 할 수 있고 서드 파티의 활동도 활발한 점
- 독립하여 실행 가능한 어플리케이션을 작성할 수 있는 점

세세하게 수많은 특징들을 열거하는 것은 불가능 하겠으나, 지금까지 열거한 것만으로도 Max가 얼마나 탁월한 프로그래밍 언어인지 이해할 수 있을 것이다. 비슷한 특징을 갖고 있는 다른 프로그래밍 언어도 있지만, Max 만큼의 레벨로 현실적인 성과를 얻을 수 있는 예는 드물다고 생각한다.

여기서 프로그래밍 언어를 소개할 때마다 약방의 감초처럼 등장하는 예제를 살펴 보도록 하자. “hello, world!” 의 표시이다.
먼저 Max의 파일 메뉴의 new 에서 patcher 를 선택한다. 그러면 윈도우가 나타나고 그 상단에 오브젝트 팔레트가 보일 것이다. 거기서 팔레트의 가장 왼쪽 아이콘을 클릭하여 오브젝트 박스를 선택한 다음, 윈도우 위에 클릭 해 보자. 그러면 new object list 가 표시 될 것이고, 그 안에서 print를 선택한다.
이렇게 해서 print 오브젝트를 작성했다면, 다음에는 이전과 같이 오브젝트 팔레트의 두 번째를 클릭하고 메시지 박스를 선택한다. 윈도우 위를 클릭하면 이번에는 메시지 박스에 직접 hello world 라고 타이핑 해 보자.
Hello world 라고 쓰여진 메시지 박스의 왼쪽 아랫 부분을 클릭하여 그 상태 그대로 드래그 한 다음 프린트 오브젝트의 왼쪽 윗 부분에서 마우스 버튼을 놓는다. 이와 같이 하면 hello world 에 메시지 박스 오브젝트와 프린트 오브젝트가 실선으로 연결 될 것이다. 이것으로 프로그래밍은 완료 된다.


그림 1-2-1. hello world 를 표시하는 Max 프로그래밍

그러면 이 프로그램을 실행시켜 보자. 먼저 윈도우의 close 박스의 오른쪽에 있는 자물쇠 버튼을 클릭하면 팔레트가 사라질 것이다. 그리고 hello world 를 클릭하면 Max라는 이름의 윈도우에 hello world 가 표시된다. 문장으로 설명을 하면 길어지지만, Max에 익숙해진 사람이라면 이 정도라면 1분도 걸리지 않는다. 이것이 Max의 프로그래밍 방법이며, 프로그램의 동작 원리이기도 하다.

그림 1-2-2. Hello world 표시하는 프로그램의 실행

전문에도 쓰여져 있지만 여기서의 hello world 나 프린트는 오브젝트라고 불리우고 실선은 패치 코드라고 불리운다. 그리고 오브젝트와 오브젝트를 패치 코드로 연결하는 것이 프로그래밍이 된다. 오브젝트를 클릭한 경우와 같이 어떠한 동작에 의해 오브젝트로부터 메시지가 발생한다. 메시지는 눈에 보이지는 않으나 패치 코드를 통해 다른 오브젝트로 전달된다. 메시지를 받아들인 오브젝트는 물론 어떠한 동작을 행한다. 구체적으로는 이것이 Max의 프로그래밍 동작 원리가 된다.

여기까지 읽은 사람은 이제 Max의 프로그래밍을 이해한 것이다. 아무리 복잡해 진다 하여도 모든 Max 프로그램은 오브젝트와 패치 코드로 구성되고 오브젝트로부터 오브젝트로 메시지를 보내는 것으로 프로그램이 동작한다. 이 정도면 Max가 얼마나 심플한 프로그램인지 이해할 수 있을 것이다. 그 다음은 세세한 룰과 다채로운 오브젝트를 이해하는 것뿐이다. 원래 오브젝트의 수가 상당히 많은 편이기 때문에 중요한 오브젝트를 파악하는 데에도 적지 않은 시간이 걸리게 된다.

그러면 Max의 결점에 대해서도 거론해 두자. 이는 앞서 언급한 Max 특징의 이면이기도 하고 이를 개선하는 것은 다소 어려울 지도 모른다. 따라서 Max의 특징을 이해하는 것과 함께 Max의 제약사항과 Max의 불편한 점을 의식하면서 프로그래밍을 행하는 것도 좋을 것이다.

- 인터프리터 방식이기 때문에 실행 속도가 느린 점
- 오브젝트나 메시지의 수가 너무 많은 점
- 구조화의 기능이 약한 점
- 에러에 대하여 리커버리 기능이 빈약한 점
- 디버거의 기능이 빈약한 점
- 문자열 조작과 데이터 베이스 조작 등이 빈약한 점
- 작성한 어플리케이션의 파일 사이즈가 크고 실행 속도가 향상되지 않는 점

이와 같은 결점이 있음에도 불구하고 종합적으로 판단하여 볼 때, Max는 비전문가를 위한 매력적인 프로그래밍 언어라고 할 수 있다. 기본적인 처리의 습득은 간단하지만 그 끝은 깊고 다양한 가능성으로 충만해 있다.
Max에서는 간단한 프로그래밍으로부터 시작하여 점차 고도의 내용으로 확장하여 나갈 수가 있다. 처음부터 무리하여 접근할 필요는 없다. 자기 자신에게 부담이 가지 않는 범위 내에서 Max를 활용할 수 있는 것이다. 단 Max도 프로그래밍 언어인 이상 논리적인 생각에 의해 계통을 세운 합리적인 어프로치가 필수적이다. 수학적인 기초 지식과 컴퓨터의 동작 원리에 대한 이해도 필요해 질 것이다. 물론 음악을 제작하기 위한 경우에는 음악에 대해서도, 화상을 제작하기 위한 경우에는 화상에 대한 감성과 지식을 빼 놓을 수 없을 것이다. 반복되는 이야기지만 Max는 도구를 만들기 위한 도구이다. 게으름뱅이를 위해 자동적으로 모든 것을 만들어주는 만능 기계가 아니다. 따라서 어떠한 것도 하지 않으면 어떠한 것도 생기지 않는다. Max에 열의를 갖고 접근하는 것이야 말로 Max를 이해하고 활용하는 최대의 추진력이 될 것이다.

'만들기 / Programming > MAXMSP,Jitter' 카테고리의 다른 글

오브젝트의 작성  (0) 2008.10.04
프로그래밍방법  (0) 2008.10.04
Max의 역사  (0) 2008.10.04
포트(Ports)  (0) 2008.10.04
미디(MIDI)  (0) 2008.10.04