Lifove Story

글쓰기와 코딩 본문

Lifove Programming

글쓰기와 코딩

Lifove 2017. 6. 24. 05:50

나에게 밥 안먹고 밤새면서 할 수 있는 두 가지가 글쓰기와 코딩이다. 나를 가장 능동적이게 하는 일들이기 때문이다. 글을 읽거나 다른 사람의 발표를 듣는 것, 영화를 보거나 음악을 듣는 것...별로 재밌거나 특이점이 없으면 지루해서 쉽게 잠이 온다. 하지만 글쓰기와 코딩은 내가 능동적일 수 있다는 것, 그래서 내가 살아 있음을 느끼게 해주는 일종의 쾌감 같은 것이 있다. 그래서 꽂히면 밥 거르고 밤새면서까지 몰두한다.

그렇다고 내가 글을 잘 쓰거나 코딩을 잘 한다고 말하기는 어렵다. 즐길 줄 아는데 잘 쓰고 못 쓰고는 사실 크게 중요한 문제는 아니라고 생각한다. 또 글을 쓰고 코딩을 하는 소기의 목적을 달성할 수 있으면, 잘 쓰고 못 쓰고는 큰 의미가 없다. 한글을 막 배우신 연로하신 할머니가 아들에게 쓰는 장문의 편지를 볼 때 할머니가 글을 잘 쓰셔서 우리가 감동 받기 보다 진심때문에 감동 받는 것 처럼...

글쓰기와 친해지게 된 것은 편지쓰기 때문이다. 소심한 성격에 사람들 앞에서 내 생각을 말로 전달하는 것은 부끄럽고 부담스러운 일이다. 하지만, 나도 사람인지라 내 생각과 감정을 다른 누군가에 간절히 전달하고 싶을 때가 있다. 말은 실수하기 쉽고 긴장과 부끄러움이라는 의도하지 않은 나의 불안함과 어색함을 함께 전달한다. 글은 여러번 다시 읽어 보면서 나의 미묘한 생각들이 잘 표현 됐는지 수없이 뜯어 고칠 수 있다. 그래서, 편지쓰기는 소통에 대한 나의 욕구를 해소할 수 있는 유일한 통로였다. 내 미묘한 생각과 감정을 알아 줬으면 하는 누군가에게, 진심이 담긴 편지가 수없이 전달되었다.

글을 잘 쓴다는 것은 글의 목적에 따라 기준이 다를 것이다. 보통 책을 많이 읽은 사람들이 글을 잘 쓰고 말도 잘한다. 풍부한 지식과 멋드러진 표현을 담은 문장들을 많이 봤기 때문에, 지식과 수려한 표현이 가득한 문장을 쓰고 말할 수 있는 것이다. 하지만 편지쓰기는 내 생각과 감정의 미묘함을 잘 전달 할 수 있으면 되기 때문에, 해박한 지식이 필요하진 않다. 수려한 문장도 필요하지 않다. 대신 나의 진심과 생각에 대해, 수신인이 알아먹기 쉬운 표현력과 전달력이 필요할 뿐이다. 표현력과 전달력이 단지 글에만 국한될 필요도 없다. 상대가 나의 편지를 고생하며 읽기 바라면서, 띄어쓰기를 하지 않고 편지를 쓴적도 있다. 나의 심란함과 불편한 심기를  띄어쓰기를 제거하는 형식을 이용해 표현한 것이다. 편지를 쓴 후 돌아오는 답장이나 상대방의 행동을 보면, 표현력과 전달력이 좋은지 안좋은지 금방 알 수 있다. 편지쓰기를 수없이 하면서, 자연스럽게 표현력과 전달력이 훈련 됐다. 내 글쓰기는 편지로 훈련받은 문장들로 쓰여진다. 그래서 잘 쓰여진 책과 같은 지식과 미려함은 찾아볼 수 없다. 오히려 문법이 틀릴 때도 많고, 어색한 표현도 드문드문 나오기도 한다. 어쩌다 문장이 길어지다 싶으면, 지나치게 쉼표도 많이 넣는다. 끊어 읽어야 할 위치까지 세세하게 알려주려고 하는 친절함이 아니라, 거기서 쉬어서 읽어야 내 감정을 잘 읽을 수 있다는 일종의 강요이기도 하다. 끊어 읽어야 하는 부분에서 그냥 개행 하는 스타일로 편지와 글을 쓰기도 한다.

재밌는 것은 코딩도 나에게는 일종의 편지쓰기와 같다. 편지를 쓰는 이유가 내 생각과 감정을 알아주고, 더 나아가 편지를 받는 누군가가 나에 대한 어떤 행동이나 태도의 변화에 대한 기대 때문인 것 처럼, 내가 코딩을 하는 이유도 0, 1만 아는 컴퓨터가 내가 원하는 것을 행동으로 했으면 하는 바램 때문이다. 습득한 언어로 편지를 쓰듯, 프로그래밍 언어로 기계에게 쓰는 편지가 나에게는 코딩이다. 좋아하는 누군가에게, 마음이 불편한 누군가에게, 나의 생각과 감정을 전하는 한 쪽도 안되는 편지를 쓸 때도 내 생각과 감정이 100% 전달이 될 때까지 몇 시간씩 시간을 쏟아 붓는다. 수정을 계속 반복한다. 컴퓨터는 단순하고 정직해서, 내가 하고자 하는 바를 100% 정확하게 알려주지 않으면 오류를 만들어 낸다. 나는 정확하게 코딩했다고 생각하는데, 의도한 대로 행동하지 않으면 그 문제를 찾기가 굉장히 어려울 때가 있다. 어떨 때는 이미 작성한 몇 백 줄이나 되는 코드를 다 지우고 새로 짜기도 한다. 어서 내가 원하는 대로 작동됐으면 하는 바램 때문에 밥도 잠도 아무 소용이 없는 것이다. 이런 점에서 글쓰기와 코딩은 나에게 같은 일이다.

글이 운문과 산문이 있듯 운문식 코딩으로 작성된 코드도 있고 산문식 코딩으로 작성된 코드도 있다.

코드 1

int totalSum = 101*50;

System.out.println("Total Sum = " + totalSum);

이공계 출신이고 코딩을 한 번이라도 해본 사람은 이게 뭐하는 코드인지 금방 알 수 있을 것이다. 혹시 잘 모르겠다면, 다음 코드는 뭐하는 코드인지 쉽게 이해할 수 있지 않을까 싶다.

코드 2

int totalSum = 0;

for(int i=1; i <= 100; i++){

totalSum = totalSum + i;

}

System.out.println("Total Sum = " + totalSum);

두 프로그램 모두 1부터 100까지 합을 구하는 코드이다. 최종 출력은 Total Sum = 5050이다. 코드 1을 나는 운문식(시, poem) 코드라 부르고, 코드 2는 산문식(소설, 수필 등) 코드라 부른다. 코드 1은 저게 왜 1부터 100까지 합을 구하는 코드인지 모를 수도 있다. 코드 2는 1도 있고 100도 있고 더하기가 있는 것을 보고 1부터 100까지의 합을 구하는 건가 보다라고 누구나 쉽게 생각할 수 있을 거라고 생각된다. 코드 1은 (1+100) + (2+99) + ... (50+51)의 합 그러니까 101이 50번 반복됐다는 설명을 하지 않으면, 코드 2와 같은 값을 구하는 코드라고 생각하기 쉽지 않다. 혹시 이 설명도 이해가 안간다고 걱정할 필요는 없다. 원래 소설보다 시는 이해하기 어려우니까...

작가 중에 소설가, 수필가, 시인이 있듯이, 코딩하는 스타일에 따라 시인과 같은 프로그래머와 소설가, 수필가와 같은 프로그래머가 있다. 스타일과 형식의 차이이지 누가 더 프로그램을 잘짠다 운문식 코딩이 좋다 산문식 코딩이 좋다 딱 잡아서 이야기 하기 어렵다. 물론, 짧은 메시지로 큰 영향력과 파급력을 가진 운문을 문학의 정점으로 생각하는 사람들도 있을 수 있다. 또, 실제로 시를 쓰는 건 어렵기도 하다. 코드 1처럼 처음에 봤을 때 뭐하는 코드인지는 모르지만, 컴퓨터 입장에서는 덧셈을 100번 하는 것 보다 곱셈 한 번 하는게 아무래로 일을 덜하는게 된다. 그런데 요즈음은 컴퓨터 성능이 엄청 좋아서, 곱셈을 한 번 하든 덧셈을 100번 하든 사용자들은 그 차이를 느낄 수가 없다. 대신 코드를 관리하는 입장에서는 코드 2가 무슨 작업을 하는 코드인지 이해하기 쉬워서 나중에 코드를 변형하거나 수정하기 쉽다. 상황에 따라 다 장단이 있다. 요즈음 같이 웹사이트, 스마트폰 앱등 사용자 인터페이스가 중요한 어플리케이션의 경우는 산문식 코드로 짤 수 밖에 없다. 메뉴 버튼을 누르고 확인 버튼을 누르고 등등 인간의 어플리케이션 사용 진행에 따라 프로그램이 짜여져야 하기 때문이다. 산문이, 시는 할 수 없는, 자세한 스토리 텔링을 할 수 있는 것과 같은 이치이다.

운문식 코드의 장점은, 코드의 양을 획기적으로 많이 줄일 수 있고, 컴퓨터를 좀 덜 힘들게 할 수 있다. 하지만, 주석을 잘 달아놓지 않으면, 왜 그렇게 코딩을 했는지, 이해하기가 어렵다. 소수의 사람들만 코드를 보고 이해하고 감탄을 할 수 있다. 운문식 코딩을 잘하는 사람은 보통 수학을 잘하는 사람들이다. 같은 작업을 하는 코드를 나는 100줄에 걸려 짠다면 운문식 코딩을 하는 사람들은 3-4줄에 작업을 끝낼 수도 있다. 앞에서도 이야기 했지만 어떤 코드가 더 나은지 이야기하는 것은 상황에 따라 다르다. 하지만, 운문식 코딩을 짤 수 있는 사람이 대단해 보이는 건 어쩔 수 없다. 운문식 코드를 짜는 사람은 산문식 코드를 짤 수 있지만, 산문식 코드를 짜는 사람이 운문식 코드는 능숙하게 작성하지 못할 수도 있기 때문이다.

운문, 산문을 들먹이며 코딩에 대해 이야기 하는 가장 큰 이유는 문법을 알고 언어를 사용하는 사람 누구든지 글을 쓸 수 있듯이, 요즘과 같은 정보화 시대에 코딩은 누구나 할 수 있고 또 할 수 있어야 한다고 생각하기 때문이다. 물론 기자, 소설가, 시인 처럼 글쓰기를 업으로 삼고 사는 사람이 있듯이, 코딩을 업으로 삼고  사는 사람들이 있다. 하지만, 요즈음 같은 시대에는, 누구든지 마음만 먹으면 소설을 쓰고, 시를 쓸 수 있다. 이게 어렵다더라도 최소한 일기나 편지는 쓸 수 있다. 마찬가지로, 누구나 코딩을 할 수 있다라고 생각한다.

혹시 글쓰기와 문학은 인문계열, 컴퓨터와 코딩은 공학계열이라는 이분법적 사고를 하고 있다면 생각을 고쳐먹을 필요가 있다. 내가 봤을 때 글쓰기에 재능이 있는 사람은 문법 등의 프로그래밍 언어 기초를 배우면, 코딩도 기똥차게 할 수 있고 글쓰기에 쾌감을 느껴본 사람이라면 코딩에서도 동일한 쾌감을 느낄 수 있다라고 알려주고 싶다.

우리는 글을 통해 사람들과 소통을 한다. 코딩도 결국에는 사람과 소통하는 일이다. 중간에 컴퓨터가 매개로 역할을 할 뿐이다. 내가 만든 프로그램으로 컴퓨터가 무언가를 하고 다른 사용자나 내가 그것을 이용한다. 이런 점에서 코딩은 특별히 인문학의 범주에도 들어갈 수 있지 않을까라는 생각도 해본다.

코딩운문식 코딩

문과생으로 고등학교를 보낸 후, 대학교 1학년 때 들었던 기초과목 중 하나가 언어학 개론 수업이었다. 구조주의 언어학자 촘스키에 대해 배우고, Syntactic Structure이런 것들을 배웠었다. 2학년 때, 국제경영에서 전산경영으로 전공을 변경 후 프로그래밍 언어 수업을 들었는데, 사실 프로그램밍 언어 수업에서 배운 많은 내용들이 언어학 개론에서 배운 내용들과 겹치는 것을 보고 적잖이 놀라기도 했다. 요즈음 하고 있는 코드에서 버그 찾는 연구도, 결국에는 다른 사람이 작성한 코드를 분석해야 해서 Syntax Tree를 계속 이용하고 있는데, 잘은 모르지만 촘스키란 학자가 대단해 보이기도 하고, 촘스키가 프로그래밍 언어 발전에 끼친 영향이 무엇이고 또 얼마나 클지 궁금하기도 하다. 

혹시 컴퓨터가 나를 위해 해줬으면 하는게 있는가? 그러면 편지를 쓴다는 마음으로 코딩 공부를 해보기 추천한다. 프로그래밍 언어는 일반 언어보다 어휘가 많이 필요하지 않고, 문법만 좀 알면, 내가 평소에 알고 있는 어휘를 그대로 사용할 수 있어서, 마음만 먹으면 배우기도 쉽다. 요즈음은 파이선 같은 접근하기 쉬운 프로그램밍 언어도 나왔고, 웹페이지를 만드는 html과 Javascript는 벌써 십수년이 넘었다. 글쓰기를 좋아한다면, 코딩 라이프도 한 번 경험해보면 어떨까?


글이 흥미로우셨다면, 공감을 눌러 주세요!

반응형