일주일, 월화수목금 중에서 그 주의 최저가에 주식을 사고 싶다고 합시다. 특정 요일의 가격이 그 주의 최저가일 확률은 당연히 1/5이니 20%입니다. 그렇다면 우리는 그냥 20%의 확률로 찍으면서 기도매매법을 실천해야 하는 것일까요?

간단한 전략을 통해 이 확률을 두 배 넘게 올려 보도록 하겠습니다. 우리의 전략은 "첫 k일 동안은 시장을 살펴보고, 그 다음날부터는 그때까지 중에 가장 싼 가격이면 사자"입니다. 미지수는 x로 써도 되지만 요즘 이름 앞에 k를 붙이는 게 유행이라 k라고 했습니다. 어쨌든 예를 들어보면 다음과 같습니다.

k = 0 이라면? 첫 0일 동안은 시장을 살펴보고 그 다음날, 즉 월요일부터는 그때까지 중에 가장 싸면 삽니다. 말이 꼬여 있는데 당연히 월요일에는 비교할 가격이 없으니 그냥 그날 바로 사겠다는 말이 됩니다. 이건 찍는 것과 다를 게 없습니다. 따라서 k= 0일 때의 성공률은 월요일이 최저가일 확률인 20%입니다.

k = 1 이라면? 이제 좀 재미있어질 겁니다. 첫 1일 동안은 시장을 살펴봅니다. 즉 월요일에는 네이버 주식 창 새로고침만 합니다. 살 게 아니니 15분 늦게 가격이 떠도 상관없습니다. 그리고 다음날인 화요일부터 그때까지 중에 가격이 가장 싼 날이면 주식을 삽니다. 만약 화요일 가격이 월요일보다 싸면 화요일에 삽니다. 물론 수요일에 더 떨어질 수도 있지만 하여튼 우리 전략이 그렇습니다.

만약 화요일 가격이 월요일보다 높다면? 그러면 수요일로 넘어갑니다. 그리고 수요일 가격이 월화수 중 가장 낮다면 삽니다. 그런데 수요일도 월요일보다 비싸다면? 그러면 목요일로 넘어갑니다. 목요일 가격이 월화수목 중 가장 싸다면 삽니다. 목요일도 월요일보다 비싸다면? 금요일로 넘어갑니다. 만약 금요일도 월요일보다 비싸다면? 월요일이 최저가였네요. 그러면 못 사게 됩니다.

정리해 보면 k = 1 일 때,
* 알고 보니 월요일이 최저가 -> 실패 (0)
* 알고 보니 화요일이 최저가 -> 성공 (1)
* 알고 보니 수요일이 최저가 -> 월요일이 화요일보다 싸야만 성공 (1/2)
* 알고 보니 목요일이 최저가 -> 월요일이 화, 수보다 싸야만 성공 (1/3)
* 알고 보니 금요일이 최저가 -> 월요일이 화, 수, 목보다 싸야만 성공 (1/4)

각 요일이 최저가일 확률은 똑같이 20% 씩이니 그 값을 균등하게 곱해주면 k = 1 일 때 우리 전략의 성공 확률은

20% x (0 + 1 + 1/2 + 1/3 + 1/4)
= 20% x 25/12
= 41.67%

가 됩니다. 벌써 성공 확률이 두 배 넘게 올랐습니다!

k = 2일 때도 한 번 계산해 보도록 하겠습니다. 이 때는 월, 화까지는 기다려보고 수요일부터 살지 말지를 결정합니다. k = 2 라면,
* 알고 보니 월요일이 최저가 -> 실패 (0)
* 알고 보니 화요일이 최저가 -> 실패 (0)
* 알고 보니 수요일이 최저가 -> 성공 (1)
* 알고 보니 목요일이 최저가 -> 월, 화 중에 수요일보다 싼 날이 있어야 성공 (2/3)
* 알고 보니 금요일이 최저가 -> 월, 화 중에 수, 목보다 싼 날이 있어야 성공 (2/4)

그러면 k = 2일 때 우리의 성공 확률은

20% x (0 + 0 + 1 + 2/3 + 2/4)
= 20% x 26/12
= 43.33%

아까보다도 더 높아진 43.33%가 되었습니다!

같은 방식으로 계산하면 k = 3 일 때의 성공 확률은 20% x (0 + 0 + 0 + 1 + 3/4) = 20% x 7/4 = 35%, k = 4일 때는 20% x (0 + 0 + 0 + 0 + 1) = 20% 가 됩니다. k = 4라는 것은 금요일 하루에만 살 수 있다는 것이니 찍는 것과 성공 확률이 똑같겠지요.

정리해봅시다!
* 월요일부터 그때까지의 최저가면 산다: 성공확률 20%
* 화요일부터 그때까지의 최저가면 산다: 성공확률 41.67%
* 수요일부터 그때까지의 최저가면 산다: 성공확률 43.33%
* 목요일부터 그때까지의 최저가면 산다: 성공확률 35%
* 금요일부터 그때까지의 최저가면 산다: 성공확률 20%

즉 월, 화에는 시장을 지켜만 보다가 수요일부터 그 주의 그때까지의 최저가일 때 산다면 찍는 것에 비해 성공 확률이 배 이상 높은 43.33%가 됩니다! 단 이 경우 아예 못 살 확률이 40%이니 (월, 화 중에 최저가가 있는 경우), 주식을 좀 공격적으로 사 모으고 싶다면 화요일부터 이 전략을 적용하는 것도 좋겠습니다. 성공 확률은 41.67%로 비슷하고 주식을 아예 못 살 확률은 20% (월요일이 최저가인 경우)로 낮으니까요!

덧붙여 만약 주식을 팔고 싶은 경우라면 마찬가지 전략을 반대로, 즉 어느 날 이후에는 그때까지 중 가장 비싸다면 판다고 적용하면 되겠습니다.

자 그럼 성투하시기를 바라며 정성글은 춫천

- 끝 -

캘리포니아 2022 - 10. 세상이 굴러가게 하는 비용 5.5 달러


LA 시내를 돌아다니다가 블루보틀 매장에 들어갔다. 이게 그 유명하다는 푸른 병 카페란 말이지. 깔끔하고 한적한 매장에 들어가 5.5 달러 짜리 아이스 볼드 12온스 커피를 시켰다. 유명세 치고는 손님이 굉장히 적어서 대형 테이블을 나 혼자 쓰는 호사를 누렸다.

커피를 마시는데 매장 유리 밖으로 노숙자가 보였다. 지나가는 사람들과 신호에 걸린 차에게 계속해서 시비를 걸고 있었다. 한참을 그러고 있는 모습을 보며 거 참 난폭하네, 하고 생각을 하고 있는데 그 노숙자가 갑자기 카페 쪽으로 걸어왔다. 어?

순식간에 매장 안으로 들어온 노숙자는 손님들에게 시비를 걸지는 않았지만 대신 매장에 전시되어 있는 물건들을 괜히 건드리고 다녔고, 잠시 후 카운터로 가서 뭐라고 뭐라고 말을 하더니 커피 두 잔을 공짜로 받아서 양손에 들고 유유히 카페를 나섰다. 그러더니 지나가는 차에 커피를 뿌려대고 남은 커피는 땅에 쏟아버리고는 다른 곳으로 갔다.

그 광경을 본 후 고개를 숙여 내 커피를 보았다. 순간 나는 돈을 내고 커피를 사 마시는데 가게에 들어와서 난리친 사람은 커피 두 잔을 공짜로 받아갔다는 생각이 들어 피식 웃음이 나왔다. 카페 관리자 입장에서야 언제 올 지 모르는 경찰에게 신고하고, 기다리고, 그 동안 그 노숙자가 손님들에게 난동을 부리지 않을까 전전긍긍하느니 커피 두 잔 쥐어 보내는 것이 이득이었겠지. 그런데 그러면 나 같은 얌전한 손님들은 뭔가 억울하지 않나?

그런 생각을 잠시 하다가 그러거나 말거나 하고 한번 풋 웃어버리고는 남은 커피를 마저 마셨다. 창 밖에서는 또 다른 노숙자가 어디선가 나타나 길 건너편에 있는 멕시코 치킨집에 들어가서 소란을 피우는가 싶더니 잠시 후 치킨을 손에 들고 나오고 있었다.

반 년도 더 지난 지금 갑자기 그런 생각이 든다. 그 때 내가 냈던 5.5 달러는 그 곳에서 내가 남에게 폐를 끼치지 않으면서 커피를 마시기 위한 비용이었다고. 남에게 폐를 끼치지 않는 것은 좋은 일이지만 희한하게도 그 좋은 일을 하면 내가 상을 받는 것이 아니라 내가 돈을, 혹은 시간을, 혹은 정성을 써야 한다. 커피를 예로 들자면 남에게 폐를 끼치면 커피를 공짜로 받지만 얌전히 있으면 커피를 마시기 위해 돈을 내야 하는 것이지. 계산기를 두드려보면 행패를 부리는 게 이득이다. 하지만 세상은 이런 계산은 치워버리고 그러거나 말거나 규칙을 지키며 살아가는 사람들 덕에 굴러간다. 그렇게 나는 그 날 세상이 굴러가게 하는 비용 5.5 달러를 냈다.

어린 왕자가 고대 이집트어, 고대 그리스어, 옛 영어, 옛 프랑스어, 옛 독일어로 번역되어 있다는 것을 알게 되었습니다. 고대 한국어까지는 아니더라도 근세 한국어로 어린 왕자를 번역해보고 싶어 작업중입니다.

 

- 어린 대군 (The Little Daegun)

 

-- 2장
그리하여 나는 그 누구와도 마음을 터 놓고 말 할 수 없어 외롭게 살기를 육 년 전 사하라 광야에서 내 경비행기가 고장날 때까지 하였노라 비행기의 원동기가 고장났으매 나는 기술자도 다른 탑승자도 없이 혼자였던 고로 홀로 비행기를 고치려 하였노니 이는 이가 내게는 생사(生死)의 문제였음이라 내게는 그 때 고작 칠 일 마실 물 밖에는 남아 있지 아니하였노라

 

첫 날 밤 내가 모래 위에서 잠들던 곳은 사람들이 사는 곳으로부터 천 리는 떨어진 곳으로 나는 바다에서 풍랑을 만나 난파한 선원보다 더 외로운 상태에 있었노라 그러하니 당신은 해 뜰 무렵에 내가 기묘한 작은 목소리에 잠에서 깨었을 때 얼마나 놀랐을지 상상할 수 있으리로다

 

그 목소리가 가로되 부탁이니 내게 양 한 마리만 그려달라 하되 내가 놀라서 묻기를 누구이뇨 하니 그 목소리가 다시 말하되 양을 한 마리만 그려달라 하니라 내가 두렵고 놀라서 눈을 껌뻑이며 주위를 상세히 둘러보았노라

 

내가 본 것은 지극히 작은 자요 심각한 표정으로 나를 살펴 보는 자였더라 내가 후에 그를 생각하며 열심으로 그린 그림이 이러하니라 허나 이 그림은 실제 그 아이의 찬란함에는 비길 수 없노라 이는 내 잘못이 아니니 어른들이 내가 여섯 살 때 화가가 되지 못하도록 기를 꺾어놓았기 때문이라 내가 그 후로 보아 구렁이의 겉과 속 외에는 아무 그림도 그려 본 적이 없었노라

 

내가 이 갑작스러운 형상을 바라보매 놀라 쓰러질 지경이 되었더니 읽는 자는 기억할진저 나는 광야에서 사고를 당해 인근 마을로부터 천 리나 떨어진 곳에 있었는지라 허나 그 소자(小子)는 광야에서 헤매고 있지도 아니했고 지치거나 곤하지도 아니하며 주리거나 목마르거나 두려워하지도 아니했노라 이 아이는 아무리 보아도 인가에서 천 리나 떨어진 곳에서 길을 잃은 아이로 보이지 아니하였노라

 

이윽고 내가 입을 뗄 수 있게 되어 가로되 너는 여기서 무엇을 하느뇨 하니 그 아이가 거듭 대단한 일인 양 매우 천천히 대답하기를 나에게 양을 한 마리 그려 주기를 원하노라 참으로 나에게 양을 한 마리 그려 주기를 원하노라 하는지라

 

지극히 놀라운 일을 당하면 사람은 거역하지 못하느니라 이상한 일이었지만 인가로부터 천 리는 떨어진 곳에서 생사(生死)의 고난을 당하면서도 나는 주머니에서 종이와 만년필을 꺼내었노라 그러나 나의 공부가 지리, 역사, 수, 고문(古文)에 한정되었기로 그 소년에게 (조금은 짜증을 내며) 나는 그림을 그릴 줄 모른다 대답하였노라 허나 그가 대답하기를 상관이 없노라 나에게 양을 한 마리 그려 주기를 원하노라 하는지라

 

그러나 나는 양을 일찍이 양을 그려본 적이 없었던 고로 내가 평소에 자주 그리던 두 가지 그림 중 하나 즉 보아 구렁이의 겉모습을 그려서 아이에게 주었더라 그리하고 내가 곧 심히 놀랐나니 이는 그림을 받은 아이가 가로되 아니라 아니라 내가 원했던 것은 보아 구렁이 안에 있는 코끼리가 아니라 보아 구렁이는 매우 위험한 짐승이요 코끼리는 지극히 손이 많이 가노라 내가 사는 곳은 모든 것이 매우 작으니라 나는 양이 필요하노라 양을 한 마리 그려달라 했음이라

 

그리하여 내가 이 그림을 그렸으나 아이가 유심히 살펴보고 가로되 아니라 이 양은 이미 매우 병들었노라 다른 양을 그려달라 하노라

 

내가 두 번째 그림을 그리니 나의 작은 친구가 조용히 웃으며 가로되 네가 네 눈으로 직접 볼지어다 이는 양이 아니라 산양이 아니냐 뿔이 있지 아니하냐 하는지라

 

그 말을 들은 내가 세 번째 그림을 그렸으나 소년이 이르되 이 양은 너무 늙었노라 나는 오래오래 살 양이 필요하노라 한 고로 그 역시 퇴짜를 맞았노라

 

그리하여 내가 마음이 조급하게 되었음은 내가 속히 비행기 원동기를 분해해야 함이었더라 그리하여 내가 이 그림을 그려서 아이에게 주며 이것은 상자라 네가 원하는 양은 이 상자 안에 있노라 하였노라

 

그 때 나는 이 작은 재판관의 얼굴이 밝아지는 것을 보고 놀랐노라 아이가 말하되 이것이 바로 내가 원하던 것이라 너는 이 양이 풀을 많이 먹어야 할 것으로 생각하느뇨 하는지라 내가 그것이 왜 중요하뇨 되물으니 아이가 말하되 이는 내가 사는 곳은 모든 것이 매우 작기 때문이라 하더라 이에 내가 대답하되 네가 사는 곳에 있는 풀로 충분하리라 이는 내가 네게 준 양이 매우 작음이라 하였더라

 

그러자 아이가 그림 위로 얼굴을 가까이 하며 이르되 양이 그렇게 작지 않다 보라 오호라 양이 벌써 자노라 하는지라 이렇게 하여 나는 어린 대군을 알게 되었노라

(2장 끝)

'글쓰기 > 어린 대군 (The Little Daegun)' 카테고리의 다른 글

어린 대군 - 바치는 글, 1장  (0) 2022.11.12

어린 왕자가 고대 이집트어, 고대 그리스어, 옛 영어, 옛 프랑스어, 옛 독일어로 번역되어 있다는 것을 알게 되었습니다. 고대 한국어까지는 아니더라도 근세 한국어로 어린 왕자를 번역해보고 싶어 작업중입니다.

 

- 어린 대군 (The Little Daegun)

 

-- 바치는 글

레옹 베르트여

내가 이 책을 어른에게 바치게 된 것을 아이들에게 사과하노라 내게 이유가 있으니 첫째는 이 사람이 세상에서 나와 가장 가까운 벗임이요 둘째는 이 어른은 모든 것을 이해할 수 있고 아이들 책까지도 알아들을 수 있음이며 셋째는 이 사람이 갈리아 지방에 살면서 춥고 배고프기 때문이라 그가 격려를 받아야 하리라 이 모든 이유로도 부족하거든 나는 이 책을 커서 이 어른이 된 아이에게 바치겠노라 (모든 어른은 한때 아이였거늘 그것을 기억하는 자는 많지 않으니라) 고로 내가 헌사를 수정하노라

소자(小子)였던 레옹 베르트여

 

-- 1장

 

내가 여섯 살이었을 때 자연의 참 이야기라는 오래된 숲에 관한 책에서 웅대한 그림을 보았노라 이는 보아라 하는 구렁이가 짐승을 삼키는 그림이었으니 내가 모사한 바가 다음과 같더라

 

그 책이 이르기를 보아 구렁이는 짐승을 통째로 삼키고 씹지 않으며 후에 움직일 수 없어 반 년간 잠을 자며 소화를 한다 하는지라

 

내가 속으로 밀림 탐험에 대해 깊이 생각한 뒤 색이 있는 연필로 나의 첫 그림을 그렸노라 나의 그림 일(一)호라 이름하였으니 이는 다음과 같으니라

 

내가 내 작품을 어른들에게 보여주고 그림이 무섭지 않느냐고 묻자 어른들이 가로되 무엇이 무섭느뇨 모자를 보고 무서워 할 사람이 어디 있겠느냐 하는지라 그러나 내 그림은 모자가 아니요 코끼리를 소화하고 있는 보아 구렁이였더라

 

어른들이 이해를 하지 못한 고로 내가 두 번째 그림을 그렸나니 보아 구렁이 뱃속까지 그린 그림이라 이로 말미암아 어른들이 밝히 보게 되었느니라 어른들은 언제나 설명을 필요로 하느니라 나의 그림 이(二)호는 다음과 같으니라

 

이에 어른들이 대답하여 가로되 얘야 너는 보아 구렁이 그림을 겉이든 속이든 그리는 것을 버려두고 지리, 역사, 수, 고문(古文)에 충실하라 하니라 이것이 내가 여섯 살에 훌륭한 화가가 되었을 수도 있는 길을 포기하게 된 이유이매 나는 나의 그림 일(一)호와 이(二)호의 실패에 적잖이 실망하였느니라 어른들은 스스로 그 무엇도 이해하지 않으며 아이들이 항상 평생토록 어른들에게 설명을 해야 한다는 사실은 아이들을 피곤하게 하느니라

 

그리하여 나는 다른 일을 택하여 비행기 조종사가 되었나니 이후 전 세계에 다니지 아니한 곳이 없는지라 지리 공부가 실로 유용함을 이 때 알았나니 내가 한 눈에 청나라와 아리상나(亞利桑那)를 구분할 수 있음이라 한밤중에 길을 잃는 자가 있거든 이러한 지식이 참으로 유용할 것이라

 

인생에서 나는 매우 많은 사람들을 매우 많이 만났으매 그들은 중요한 일에 신경을 쓰는 자들이었더라 내가 어른들 중에서도 오래 산 사람으로서 어른들을 내 코앞에서 관찰해 온 바 어른들에 대한 내 생각은 변한 바가 없노라

 

총기가 있는 어른을 만날 때면 나는 항상 지니고 다니던 나의 그림 일(—)호를 보여주며 그를 시험해 보았노라 내가 원하였던 것은 그 사람이 참 진리를 아는 사람인지를 알아보는 것이었으나 지금까지 그 누구도, 남자도 여자도, 모두 그것은 모자라 대답하지 아니한 자가 없었더라

 

그런고로 나는 그들에게 보아 구렁이나 혹은 오래된 숲이나 혹은 별에 대해 말하는 것을 그만두고 내가 그들의 수준에 맞추어 다리, 격구(擊球), 정치, 갓에 대한 이야기를 하였으매 그들이 나를 보며 명민한 사람을 만나게 된 것을 기뻐하였노라

 

(1장 끝)

'글쓰기 > 어린 대군 (The Little Daegun)' 카테고리의 다른 글

어린 대군 - 2장  (0) 2022.11.22

파이썬에서 상속을 통해 클래스를 만들 경우 생성자 안에서 상위 클래스의 생성자를 호출해야 할 때가 있습니다. 그럴 때 아래 두 종류의 코드가 사용되곤 하는데요, 간단한 코드는 파이썬 3에서부터 지원되는 문법이고 복잡한 코드는 파이썬 2와 3에서 모두 지원됩니다. 기능은 동일합니다.

 

1. 간단한 코드

# 파이썬 3에서부터 지원됩니다.
super().__init__()

 

2. 복잡한 코드

# 파이썬 2와 3에서 모두 지원됩니다.
super(__class__, self).__init__()

 

참조: https://stackoverflow.com/a/61288819/1125721

Julia를 apt-get 으로 설치하면 옛날 버전이 설치됩니다. 최신 버전을 설치하려면 직접 홈페이지에서 다운받아야 합니다.

 

1. 줄리아 다운로드 페이지로 갑니다.

https://julialang.org/downloads/

 

2. 컴퓨터 사양에 맞는 버전을 다운로드합니다. 제 경우는 Generic Linux on x86 64-bit (glibc) 용 1.8.0 버전으로 진행하였습니다.

wget https://julialang-s3.julialang.org/bin/linux/x64/1.8/julia-1.8.0-linux-x86_64.tar.gz

 

3. tar로 압축을 풉니다.

tar -xvzf julia-1.8.0-linux-x86_64.tar.gz

 

4. /opt/로 복사함으로써 설치를 합니다. /opt/는 apt-get이 아닌 다른 방법으로 설치된 프로그램들이 있는 곳입니다. 관리자 권한이 필요합니다.

sudo mv ./julia-1.8.0 /opt/

 

5. /usr/local/에  symbolic link를 만들어서 어디서나 편하게 사용하도록 합니다.

sudo ln -s /opt/julia-1.8.0/bin/julia /usr/local/bin/julia

 

6. 이제 터미널 환경에서 julia만 입력하면 julia를 실행할 수 있습니다.

$ julia

 

참조한 곳: https://medium.com/coffee-in-a-klein-bottle/install-julia-1-5-on-ubuntu-bb8be4b2571d

십여 년 전, 스크립트 언어를 배워야 할 일이 생겼을 때 비주류 좋아하는 성격 탓에 당시 한창 뜨던 중인 파이썬을 안 하고 슬슬 지기 시작하던 펄을 공부했었다. C로 - 그러고보니 C++도 아니고 - 문자열 처리 코드 짜고 있던 나에게 펄은 신세계였다. 요즘은 당연하게 여겨지는 것이지만 배열 마지막 원소를 arr[-1] 같이 -1이라는 인덱스로 접근할 수 있는 것도 C에서는 상상도 못 했던 일이었다.

펄은 참 재미있는 언어였다. 한국어로 치자면 "거시기"에 해당되는 변수가 자동으로 존재한다. $_ 라는 변수인데, 그 덕에 코드를 듬성듬성 짤 수 있었다. 다른 언어에서는 명확하게 변수와 값을 지정해주었어야 할 상황에서 펄은 "거시기" 변수만 불러와 보면 얼추 필요한 값이 들어있었기 때문에 변수를 생략하는 것이 가능했다. 그리고 if문과 함께 unless 문도 있었다. Unless 문의 작동방식은 if문의 정반대. 즉 if (true)는 unless (false)와 같고... 이런 조건문을 겹쳐서 if ( unless ( if ( true ) ) ) 같은 식으로 볼썽사나운 코드를 짜는 것도 가능했다.

물론 이런 코딩이 가능하다 보니 남이 짠 펄 코드를 이해하는 건 정말 어렵고 어쩔때는 내가 예전에 짠 펄 코드도 이해가 안 가기도 했다. 그래서 펄 사용자가 많이 떨어져 나가기도 했고. 이런 펄의 특성은 "어떤 일을 하는 데에는 하나 이상의 길이 있다 (There's more than one way to do it, TMTOWTDI)" 라는 펄의 슬로건에 잘 나타나 있다. 펄 코드에는 개발자의 개성이 원없이 묻어난다. 어쨌든 나는 펄이 참 좋았고, 펄은 내 석사 연구의 꽤 많은 부분과 함께 했다.

펄과 완전 반대편에 있는 언어가 바로 파이썬이다. 파이썬에서 import this를 치면 파이썬의 철학이 죽 나오는데 그 중에 이런 말이 있다. "어떤 작업을 하기 위한 하나의, 되도록이면 단 하나의 자명한 방법이 존재한다. (There should be one-- and preferably only one --obvious way to do it.)" 그래서 파이썬은 띄어쓰기를 몇 칸으로 할 것인지까지도 한번 정하면 끝까지 지켜야 한다. 펄은? 펄 사용자들끼리 신나서 자주 하는 게 어떻게 하면 한 줄 안에 코드를 잘 구겨넣을까 하는 일이다.

이런 면에서 여러모로 펄은 한국어(와 일본어)를, 파이썬은 영어를 닮았다. 한국어에서는 온갖 생략이 가능하다. "사랑해" 라고 하면 내가 너를 사랑한다는 말인 줄 다 안다. 영어에서는 "Love" 라고 하면 못 알아듣기 때문에 단 둘이 있어도 굳이 "I love you" 라고, I가 you를 love한다고 다 꼬치꼬치 말해줘야 한다. 우리는 사과를 먹었으면 됐는데 영어에서는 굳이 사과를 한 개 (an apple) 먹었는지 두 개 이상 (apples) 먹었는지를 말해줘야 한다. 영화 황산벌에 나오는 계백 장군의 대사인 "그러니께 이번 여그 황산벌 전투에서 우리의 전략 전술적인 거시기는, 한 마디로 뭐시기 할 때꺼정 갑옷을 거시기한다, 바로 요거여. 알겄제?" 는 영어로는 말이 안 되고, 번역해 봐야 억지스럽다.

이런 다양성, 다의성은 인간의 언어에서는 언어를 풍요롭게 하고 문학의 비옥한 토양이 되는 존재이지만 프로그래밍 언어에서는 그다지 환영받지 못한다. 프로그래밍에서는 간단함과 명료함이 미덕이다. 그래서 날이 갈수록 파이썬 사용자는 많아지고 펄 사용자는 줄어만 간다.

예전, 대략 버전 관리 시스템으로 git이 아니라 cvs나 svn을 쓰던 때, 수많은 개발자들의 땀과 눈물이 서려있을 Visual C++ 6.0이 현역이었을 때, 간혹 3.5인치 디스켓 드라이브를 볼 수 있었을 때, 안드로이드는 나왔는데 안드로이드 스튜디오는 없어서 이클립스로 앱 만들던 때, 도스에서 터보C를 쓰던 때의 코딩은 참 자유로웠다. 참조할 수 있는 자료가 제한되어 있으니 다 개발자가 어떻게든 직접 해야 했고, 그러다보면 좀 삐그덕대더라도 분명 내 손에서 나왔다고 자부할 수 있는 프로그램이 생기곤 했다. 홈페이지도 메모장에 직접 html 코드를 쳐 가면서 만들곤 했지.

요즘은 컴퓨터 프로그램이 거대해지면서 많은 부분이 규격화되었다. 이미 남이 만들어놓은 코드를 "라이브러리"라는 이름으로 잘 가져다가 쓰는 게 중요한 시대가 되었다. 예전처럼 내가 다 하려다가는 "왜 바퀴를 재발명하고 있냐?" 라는 핀잔을 듣기 일쑤다. 깃허브에서 여러 코드를 받아오고 스택 오버플로우에서 이것저것 찾아서 어떻게 하다 보면 금세 프로그램 하나를 뚝딱 만들 수 있다. 요즘 간단한 스마트폰 앱은 파워포인트 만들듯이 마우스로도 만들 수 있고. 그런데 그렇게 해서 나온 결과물을 보고 있노라면 마음 속 한 구석이 왠지 허전하다. '이 프로그램에서 내가 만든 부분이 도대체 뭐지?' 하는 생각과 함께.

펄을 마지막으로 써 본 지도 거의 10년이 다 되어 간다. 옛 생각이 나서 인터넷에서 펄을 검색해 보니 5년 안에 사용자가 사라질 언어 중 하나로 펄이 꼽혀 있었다. 바퀴를 재발명하던 때가 그립다. 스택 오버플로우 없이 프로그램을 짜던 때가 그립다. 괜히 커맨드 창에서 perl을 실행시키고 이것저것 눌러보다가 창을 닫았다. 기분이 참 $_ 한 오늘이다.

캘리포니아 2022 - 9. 아무렇지도 않고 예쁠 것도 없는

 

https://youtu.be/PVvgPrHEqCA

 

대학생 때 한 달 넘게 일본 배낭여행을 간 적이 있었다. 하루에 한국 돈 약 4만원 정도로 숙박비와 식비를 포함한 여행비를 충당하던 빠듯한 여행이었다. 여행 중 오키나와에서 우민추(海人, 바닷사람이라는 뜻의 오키나와어)라고 적혀있는 티셔츠를 보았었는데 맘에 쏙 들었지만 한국 돈으로 약 2만원 정도 되던 금액이 당시에는 부담이 되어 몇 날 며칠을 고민하다 오키나와를 떠날 때까지 결국 사지 못했다. 웃기게도 그렇게 돈을 아껴서 그랬는지 여행 후반에는 돈이 남았었다. 그 티셔츠를 몇 장은 충분히 살 수 있을 정도로.

비록 티셔츠는 못 샀지만 그 경험 덕에 깨달은 것이 있다. 살까 말까 고민되면 일상에서는 사지 말아야 하지만 여행중에는 사야 하고, 할까 말까 고민되면 일상에서는 하지 말아야 하지만 여행중에는 해야 한다. 일상에서는 다음, 다다음 기회가 있지만 여행중에는 기회가 한 번씩 밖에 없기 때문이다. 설령 나중에 후회하더라도 여행 중에는 하고 나서 후회하는 것이 하지 않고 아쉬워하는 것 보다 낫다.

캘리포니아 1번 주도(州道)에서의 운전이 7시간을 넘어 8시간 째로 접어들던 때였다. 해는 뉘엿뉘엿 져 가고 도로에는 산그림자가 깔리기 시작했다. 이제는 밤이 되기 전에 빨리 산타 바바라에 도착해서 숙소에 짐을 풀어야 했다. 1번 주도를 달리며 태평양을 보겠다는 목표는 이미 충분히 달성한 후였다. 1번 주도가 아직 남아있기는 했지만 남은 부분은 바닷가가 아니라 내륙의 외진 마을들을 거쳐가는 길이었다. 내비게이션은 빙빙 돌아가는 1번 주도 대신 가까운 길을 알려주고 있었다.

하지만 나는 1번 주도를 더 달려보고 싶었다. 특별히 그래야 할 이유는 없었다. 반대로 그러지 말아야 할 이유는 많았다. 11년만에 운전대를 잡은 것이어서 아직 밤 운전은 위험했고, 남아있는 1번 주도는 딱히 특별할 것이 없는 평범한 도로일 것 같아 보였으며, 내일의 일정을 생각하면 조금이라도 빨리 숙소에 도착해서 쉬는 것이 좋을 것 같았다. 하지만 결국 고민 끝에 잠시 차를 멈추고 일부러 강제로 1번 주도를 달리도록 네비게이션을 재설정했다. 이유는 단 하나였다. 그러고 싶어서. 숙소에 좀 늦게 도착하면 어떻고 다음날 좀 피곤하면 어때. 여행중에 할까 말까 고민될 때에는 모름지기 해야 한다.

캘리포니아 1번 주도는 태평양 해안 도로 (Pacific Coast Highway, PCH), 카브릴로 도로 (Cabrillo Highway), 쇼어라인 도로 (Shoreline Highway), 해안 도로 (Coast Highway) 등의 구간으로 나뉘는데 보통 여행 책자에서 소개하는 캘리포니아 1번 주도는 태평양 해안 도로 구간이다. 강한 바람, 깎아지른 절벽, 태평양이 만들어내는 육중한 파도와 굉음이 계속해서 이어지는 길로, 내가 그 날 오전부터 줄기차게 달려왔던 바로 그 길이었다. 이제 태평양 해안 도로는 끝이 났고, 내가 네비게이션의 충고를 무시하고 더 가기로 한 캘리포니아 1번 주도는 카브릴로 도로 (Cabrillo Highway) 구간이었다.

별 기대 없이 들어선 카브릴로 도로는 조용한 시골길, 정지용 시인의 시 '향수'의 표현을 빌자면 아무렇지도 않고 예쁠 것도 없는 그런 곳이었다. 하지만 그래서 좋았다. 특별히 멋지거나 화려한 경치는 없었지만 그렇기 때문에 마음이 편안해졌다. 사람도 차도 거의 없는 시골길을 운전하며 카브릴로 도로의 한적함을 충분히 누리고 또 누렸다. 낮 내내 태평양 해안 도로를 달리며 바람과 절벽과 파도와 바다 때문에 흥분되었던 마음이 시골길을 천천히 달리는 동안 기분 좋게 차분해졌다.

소설은 발단, 전개, 위기, 절정을 거쳐 결말이 나야 하고 한시(漢詩)는 기, 승, 전을 지나 결까지 가야 한다. 독자를 흥분시키고 긴장하게 하는 것도 중요하지만 마지막에 가서 독자의 긴장을 풀어주고 마음을 편안하게 해 주는 것 역시 중요한 일이기 때문이다. 그런 면에서 카브릴로 도로는 캘리포니아 1번 주도를 달리는 사람이라면 꼭 가 보아야 하는 곳이다. 태평양 해안 도로가 1번 주도의 절정이라면 카브릴로 도로는 잔잔한 마무리다. '향수'의 아무렇지도 않고 예쁠 것도 없다는 표현이 참 잘 어울리는 곳, 그래서 그 곳이 차마 꿈엔들 잊히겠냐는 그 다음 표현 역시 참 잘 어울리는 곳이 바로 카브릴로 도로다.

카브릴로 도로는 롬폭(Lompoc)이라는 마을을 지나면서 끝이 났고 그 즈음부터 산타 바바라까지는 미국 101번 국도가 캘리포니아 1번 주도를 대체하면서 1번 주도가 잠시 끊어져 있었다. 해는 진작에 다 져서 깜깜한 밤이었고 아침에 운전을 시작한 지 10시간이 지나서야 산타 바바라의 숙소에 들어설 수 있었다. 체크인을 하면서 직원과 이야기를 하다가 오늘 아침에 몬터레이에서 출발해서 온 거라고 했더니 직원이 말했다. "와우, 롱 트립."

101번 국도 때문에 끊어진 캘리포니아 1번 주도는 산타 바바라 이후에 다시 나타나서 LA로 향하게 된다. 원하면 다음 날 1번 주도를 더 탈 수도 있었다. 하지만 카브릴로 도로가 내 캘리포니아 1번 주도 여행을 잘 마무리해 주었기에 더 이상 미련은 없었다. 내일 LA로 갈 때에는 고속도로를 타야지. 노곤한 몸으로 기분좋게 잠에 들었다.

[리눅스] Bash Shell에서 파일 존재 여부 검사 시 -e와 -f 옵션의 차이

 

Bash Shell에서 파일 존재 여부 검사 시 -e와 -f 옵션을 사용할 수 있는데, -e는 단순히 파일이 존재하는지만 검사하고 -f는 해당 경로에 있는 것이 디렉토리나 마운트 된 기기 등이 아니라 정말로 파일인지까지 검사해줍니다. 보통 if문 안에서 다음과 같이 사용하게 되지요.

 

# 해당 운영체제가 우분투인지를 검사하는 코드입니다.
if [[ -f /etc/lsb-release ]];

 

참조한 곳: https://linuxize.com/post/bash-check-if-file-exists/


캘리포니아 2022 - 8. 인생은 운전

나는 하나를 완벽히 끝내지 않으면 다음 단계로 잘 넘어가지 못하는 성격이다. 어릴 때 비디오 게임을 할 때면 화면에 나타나는 동전을 하나도 빼놓지 않고 다 먹어야 했고 이야기 진행이 중요한 컴퓨터 게임을 할 때면 맵에 있는 장소를 다 방문하고 모든 등장인물을 다 만나봐야 직성이 풀렸다. 대학원생 때는 기말고사까지 다 끝난 다음에도 수업 때 이해가 가지 않았던 내용을 들고 교수님을 찾아갔었고, 대학교 때 배웠던 함수형 프로그래밍 언어가 깊이 이해가 가지 않아 사회인이 된 지금까지도 시간이 날 때마다 틈틈이 함수형 프로그래밍 언어 공부를 시도해 왔다.

이런 나에게 있어 볼거리가 넘쳐나는 캘리포니아 1번 주도(州道)에서의 운전은 어떤 의미에서 고역이었다. 황홀한 풍경이 쉬지 않고 계속해서 나타났지만 나는 계속 앞만 보고 차만 몰아야 했다. 낮에는 그래도 마음에 여유가 있어서 도로 옆 간이 쉼터 공간이 나타나면 차를 대고 경치를 보곤 했지만 해가 조금씩 붉은빛을 띠며 서쪽 수평선에 가까워지기 시작한 후로는 마음이 급해져서 비어있는 도로를 끝없이 달리고 또 달렸다.

그렇게 달리다 보니 끝없이 이어질 것만 같던 깎아지른 해안 절벽과 삐죽삐죽한 젊은 산들이 어느새 시나브로 사라지고 그 자리를 둔탁하게 닳은 오래된 얕은 언덕과 초원이 메우고 있었다. 하얗게 쨍했던 한낮의 햇빛이 북쪽의 날카로운 절벽과 참 잘 어울렸다면 붉은 기가 도는 초저녁의 햇빛은 얕은 언덕과 초원에 잘 어울렸다. 어느새 이렇게 경치가 바뀌었지 하고 놀라던 찰나 멀리 무언가 검은 것이 보였다. 자세히 보니 소였다. 여러 마리의 소가 넓은 풀밭을 돌아다니며 자유롭게 풀을 뜯고 있었다.

아, 이게 말로만 듣던 방목형 목장이구나. 소들이 주인도 없이 여기저기 돌아다니는 게 신기해서 자세히 보고 싶었지만 목장이 도로 옆에 있었기에 소를 오랫동안 볼 수가 없었다. 운전자에게는 전방 주시의 의무가 있지 않나. 못내 아쉬워 운전하면서 고개를 잠깐씩 돌려 소들을 보려 했지만 그러자 운전도 잘 안 되고 소도 잘 안 보였다. 그렇게 한참을 시도하다가 결국에는 소를 제대로 보는 것을 포기하기로 했다. 아쉬웠지만 어쩔 수 없었다. 소를 보자고 도로 한복판에서 멈출 수도, 아니면 차를 돌려 오던 길을 되돌아갈 수도 없는 노릇 아닌가. 이 소들은 - 적어도 이번 여행에서는 - 내가 자세히 관찰할 정물화의 대상이 아니라 휙휙 지나가는 크로키의 대상이라는 것을 인정하기로 했다. 그러자 마음이 편해졌다.

인생은 유턴 없는 운전과 참 비슷하다. 유턴 없는 길에서는 한번 지나온 곳에 다시 갈 수 없고, 인생에서는 한번 지나온 시간을 다시 살 수 없다. 운전을 하다가 창 밖에 있는 소를 제대로 보지 못 했더라도 다시 볼 수 있는 방법은 없고, 살면서 제대로 하지 못해 후회되는 일이 있더라도 그 시간으로 되돌아가 그 일을 고칠 수는 없다. 갈림길 직전에 방향을 잘못 잡고 있는 것을 깨달았다면 우물쭈물할 시간 없이 바로 그 순간 잽싸게 길을 바꿔야 한다. 그렇게 계속해서 수많은 아쉬움을 남기며 앞으로 앞으로 가야 하는 것이 운전이고 우리의 삶이다. 그리고 지금 놓친 풍경에 아쉬워하기보다는 앞에 있는 모퉁이를 돌았을 때 갑자기 눈앞에 펼쳐질 장관을 기대하는 것이 여행자의 바른 운전 태도이고 바른 삶의 태도이다. 덧붙이자면 그렇게 멋진 경치가 많이 나타날 길을 선택하는 것이 삶의 지혜이고.

이런 생각을 하자 마음이 편해졌고 해는 점점 지면서 붉다 못해 주황색이 된 게으른 빛을 느릿느릿 뿌리고 있었다. 그 빛을 받으며 나는 남으로 남으로 향했다. 그리고 한참 뒤 이야기이지만, 캘리포니아 여행을 다 마치고 집에 돌아간 나는 책장에 있던 함수형 프로그래밍 언어 책을 버릴 수 있었다.

+ Recent posts