본문 바로가기
구분없는 카테고리

프로그래밍 코드(programming code)로 시(poem) 쓰기

by 초코우유 ∽ blog 2014. 1. 29.

학창시절, 누구나 시 한 편쯤 써본 적이 있을 것이다. 삼행시 같은 간단한 시라도 말이다. 시를 쓸 때 필요한 것은 무엇일까? 종이, 펜, 감성? 스탠포드대학교와 시적연산학교(School for Poetic Computation, SFPC)에서는 아니다. 이 두 학교에서 시를 쓰려면 컴퓨터가 필요하다. 프로그래머 시인을 찾기 때문이다.

코드 포이트리 슬램

융합학문을 가르치는 스탠포드 DLCL(Division of Literatures, Cultures, and Languages)은 지난해 12월27일부터 오는 2월12일까지 프로그래머 시인을 찾는 ‘코드 포이트리 슬램’을 열고 있다. 지난해 11월 첫 대회에 이어, 이번이 2번째이다. 코드 포이트리 슬램이란 C++, 루비, 자바와 같은 프로그래밍 언어로 시를 쓰는 대회이다. 시 결과물은 사람이 읽거나 볼 수 있도록 만들어야 한다. 프로그래밍 코드와 시 내용은 한 편의 시와 같아야 한다. 예를 들어 끝 단어를 똑같이 맞춰 운율을 살리거나, 문장의 길이를 맞추고, 형식도 시 구조를 따라야 한다.

프로그래밍으로 시를 쓴다니, 선뜻 이해되지 않는다. 참가자들도 처음에 시란 무엇인지, 프로그래밍 언어란 무엇인지 스스로 정의를 내려야 한다. 스탠포드 DLCL은 프로그래밍 시가 무엇인지 3가지로 정의했다. 물론 참가자들은 스탠포드대가 제안한 정의에서 확대된 또 다른 시를 만들 수 있다. 아래 1회 수상작을 보며 프로그래밍 시란 어떤 건지 살펴보자.

■ 글자가 아닌 음악, 영상으로 표현되는 시

제1회 코드 포이트리 슬램 1등 작품은 ‘Say23′이라는 시였다. 스탠포드대 컴퓨터과학을 전공한 레슬리 우는 ‘루비’언어로 ‘Say23′을 프로그래밍했다. 레슬리는 시상식 시연을 위해 구글글래스를 활용했다. 그녀는 코드 16줄을 큰 소리를 읽었고, 구글글래스는 레슬리가 말한 내용을 그대로 컴퓨터에 입력했다. 루비코드를 실행하면 컴퓨터는 구약성서인 시편 23 글자를 다운로드하고,  시편 23 찬송가가 흘러나온다. 이 찬송가는 레슬리 우가 특정 단어를 조합해 새로 만든 찬송가이다. 찬송가는 3가지 다른 목소리로 실행된다.

[소스코드]

Say 23
#!/usr/bin/env ruby
require ‘rubygems’ # gratitude
require ‘nokogiri’ # arigato
h=Nokogiri::HTML
(`curl http://www.biblegateway.com/passage/?search=Psalm+23&version=KJV&interface=print`)
.css(“.text”).text.split(/\W/)
%w(Zarvox Princess Cellos).each{|v|`say -v #{v}
#{[9,7,9,123,9,42,55,118,104,108,6,7,100,10,95,96,86,76,120,72,106,107,63,32,42]
.map {|i|h[i]}.join(‘ ‘)}`}

[결과화면]

‘Say23′ 유튜브 동영상 보기

레슬리는 이 작품을 만드는 데 2~3시간을 투자했다. 그녀는 “시를 만드는 것보다 시를 어떻게 청중에게 보여줄지 더 많이 고민했다”라고 밝혔다. 레슬리 작품은 다른 참가자와 달리 소리로 시를 표현했는데, 그 부분이 1등을 하는데 큰 공을 세웠다. 심사위원 커트 베르너는 “컴퓨터 언어 ‘루비’와 사람의 언어인 영어를 동시에 사용한다는 점이 매우 흥미롭다”라고 심사평을 밝히기도 했다.  그녀는 1월17일 전화인터뷰에서 “운율은 시가 가진 가장 큰 특징”이라며 “마치 시 스스로가 목소리를 내어 노래하는것처럼 만들었다”라고 밝혔다. 레슬리는 “이 대회를 통해 인문학과 기술을 결합을 생각해볼 수 있는 좋은 기회였다”라며 “다시 한 번 대회에 도전하고 싶다”고 밝히기도 했다.

lesley_woo

“융합 사고는 창조성의 원동력”

제1회 코드 포이트리 슬램 경연대회 출품작을 살펴보면 가장 눈에 띄는 작품이 있다. 레슬리 우가 만든 ‘Say23’이다. 단순히 1등 작품이어서가 아니다. 다른 참가들은 대부분 글자 위주의 시를 만들어낸 것에 비해, 레슬리 작품은 소리로 시를 만들었기 때문이다. 다른 작품들은 시 내용을 강조했지만, 그녀는 형식에 주목했다. ‘Say23′ 동영상만 유일하게 유튜브에 올라온 것도 그 때문이다. 그녀는 17일 인터뷰에서 “코드 포이트리 슬램은 매우 흥미로웠던 작업”이라며 “프로그래밍 언어로 시를 써 보면, 프로그래머들은 이제껏 하지 않았던 새로운 것을 창조해 낼 수 있을 것”이라고 말했다.

레슬리는 현재 스탠포드대학에서 컴퓨터과학을 전공하는 박사과정 학생이다. 그녀는 모바일, 의학, 컴퓨팅을 융합한 기술을 연구한다. 2013년 11월 그녀는 학교 벽에 붙은 코드 포이트리 슬램 포스터를 우연히 보았다. 호기심에 출전했던 대회는 그녀에게 1등을 안겨줬다. 수년 동안 프로그래밍과 씨름했던 그녀에게 ‘Say23’을 만드는 것은 그리 어렵지 않았다. 실제로 이 대회는 참가자들에게 정교한 프로그래밍 기술을 요구하기보단 독특한 아이디어를 활용하기를 원한다. 짧은 코드로 표현할 수 있는 프로그램은 한계가 있기 때문이다.

“Say23을 만드는 데 불과 2~3시간밖에 걸리지 않았어요. 오히려 시를 발표할 때 어떤 식으로 보여줄지에 대해 더 많이 고민을 했죠.” 그녀는 최종 후보 명단에 오른 후 심사위원에게 어떻게 이 시를 소개할지 고민했다. ‘프로그래밍 소스를 그냥 읽으면 청중들이 지루해하겠지.’ 그렇게 생각해 낸 것이 구글글래스다. 구글글래스 안에는 음성인식 기능이 있어 코드를 읽으면 바로 문자로 변환해주기 때문이다.

레슬리 우는 구글글래스 음성인식 기능으로 코드를 컴퓨터로 입력하면서 화면에 ‘Say23′ 코드내용을 보여줬다. 화면에 코드를 뿌려주면 ‘Say23′이 얼마나 짧은지도 보여줄 수 있었다. 그녀는 “시기 때문에 분량이 짧아야 한다고 생각했다”라며 “C++같은 다른 언어로 프로그래밍할 수 있었지만, 루비언어를 사용했을 때 코드가 가장 짧았다”라고 루비언어를 선택한 이유를 설명했다.

레슬리는 “코드 포이트리 슬램을 통해 프로그래밍에 언어를 어떻게 정의해야 하는지 깊게 생각해 볼 수 있었다”라고 밝혔다. 대회 참가자들은 프로그래밍 언어를 어떻게 정의하는지부터 시작했다. 어떤 참가자는 들여쓰기나 꺾쇠, 괄호가 반복되는 스타일을 프로그래밍 시의 핵심 개념으로 봤고, 다른 참가자는 시 내용에 위트와 중의적인 해석을 넣기도 했다. 레슬리는 ‘Say23′에 리듬과 음악을 넣었다. “프로그래밍 언어가 가진 ‘논리’와 시가 가진 ‘운율’을 강조하고 싶었어요.”

다음 대회에 대한 욕심도 숨기지 않았다. “시를 프로그래밍한다는 것은 융합적인 사고를 가능하게 해 줍니다. 인문학, 기술, 예술 등 다양한 관점을 생각하다보면 기존에 없던 새로운 것을 만들게 되는 것 같아요.”

레슬리 우는 졸업 후 의학컴퓨팅 기술 분야에서 일할 예정이다. 그녀는 “프로그래밍 시를 만드는 것처럼 미래에도 인문학과 예술을 복합적으로 사고하는 프로그래머가 되고 싶다”라고 바람을 내비쳤다.

Leslie_Wu

▲레슬리 우

■ 운율과 규칙을 가진 시

또 다른 수상작인 ‘모든 것을 바꾼 남자’는 C언어로 만들어진 시다. 아래 코드를 실행하면 아래와 같이 글자가 화면에 나온다.

[소스코드]

code_poetry_slam02_re

[결과화면]

code_poetry_slam

이 작품 ‘The Man who Changed Everything’은 컴퓨터로 쓰인 시를 영어로 통역해 준 형식을 내세웠다. 고등학생인 에이쉐 싱(ashank singh)이 제출한 작품이다. 시 내용은 C언어 창시자인 ‘데니스 리치’에 대한 이야기다. 본인의 생각을 운율에 맞춰 창작한 작품이다. 실제 사람들 앞에서 발표할 때는 시 내용을 컴퓨터가 읽도록 별도로 준비했다.

■ 프로그래밍 문법으로 만든 시

‘기대와 연기’(Expect_Delays)는 10줄짜리 시다. 실제 이 코드 자체는 작동하지 않는다. 프로그램 소스 자체가 시다.

[소스코드 & 결과화면]

code_poetry_slam03

이 시는 자바언어로 표현됐다. 프로그래밍 문법에 맞춰 작성됐다. 이 시를 프로그래밍 문법에 맞춰 해석해 보자. ‘she_smiles_for_me’라는 함수가 실행되면, ‘beat’라는 글자가 화면에 8640만밀리초(86400초) 동안 뜬다. 이것을 다시 영어 문법에 맞춰 해석하면 “그녀가 나를 보고 웃으면(she smiles for me) 내 심장이 86400초(24시간)동안 잠이 안 올 정도로 두근거린다”가 된다. ‘while, true, sleep()’이란 프로그래밍 문법을 영어 문법에서도 적용할 수 있도록 해 중의적인 해석을 끌어냈다.

코드 포이트리 슬램은 컴퓨터음악 이론을 전공하는 커트 제임스 베르너와 독일학을 전공하는 멜리사 케이건이 만든 대회다. 이번이 2번째이지만 이들은 매 분기마다 코드 포이트리 슬램을 개최할 예정이다. 두 창립자는 “시적 허용을 프로그래밍 언어에 실현시키면서 그 가능성을 살펴보고 싶었다”라고 대회 취지를 설명했다. 베르너는 스탠포드대학 교내 신문사 인터뷰에서 “코드 포이트리 슬램은 컴퓨터과학 전공자들에게 꽤 인기가 높다”라며 “폴 헤르츠란 학생은 다른 지역에서 살고 있어 코드를 인터넷으로 제출하고 발표는 영상통화로 진행하기도 했다”라고 코드 포이트리 슬램에 대한 높은 반응을 소개했다.

시적연산학교(School for Poetic Computation, SFPC)

시적연산학교(SFPC)는 2013년 11월 예술과 프로그래밍을 가르쳤던 교수 5명이 함께 만든 학교다. 올해 안에 2번째 학기를 시작할 계획이다. 수업은 10주 동안 진행되며, 프로그래밍 수업과 예술수업으로 나뉜다. SFPC 창립자 중 한 명인 최태윤 교수는 “SFPC에서는 프로그래밍 과정이 마치 시를 쓰는 과정과 비슷하다”라며 “시를 읽고 감동하는 것처럼, 누군가가 프로그래밍 결과물을 보고 감동할 수 있다”라고 설명했다.

이 학교에서 처음 진행하는 수업은 ‘프로그래밍 언어 만들기’다. 이 과정에서 학생들은 프로그래밍 언어에 대해 자신들의 정의를 다른 학생들과 공유하게 된다. 어떤 학생은 프로그래밍 언어는 연산법에 기초했다고 생각하고, 다른 학생은 0과1로 이루어진 이진법이 중요하다고 생각한다. 또 다른 학생은 문법 구조가 가장 중요하다고 생각할 수도 있다. 이런 다양한 가치관을 기반으로 학생들은 자신만의 프로그래밍 시를 만들어낸다.

대부분의 수업은 학생 참여 위주로 이루어진다. 지난 학기 학생들 가운데 절반은 디자인을, 절반은 프로그래밍을 전공했다. 학교는 학생들에게 영감을 주는 것을 가장 큰 목표로 둔다. 최태윤 교수는 “SFPC는 학생들에게 단순한 프로그램을 만들거나 예술작품을 만드는 걸 원하지 않는다”라며 “소프트웨어나 하드웨어로 비유적 표현을 하고, 예술에 논리적 구조를 부여하는 작업을 하기를 원한다”라고 설명했다.

아래 SFPC 학생들의 작품을 보면서 프로그래밍 시가 어떻게 하드웨어와 결합하는지 알아보자.

■ 매연감지 장치

폴 창이라는 중국 학생이 만든 ‘헤이지’라는 작품은 매연을 감지하는 마스크이다. 이 마스트 안에는 센서와 LED 장치가 달려 있어, 공기 농도가 나빠지면 불이 깜빡깜빡 들어온다. 실제 상용화를 염두에 두고 만들었다면 아래처럼 긴 부리모양으로 만들지는 않았을 것이다. 폴 창은 일부러 새 부리모양을 만들어 여기저기 정처 없이 돌아다니는 자신의 모습을 표현했다. 그는 ‘헤이지’를 가지고 중국을 돌아다니는 모습을 영상에 담았는데, 중국 환경오염 문제를 지적하기 위한 퍼포먼스로 활용하기도 했다.

SFPC_HAZE

■ 한글 발음 알려주기

김민선이라는 한국학생이 만든 ‘해킹한글’이란 작품은 외국인에게 훈민정음 소리를 알려주는 프로그램이다. 화면에 제시한 한글을 보고 소리를 내면, 컴퓨터가 입모양을 따로 녹화한다. 그 다음 키보드에 해당 자음이나 모음키를 누르면 그에 맞는 한글 소리가 스피커로 나온다. 김민선 씨는 이 작품을 만드는 데 3주가 걸렸다고 밝혔다. 그녀는 인터뷰에서 “프로그래밍 시를 쓰는 데 꼭 높은 프로그래밍 실력이 필요한 것은 아니다”라며 “기존 틀을 깨고 새로운 방식으로 자신의 생각을 보여주는 것이 진정한 프로그래밍 시라는 것을 깨달았다”라고 설명했다.

SFPC_Hackinghangul