Strict Standards: Non-static method Soojung::addReferer() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/settings.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/lifthrasiir/sites/sapzil.info/soojung/settings.php:79) in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Counter.class.php on line 63

Strict Standards: Non-static method Entry::getEntry() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/entry.php on line 51

Strict Standards: Non-static method Soojung::entryIdToFilename() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Entry.class.php on line 182

Strict Standards: Non-static method Soojung::queryFilenameMatch() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Soojung.class.php on line 55
TokigunStudio3 | 블로그: 세상에는 괴짜가 많다 (2)

내용으로 바로 넘어 가기


TokigunStudio3

228 / 3282   


더 이상 이 블로그는 운영되지 않습니다. 새 블로그로 가 주세요.

세상에는 괴짜가 많다 (2)

2004/08/13 AM 12:12 | [옛글] 내 생각, 내 느낌 | 0 comments | 0 trackbacks | AllBlog: vote, to pocket

일러두기: 이 글은 옛날에 사용하던 엔비 블로그에서 가져 온 것으로, 원문은 여기에서 볼 수 있습니다.

* 이 글은 두 포스트로 이루어져 있으며, 이전 포스트는 여기에서 볼 수 있습니다.


이 글은 "세상에는 괴짜가 많다 (1)"에 이어지는 글입니다.


3. esoteric programming language

기존의 프로그래밍 언어들과는 다른 철학이나 패러다임 등을 가지고 접근한 프로그래밍 언어들을 esoteric programming language(이하 EPL)이라 통칭합니다. (이 분류에는 수백 개의 프로그래밍 언어가 포함되어 있으며, 위키백과사전의 페이지에서 그 목록의 일부를 볼 수 있습니다.)

그 중 유명한-_- 것만 뽑으라면 Brainfuck, Funge(Befunge), Malborge, Unlambda, Whitespace를 들 수 있겠습니다. 이 다섯 개의 언어는 사실상 EPL이 가지고 있는 특성을 거의 모두 설명할 수 있는데, 대충 간단하게 소개하면 다음과 같습니다:

- Brainfuck: 명령이 여덟 개 뿐이고, 각각의 명령은 한 개의 특수 문자로 되어 있습니다. 명령어 포인터와 메모리 포인터를 지원하며, (이론적으로) 무한하고 0으로 채워져 있는 정수형 배열이 메모리로 사용됩니다. 조건부 반복문이 존재하며 표준 입출력에 읽고 쓰는 명령을 지원합니다.
- Funge(Befunge): 명령이 1바이트 문자로 되어 있으며, 코드가 2차원적으로 구성됩니다. (때문에 명령어 포인터와 함께 delta라 불리는 방향이 함께 필요합니다) 스택 기반의 메모리를 사용하며 표준 입출력에 읽고 쓰는 명령과 함께 프로그램 코드 자체를 고치는 명령도 있습니다. [1]
- Malborge: 여덟 개의 명령을 지원하며 아주 괴물딱지같은-_- 언어입니다. 코드 공간과 메모리가 같은 위치를 차지하기 때문에 사람이 직접 손으로 코드를 짤 수 없어서, HEllO WORld를 출력하는 첫 Malborge 프로그램은 lisp 프로그램으로 "생성"해야 했습니다. -_-;
- Unlambda: lisp를 아시는 분이라면 아마 쉽게 아실 거라 생각하는데, 완전 함수형 언어입니다. 딱 하나 다른 거라면 모든 함수가 1바이트 글자라는 것... 숫자와 같은 기본적인 것 조차 지원하지 않아서 숫자를 나타내는 함수 묶음-_-을 가지고 다녀야 할 정도로 아주 필수적인 것만 지원하는 작은 언어입니다.
- Whitespace: 모든 명령이 공백 문자(" ", 탭, 새 줄)인 언어입니다. 여러 개의 공백 문자들의 모음으로 한 명령을 나타내며, 스택과 힙 공간을 메모리로 사용합니다.

[1] 여기서 설명한 것은 Befunge-93이라 불리는 옛 버전이고, 후에 발표된 Funge-98에서는 스택으로 이루어진 이중 스택(Stack stack), 확장 명령 추가 등 상당히 많은 게 바뀌었습니다. 저야 둘 다 알고 있으니 상관 없지만 ;)

다음은 Befunge-93으로 제가(..) 짠 세벌식 자판 번역기입니다. (즉, 세벌식 자판으로 입력된 영문 문자열을 한글로 출력합니다) 코드의 흐름에 따라서 코드에 색이 입혀져 있으며, 실행하시려면 여기에 매뉴얼이 있으니 참고하시면 되겠습니다.

.tokinized 3-set final keyboard translator by Kang Seonghoon (17,620 bytes)


4. demoscene

마지막으로 소개할 것은 demoscene이라고 하는 일종의 문화입니다. 가장 간단하게 demoscene을 이해하려면 (제가 제대로 설명하는 건 지는 모르겠습니다만;;) 실행하면 어떤 정해진 스토리라인에 맞춰서 동영상과 음악이 실시간으로 출력되는 프로그램을 생각하면 되겠습니다. (1970년대 후반부터 이런 것들이 만들어지기 시작했고, 시간이 지나면서 이런 프로그램들이 하나의 문화로 자리를 잡아 가기 시작했다고 할 수 있습니다.) 이러한 demo scene 중에는 프로그램 크기가 4KB, 혹은 64KB 같은 특정한 크기 안에 들어 가는 아주 작은 프로그램도 있습니다만, 그렇다고 해서 그런 프로그램이 출력해 내는 결과가 별 것 아니라는 건 아닙니다. :)

예를 하나 들어 보겠습니다. 제가 처음 demoscene를 접한 것이... KLDP에서 다음과 같은 64KB demoscene을 본 게 최초였습니다.

.the product by Farbrausch, screenshot from theproduct.de (52,801 bytes) .the product by Farbrausch, screenshot from theproduct.de (40,980 bytes)
.the product by Farbrausch, screenshot from theproduct.de (50,946 bytes) .the product by Farbrausch, screenshot from theproduct.de (44,211 bytes)
.the product by Farbrausch, screenshot from theproduct.de (41,763 bytes) .the product by Farbrausch, screenshot from theproduct.de (32,350 bytes)
.fr-08, .the product by FarbRausch (2002)
* 갈무리는 제가 찍은 게 아니라 공식 사이트에 있는 걸 그대로 가져 왔습니다. ;;;
* 여기서 받을 수 있습니다. 파일 크기가 64KB(65,536 바이트)를 넘지 않는 걸 확인하고 실행시키세요. 전체 화면으로 실행되며, 윈도우즈에서 DirectX가 설치되어 있어야 합니다.

Farb-rausch라는 그룹(아마도 독일 사람들이 모여서 된 듯...)이 만든 .the product라는 작품입니다. 64KB임에도 불구하고 무려 10분 넘게 영상과 음악이 출력됩니다 -_-;; (그 퀄리티도 상당합니다) 이러한 것이 가능한 이유는, 일단 먼저 DirectX 같은 라이브러리가 있다는 것이고, 그 다음은 동영상과 음악이 "실시간으로 생성된다는 것"에 있습니다. (프로그램에는 텍스쳐, 카메라 라인, 객체 정보 등의 실시간 생성을 위해 필요한 데이터만이 있습니다. 그래서 프로그램 실행되기 전에 1분 정도 기다려야 하죠. -_-) 이러한 것들을 완벽하게 구현하려면 상당한 시간과 노력, 그리고 기술이 필요하겠지요.

비단 Farb-rausch 뿐만 아니라 다른 그룹도 많이 있습니다. (저는 Farb-rauschConspiracy를 좋아 합니다.) 또한 이런 사람들을 위한 party도 있습니다. (이름은 party지만 실제로 대규모로 진행되는 행사가 많습니다.)

다음은 이러한 demoscene에 대한 정보를 얻거나, demoscener들을 직접 만날 수 있는 곳들입니다:

- scene.org: 아마 demoscene에 관련된 사이트 중 가장 클 겁니다. (여기 한 번 서버 나갔을 때 scene.org에 자료 저장해 놓은 많은 demo group들이 당황했다는 얘기가 유명하죠)
- pouet.net: 여기 역시 demoscene들을 올리고 받을 수 있는 곳입니다.
- Orange Juice: demoscener들을 위한 정보와 포럼을 제공합니다.
- demoscene.info: demoscene에 대한 정의와 함께 관련 사이트들이 링크되어 있습니다.
- Farb-rausch temporary collection: demo group 중 하나인 Farb-rausch의 작품 목록입니다. (근데 여기는 언제 temporary 딱지를 뗄 지 -_-;)
- Haujabb: 10년이 넘는 역사와 그에 걸맞는 퀄리티를 자랑하는 demo group입니다.

최근에는 프로그래밍에 대한 지식이 없어도 demoscene을 만들 수 있는 툴들이 개발되면서(Farb-rausch의 Werkkzeug, Conspiracy의 a.D.D.i.c.t 등) 아이디어만 있어도 demoscene을 만들 수 있게 되었습니다. 기대되네요 :)



이렇게 해서 무지 길어서 저도 엄청난 시간을 투자해야 했던 (이거 하고 공부 하고 하느라 5시간 걸렸... 덕분에 포스트가 4개 밖에 없어요 T_T) 글을 마칩니다. 이 글을 통해서 좀 더 다양한 geek의 세계(?)에 빠져 보시길 바랍니다. :D

덧. 아슬아슬하게 12시가 넘어서 12일의 포스트는 세 개 뿐입니다. 쿨럭.


2004년 8월 18일 16시 55분에 덧붙임: 여기에 트랙백을 보냈습니다.

TrackBack URL: http://sapzil.info/soojung/trackback.php?blogid=379

Copyright (c) 1995-2005, Kang Seonghoon (Tokigun).