트랙백 소설 : 0th floor


*이 소설은 트랙백 소설입니다. 이 이야기의 뒷얘기를 쓰실 분은 누구나 트랙백을 걸어주십시오. 그 뒷얘기는 다시 그 뒤로 트랙백을 걸어주시면 됩니다. 만약, 이 이야기의 “앞얘기”를 쓰고싶으시다면 저에게 트랙백 요청을 하시면 됩니다.


The 0th floor

어디에도 존재하지 않는 지상과 지하의 경계

공연장 안에서는, 끊어질듯 가늘게 이어지는 바이올린의 선율에 모든 관객들이 도취되어 있었다.

그녀의 연주는 말 그대로 하늘의 선율이었다…

연주가 곧 끝나고, 그녀가 활대를 현에서 떼자, 관객들은 모두 일어서서 열광적인 박수로 그녀의 연주를 칭찬하였다. 박수는 약 5분동안이나 끊임없이 계속되었다. 그녀는 밝은 웃음으로 관객들에게 인사하며 무대 뒤편을 향해 돌아섰다. 돌아서던 그녀가 갑자기 바이올린을 뒤쪽으로, 즉 객석 방향으로 집어던지며 몸을 뒤로 젖혔다.

콰지지직!!!!

공중을 날아가던 바이올린이 갑자기 터져버렸다. 그녀는 뒤로 몸을 젖히면서 넘어졌고, 대신에 그녀가 서 있던 자리에는 사람 손가락이 넉넉하게 들어갈만한 구멍이 뚫려 있었다.

“아!”

관객들은 난데없는 폭음에 비명을 지르며 혼란에 빠져버렸고, 출입구 방향으로 마구 달려갔다. 무대 뒤편으로 들어가서 그녀는 빠른 걸음으로 출연자 대기실로 향했다.

쿵!

그녀는 갑자기 나타난 벽에 머리를 부딪치고 잠시 이마를 문지르더니, 손을 앞으로 뻗어서 더듬는다.

“아…여기서 왼쪽이지”

그렇게 중얼거리고는 그녀는 왼쪽으로 몸을 돌려서 다시 빠르게 걸어갔다. 벽에 손을 짚고, 문 두개를 더듬어서 지나친 후, 세번째 문으로 들어갔다. 들어가자마자 손잡이를 돌려서 문을 잠그고, 그녀는 가슴에 손을 얹고 굳었던 숨을 내쉬었다.

“후우…위험했어…”

잠시 그렇게 진정한 후, 그녀는 문짝에 귀를 붙였다. 그녀의 예민한 귀는 바깥에서 아무런 소리도 들리지 않는다는 사실을 확인하였다.

“아까…정확히…그 위치였지”

주차장의 위치를 머릿속에 상기시키고, 문을 열고 달리기 시작했다. 복도 끝, 정확한 위치에서 방향을 틀어서 다시 달렸다.

“여기, 이곳”

손을 들어서 잠시 벽을 더듬어서 엘리베이터의 단추를 눌렀다.

“하…”

가쁘게 숨을 내쉬면서 벽에 손을 짚고 잠시 쉬었다.

딩동…

엘리베이터가 주차장이 있는 층에 도착했다. 그녀는 주머니 속에서 리모콘을 눌러서 자신의 차에 시동을 건 후 차 소리를 듣고 보지도 않고 – 당연하겠지만 – 거의 정확한 방향으로 차를 향해 달려갔다. 그녀는 보이지 않음에도 불구하고 정확히 걸음 수를 세며 옆으로 비켜서 돌아갔다. 그리고 곧 차 문을 열고 운전석에 앉았다. 차 안으로 올라탄 그녀는 문을 닫고 무작정 시동을 걸었다.

위이잉…

“우선 나가자”

페달에 발을 얹고 밟았다.

위잉! 쿠웅…

빠르게 후진한 자동차는, 곧 뒤쪽에 주차되어 있던 다른 자동차에 충돌하였다.

“감이 잘 안 잡히는구나…”

타앙! 타앙! 콰직!!

몇번의 총소리가 더 들렸고, 차가 옆으로 흔들렸다.

“이러다간 붙잡히겠어!”

그녀는 윗부분을 더듬어서 뭔가를 찾았다.

“이거지”

그녀가 감고 있던 눈꺼풀을 들어올렸다. 그 안에는 안구 대신 접속용의 포트가 자리하고 있었다. 위에서 찾아낸 그 뭔가는 선글라스처럼 생겼다. 하지만 렌즈 부분의 안쪽으로 그녀의 눈에 들어올 수 있는 포트가 있어서 끼울 수 있게 되었다. 이것은 시각 장애인의 활동을 돕기 위한 보조장치로, 시신경에 직접 접속하여 외부의 상황을 알 수 있게 돕는 장비이다.

“이제 좀 보이네, 저쪽이지?”

타앙!

“이…가만히좀 놔두란 말야. 더 이상 흠집 생기면 언니한테 혼난다구!”

그녀는 핸들을 왼쪽으로 꺾으며 가속페달을 밟았다.

위이이이잉…

“분명 이 방향이 출구였어…”

그녀는 자신의 기억을 믿고, 속도를 줄이지 않은 채 계속 밟았다. 그때, 갑자기 열려있던 주차장의 문이 닫히기 시작했다.

“안좋은데?”

급히 브레이크를 밟았고, 몇미터 정도 미끄러진 차는 간신히 정지하여서, 벽에 가장자리 부분이 살짝 부서진 것 이외에는 사고가 나지 않았다.

“이대로는 붙잡히는데…”

타앙! 타앙! 콰직!

폭음과 함께 다시 차가 흔들렸다. 계속해서 총을 쏘고 있는 것이다.

“이대로 죽기는 싫어…”

그때, 기적이랄까 당연한 일이랄까, 관객들이 탄 차가 주차장에서 몰려나가기 시작한 것이다. 주차장 내부는 일대 대 혼란, 그녀를 뒤?는 적들이라고 혼란을 피할 수는 없었다. 애초에 그녀를 처리하고 싶었다면 건물 전체를 폭파시키거나 하는 확실한 방법을 이용하는 것이 더 나았다. 다른 차들 틈에 섞여서 그곳을 빠져나간 후, 도시 외곽의 도로를 타고 달렸다.

“살았네”

도로를 계속 타고 집으로 향했다. 적어도 그녀의 집은 안전한 곳이다.

며칠간 그녀는 바깥으로 나가지 않았다. 문에는 <외출중>이라는 표시를 해두고, 창문에 커텐을 두텁게 치고, 외부로부터 연결된 전화선은 끊어버리고, 냉장고에 들어있는 많지 않은 식량을 아껴가며 그녀는 그렇게 조용히 있었다. 적어도, 그녀가 이곳에 집이 있다는 것은 그녀의 적-어쩐지 검은 제복의 남자들-에게는 들키지 않았기에, 그리고 그들에게 들키기 전까지 그녀는 안전하기 때문에…

나가지 않는 것이 최선이었다.

그 지루한 시간동안 그녀는 단지 숨을 쉬고 있다. 그녀의 이름은 유카로 부르기로 한다.

유카, 그녀는 태어날 때 부터 앞을 보지 못한다.


무엇이 세상을 굴러가게 하는가?

크게 보지 말자. 작게 잡아서, 인간이 살아가는 세상만 바라본다고 치자. 무엇이 세상을 굴러가게 할까?

최근에, 일본은행이 기준금리를 0.25%에서 0.5%로 올렸다는 소식을 듣고 작은 깨달음이 있었다. 기준금리라는게 정확히 어떤 역할을 하는지는 모르겠지만, 내가 이해하기로는 중앙은행에서 금융기관에 돈을 빌려줄 때의 이자를 얘기하는 것으로 알고 있다. 그렇다면, 이 금리가 올라가게 되면 사람들에게 어떤 영향이 갈까? 중앙은행에서 이자를 더 받겠다고 선언한 거니까, 당연히 금융기관에서 이자를 올리지 않으면 수익율이 나빠진다. 따라서, 금융기관에서 이자를 올리게 되고, 사람이나 기업들은 돈을 빌릴 때 은행에 더 많은 이자를 내야 하게 된다. 그 결과로서 사람과 기업은 더 많은 돈을 벌어야 하기 때문에 더 많은 생산을 해야만 한다. 한 국가에서 생산을 많이 하게 되면 어떤 이유에서든 이 물건은 팔리게 되고, 따라서 경기가 좋아지게 된다. 하지만 경기가 너무 나쁠 때 이런 일을 해 버리면 물건을 사는 것이 불가능하기 때문에 수출해서 돈을 벌어와야 할 수밖에 없다. 그리고 만약에 환율이 나쁘다면, 즉, 원자재를 비싸게 사서 물건을 싸게 팔아야 한다면 결국 국가 경제 기반이 흔들리게 되는 것이다.

이러한 궁금증은 애초에 물건을 만드는 사람은 돈을 벌고, 그 돈을 어딘가에서 다른 물건을 사고, 그 물건값은 다시 물건을 만드는데 재투자 되는데 대체 어디서 돈이 나오는 걸까? 에 대한 생각에서 출발한다. 돈은 나오는 것이 아니라 새로 만들어진다. 기준금리만큼의 돈이 국가 전체에서 돌고 있는 돈의 규모에 비례해서 계속 만들어지는 것이다. 물론 이 돈이 즉시 국고로 들어오지는 않을 것이고, 물건이나 서비스의 형태로 여기저기 돌아다니면서 경제를 굴러가게 만들겠지만.

돈을 어떻게 벌 것인가? 에 대한 원론적인 대답은 누구나 알고 있다. “고객이 원하는 것을 주고 돈을 받는다.” 고객은 대체 무엇을 원하는가? 그에 대한 해답은 이미 수천가지의 직업이 이야기해주고 있다. 당신의 고객은 당신에게 돈을 주는 사람이다. 야채장사를 한다면 아줌마들이 주 고객일 것이고, 은행원이라면 대출받으러 온 사람일 것이고, 직장인이라면 회사 사장이다.



[각주:

1

]



동시에, 나는 타인의 고객이 될 수 있다. 내가 더 많은 이익을 내기 위해서는 적은 노력으로 많은 물건을 만들어야 하고, 또한 고객으로서는 다른 물건을 싸게 구입해야만 한다. 이것이 서로 상충하여 저절로 가격 균형이 맞춰진다는 이론이

보이지 않는 손

이론이다. 물론 이건 지금은

보이지 않는 위협

이 되어 있다. 가격 균형이 맞춰지는건 좋은데, 이미 현대 국가는 한 개인이 모든것을 자급자족하는 것은 불가능하기때문에 분명 누군가는 물건을 만들어내야만 한다. 하지만 이 물건이 너무 가격이 싸기 때문에 팔더라도 다른 것을 구할 수 없다면? 그런게 어떤게 있냐고? 가장 대표적인게 FTA에서 논란이 되고 있는 식량 문제다. 고기, 쌀, 뭐 이런것 등등. 농민중에는 부농도 있지만, 동시에 농가부채에 허덕이는 농민도 분명히 존재한다. 얼마나 많은지는 모르겠지만, 부농과 빈농이 있다는 건 명백한 사실이다. 아무튼 빈농이 있다. 물건을 만들어서 다 팔아도 다른걸 구할 수 없는, 그런 일이 바로 보이지 않는 위협이 된 것이다. 이러한 문제를 해결하기 위해서 우리나라에서는 곡식을 국가에서 전매하는 방식을 통해서 적절한 수익률을 보장해주는데, FTA가 체결되면 그런게 불가능해진다. 불공정 거래니까.

그런데 한가지 이상한 점이 있다. 주식은 대체 어떻게 돈을 버는 걸까? 주식은, 내가 아는 한 아무런 물건도 오고가지 않으며 권리를 사는 것이라고 알고 있다. 워낙 모르다보니, 인터넷을 검색해보았다. 그 결과, 배당금이라는 것으로 돈을 벌 수 있다는 사실을 알았다. 그러므로, 주식을 산 다음에는 주식을 비싸게 팔거나 배당금을 받거나 해서 돈을 벌 수 있다. 또한, 회사가 수익을 내지 못하면 배당금을 받지 못할 수도 있다. (아마 못받을것 같다) 그렇다면 결국 회사가 물건을 팔아서 낸 수익이 주주에게 돌아가는 셈인데, 주주가 회사에게 돈을 받았으니 회사는 주주의 고객이다. 그리고 회사가 원한것은 주주의 돈이었다는 점.

주식을 비싸게 판다는 것은 무엇일까? 결국, 그 회사에게서 배당금을 받을 권리를 파는 셈인데, 만약 회사가 더 크게 성장할 회사라면 파는 것 보다 배당금을 받는것이 낫고, 그냥 그정도라면 살때의 가격보다 비싸게 파는게 더 낫다. 물론 이게 그리 쉬울리 없으니 주식하다가 가산을 탕진하는 사람이 나타나는 거겠지.

이런저런 이유로, 돈은 돈을 벌기 위한 초석이 되며, 따라서 부익부빈익빈은 항상 심화될 것이다. 이 현상을 해결하기 위해서 가장 부자연스러운 방법은 사실 정부의 복지 정책이다.



[각주:

2

]



더 중요하고 더 근본적인 해결 방법이 있다. 돈이 많은 사람이 가난한 사람의 고객이 되는 것이다. 추석, 설 명절이 되면 누구는 사과 한개에 10만원짜리 선물세트하고, 간장 한병에 1000만원하는 선물하고, 그런다는데, 그런거 다 좋다. 그게 목에 안걸리고 넘어가니까 사 먹는거겠지. 그 돈 받고 판 사람은 또 얼마나 좋겠는가. 제발, 돈을 쌓아두지 말고 좀 써라. 그래야 가난한 사람이 돈을 벌 기회가 생긴다. 아무데나 써라. 그게 사치품이건 웰빙식품이건 뭐건 상관 없다. 돈이 돌지 않으면 돈이 있는 사람에게만 기회가 가고 돈이 없는 사람에게는 기회가 오지 않게 된다. 왜냐하면 돈이 되지 않기 때문이다. 하지만 시장에 돈이 풀리게 되면 돈이 없는 사람에게도 돈을 벌 기회가 생긴다. 왜냐하면 돈이 남아돌기 때문이다. 돈 많은거 자랑만 하지 말고 좀 써보란 말이다. 돈을 쓰지 않는것과 없어서 쓰지 못하는건 원인은 다르지만 아무튼 돈이 나오지 않는다는 점에서 가난한 것과 다를 바 없다. 아니, 왜 돈 벌어놓고 안쓰는데? 아까워서?

사실, 정부에서 국가차원의 돈을 풀어서 가난한 사람들을 돕는건 아주 중요하지만, 결과적으로는 밑빠진 독에 물붓기다. 왜냐하면 가난한 사람들이 돈을 갖고서 쓰면 그 돈은 결국 돈 많은 사람에게 가기 때문이다. 그리고 돈 많은 사람들은 세금을 적게 낸다.



[각주:

3

]



밑빠진 독의 밑을 막아주던가, 아니면 아예 바다속에 넣어서 밑빠진 독에 물이 가득차게 하거나, 이런식의 정책이 있어야 한다.

난 전문가가 아니므로 틀리거나 이상한 부분이 있을 수 있다. 지적 바란다.

  1. 물론 그 회사의 거래처가 고객이 될 수 있겠지만, 직접적으로는 그 거래처를 고객으로 삼는 사람은 “회사”라는 법인이다.

    [본문으로]
  2. 이게 나쁘다거나 필요없다거나 하는 얘기는 아니다.

    [본문으로]
  3. 캐난감한 상황이다 -_-;

    [본문으로]

bloggers in slump?

최근 잠수타는 블로거들이 많아졌다. 내 주변에서…

세보면, 한 6명정도가 여러가지 이유로 블로깅을 잠시 또는 영원히 접었다. 접는거야 각자 맘대로니까 별로 상관없긴 한데, 나도 과연 글이 안써질때는 블로깅을 접어야 하는 걸까? 하는 의문이 들었다. 그러나 나는 글이 안써진다거나 아주 오랫동안 바빠서 글 쓸 시간이 없다는 이유로 블로그를 접지는 않을 것 같다. 왜냐하면, 이건 내 블로그이면서 동시에 홈페이지 역할을 하기 때문이다. 이곳은 나의 40번째 홈페이지이다. 물론 어디에도 드러나 있지는 않지만, 나름 열심히 홈페이지를 만들었었고 그 최종적인 도착점이 이 곳이다. 따라서, 여기에는 내 사상이 그대로 녹아들어가 있다.

블로그란 나를 드러낼 수 있는 아주 좋은 수단의 하나이다. 그러므로 내가 여기에 수십년동안 글을 쓰지 못한다고 해도 그것 또한 내가 아주 바쁘거나 블로그를 까먹었음을 알려주는 신호가 될 것이다. 그저, 내가 인터넷의 한 작은 공간에 살아있었다는 증거가 되는 거라고 생각한다. 따라서 이 블로그는 결코 나에 의해서 접히지 않을 것 같다. 오랫동안 글이 올라오지 않는다면 그것 또한 내게 일어난 어떤 일 때문에 그렇게 된 것이다.

난 블로그에 좋은 글만 써야 한다고 생각하지 않는다. 일부러 카운터도 보이지 않게 해두었다. 티스토리 배너를 제외하면 단 한줄의 광고도 없다. 어디에서도 수익을 내지 않으므로 난 독자들에게 이 글을 읽어달라고 부탁할 이유가 없다. 그럼으로써 나는 내 블로그의 독립성을 유지할 수 있다고 생각한다. 어차피 내 머릿속에 생기는 수많은 상념을 내다 버리기 위한 외부기억장치로서 블로그를 다루고 있기 때문에, 아무도 내 글을 읽지 않는대도 별다른 느낌은 들지 않는다. 물론 많은 독자들이 내 글을 읽고 댓글을 달아준다면 나름 기쁘겠지만, 신경쓰지 않는다.

더 많은 글들을 쓰고 싶다.

베를린의 한 여인

베를린의 한 여인

전쟁이 보통의 평범한 사람들에게 어떤 영향을 줄 수 있는지, 그리고 우리가 사는 이 세상이 얼마나 보잘것 없는지 느낄 수 있는 책이 있다. “베를린의 한 여인”이 그런 책이다. 2차 세계대전은 인류 역사를 통틀어 가장 큰 비극 중의 하나로 꼽힌다. 독일은 그 전쟁에서 패배했다. 이 책의 작가는 익명의 어떤 여인인데, 전쟁 중 베를린에 남아있던 독일 국민의 한 사람이다. 이 책을 읽다보면 전쟁이 일어나면 어떤 비극이 일어나는지 알게 된다. “포기”라든가 “체념”이라든가 “절망”이라는 개념이 사치스럽게 느껴질 정도의, 그런 비극이다.

전쟁을 수행하는 사람들은 결국 전쟁 전에는 민간이이었던, 평범한 사람들이다. 가령, 옆집사는 평범한 대머리 아저씨가 전쟁이 일어나면 적군 수백명을 사살하고 장렬하게 전사하는 영웅이 될 수도 있다. 전쟁은 전쟁에 참여하는 사람중에 단 한명도 그 사건이 일어나기를 원하지 않는다는 점에서 비극이다.

이 책에는 전쟁 속에서 사람들이 어떻게 살았남았는지 기록한 책이다. 개인적인 일들을 기록한 개인사이지만, 전쟁 속에서는 누구나 똑같은 개인이라는 점에서 이 책은 역사책이다.

인간의 잔인함을 여실히 드러낸다는 점에서 전쟁은 너무나 인간적인 사건이다. 아직도 세계에는 전쟁중인 나라가 있으며, 그곳에 사는 사람들도 이 책에 나온 이야기와 같은, 비슷한 일들을 겪으며 힘들게 살아가고 있을 거라고 생각한다.

전쟁을 계속 해야 한다고 생각하는 사람들부터 일단 최전방에 나가봐라. 계속 하고 싶겠나?

책 뒤에 있는 서평 중의 한 구절을 인용하며 마친다.

글을 깨우친 사람이라면 이 책을 지금 당장 읽어야만 한다!

– 타게스 차이퉁

IE7에서 약간 이상한거

난 “일단 빨리” 뜨는 걸 좋아하기 때문에 IE7의 메인페이지는 about:blank로 설정해 두고 있다.

그런데 왜…

conneting이 뜨면서 조금 늦게 뜨는거지 -_-;

어디에도 연결하지 말라니깐…;

2030년에는?

환경

화석연료 고갈로 대체에너지 사용의 필연적 증가 -> 온실효과 감소/온난화 감소 -> 기상 이변 줄어듬 -> 재난으로 인한 난민 감소

사막화는 따라서 저절로 해결된다.

대체 에너지 사용 증가 : 대체에너지는 대부분 재생 가능한 에너지 -> 따라서 에너지 생산비용 감소 -> 각종 재화의 생산원가 절감 -> 물가 안정

대체에너지 기술의 발달은 나노과학의 발전으로부터 유도될 것이다 -> 나노과학의 발전은 생활의 편리함을 가져다 주지만 독성을 해결하지 못하면 위험하다

대체에너지 : 핵융합 발전, 태양광 발전, 풍력 발전 등.

컴퓨터

인터넷은 더욱 진화하여 interactive web/symantic web으로 진화한다. 네트워크로 모든 응용프로그램을 사용한다. 이것은 현재도 구글 오피스, 인터넷 게임, 전자우편 서비스에서 사용되는 중이다.

나노기술과 병렬처리 기술의 발달에 따라, 처리 속도는 더욱 빨라지고, 처리 용량은 발전하여 적어도 유치원생 정도의 인공지능을 가지는 슈퍼컴퓨터가 등장할 수 있다.

양자 컴퓨터가 발달한다.

ubiquitous web이 발달하여, 많은 사물들이 인터넷으로 연결된다. 원격지에서 집안의 어떤 일을 제어하는 것이 가능하다.

따라서 web에서 hacking/cracking에 의한 범죄가 심각한 사회 문제로 대두된다.

국민을 감시하는 big brother시스템이 도입된다. 국가에 의한 인권침해가 본격적인 사회문제로 대두된다. 범죄예방 등을 위해 도입된 시스템은 곧 국가의 국민 통제를 위한 수단으로 바뀌게 될 것이다.

우주기술

달에 기지를 건설하여, 달에서 자원을 채취하여 지구로 가져오게 된다. 달에서 강력한 태양 광선으로 많은 전력을 생산하여 지구로 전송한다.

이후, 달에 민간인도 거주하는 영구 거주구역이 생길 수 있다. (한 2100년쯤…)

달은 남극과 마찬가지로 지구 전체의 공유지가 되어야 한다.

달에서의 정확한 위치 측정을 위한 달GPS가 개발/사용된다.

우주왕복선으로 민간이 여행을 가는 것이 상당히 합리적인 가격으로 떨어진다. 이때쯤에는 우주 쓰레기 문제가 실제적 문제로 대두될 것이다.

기아/난민 문제

UN에서 대체에너지 기술의 지원을 통한 원천적인 문제 해결을 위하여 노력한다. 미국이 쓰는 경제 식민지 방식의 경제원조는 국제 사회로부터 비난을 받을 것이다.

북한은 국제 사회의 원조를 받고 적대국들과 적대관계를 청산하고 민주주의 국가로 변신할 것이다.

질병/의료기술

의료영상기술이 발달하여 저렴한 가격에 초기 암 진단이 가능하게 된다.

인체의 절단된 신체 부위를 재생하는 기술이 개발된다. 아울러, 장기이식이 아니라 장기 자체를 배양해서 이식하는 기술이 발달한다.

(따라서 장기밀매 문제는 원천적으로 해결된다)

기타등등…

전세계적인 자유무역협정(FTA)이 체결되어 모든 곳에서 생산된 물건이 모든 곳에서 관세없이 판매될 것이다. 거의 세계적 규모의 경제공동체가 이루어진다.

에덴의 용 by 칼 세이건

아주 유명한 작가인 칼 세이건이 쓴 뇌과학 입문서이다. (라고 생각한다)

“지능”은 어떻게 만들어지는지, 뇌와 지능의 관계는 어떤지, 옛날책인데도 불구하고 지금 읽어도 충분할만큼 내용이 충실하다.

세명의 사기꾼 by스피노자의 정신

세명의 사기꾼

스피노자의 정신 지음

성귀수 옮김

“생각의 나무” 출판

ISBN 89-8498-507-4

감상은 길지 않다. 이 책은 내가 지금껏 종교에 대해 생각해 왔던 것들을 나 대신 정리해준 책이다. 신의 본질적 속성, 종교의 유래, 진실과 거짓 등에 대해서 간결하게, 그러나 명확하게 밝히고 있다. 만약, 이 책을 읽고도 자신의 신앙심이 전혀 줄어들지 않는다면 그는 종교적으로 진실된 사람일 것이다. 이 책을 읽고서 일방적인 분노나 신성모독을 느끼기만 할 뿐이라면, 그는 그 종교에 중독된 사람 외에 아무것도 아니다.

꼭 읽기를 바란다. 읽고 싶은데 돈이 없으면 몇권 정도는 선물해줄 수도 있다.

자기 참조 구조체

VIPS를 쏜다는 말에 혹해서, 친구의 C언어 프로그래밍 숙제를 해주다가, 재미난걸 알아버렸다.

변수를 이용할 때, 구조체 안에 있는 특정 변수의 값만 필요하다면 .연산자를 쓰면 된다는 건 알고 있다. 구조체 포인터에서 그 안에 있는게 필요하면 ->연산자를 쓰면 된다.

그런데, 구조체를 이용해서 배열을 이용하면, 배열 각각의 요소를 처리하는건 쉽지만 배열의 순서나 배열을 중간에 추가하는 작업같은건 아주 어려운 작업이 된다. 이 작업을 자기참조구조체라는 개념을 이용하면 쉽게 해결할 수 있다.

선언은 간단하다. 구조체를 하나 선언하는데, 다음과 같이 선언하면 된다

struct mania

{

int a;

struct mania *next;

}

그러고나면, next라는 포인터는 mania라는 구조를 구조체를 가리키게 된다. 그럼 next는 다시 그 안에 next를 갖고 있다. 물론 이 next와 앞의 next는 내부변수이므로 서로 구별되고, 다른 주소를 가리키게 되므로 아무 문제 없다. 문제는 가장 마지막 변수에서 생기는데, 마지막 변수는 next가 없으므로 에러가 난다. 따라서, 최초에 선언할 때 next를 NULL로 초기화를 해 두면 괜찮다.

우선, 제일 처음 구조체를 선언할 때 다음과 같이 해 준다.

struct mania dummy; //임시 시작점이다.

struct mania *start=&dummy; //시작점의 주소를 start라는 포인터에 넣는다. struct mania *sequence; //실제로 우리가 사용할 포인터이다.

struct mania *work; //작업용 포인터

그럼, 이제 첫 세팅을 해보자.

start=&dmy;

start->next=NULL;

처음엔 당연히 아무것도 없으므로 NULL이다.

여기에 뭘 넣기 전에, 일단 next에 해당하는 녀석의 메모리를 확보를 해 둘 필요가 있다. 메모리의 확보는 malloc, calloc같은 함수로 한다.



[각주:

1

]



sequence=(struct mania *)malloc(sizeof(struct mania));

이렇게 하면 sequence라는 이름의 mania구조를 가진 포인터에 sizeof(struct mania)만큼의 크기를 가진 메모리가 할당된다. 그런데, 이건 딱 한개만 확보하는 것이므로 체인의 고리를 만들어 나갈 때는 만들 때마다 메모리를 할당해야 한다. 이 점에 주의해서 문제를 잘 해결해 보기 바란다.

아무튼, 이걸 이용하는 개념은 다음과 같다.

제일 처음에 start포인터를 사용한다.



[각주:

2

]




start->next는 start포인터 뒤에 있는 녀석이다.

물론 start->next->next는 start포인터의 뒤에뒤에 있는 녀석이다.

sequence는 체인의 가장 끝에 있는 녀석이다.

이제, next의 포인터를 적당히 지정해주기만 하면 체인을 이리저리 연결할 수 있다.

가령, 두번째 체인을 세번째 체인과 바꾸고 싶다면?

적당한 mania구조를 가진 temp를 지정하고

struct mania temp;

temp=start->next->next;

start->next->next=start->next;

start->next=temp;

이런식으로 하면 두번째와 세번째가 바뀐다.

자, 나머지는 잔머리다! (무책임 -_-;)

  1. 난 말록, 콜록, 뭐 이렇게 읽는다. calloc은 “씨-얼록”으로 읽는게 맞다는데, 뭐 알아들으면 되지 않겠는가.

    [본문으로]
  2. start, sequence, next등은 그냥 임의로 붙인 이름일 뿐이다!

    [본문으로]

함수

C언어는 함수형 언어이다. 모든것이 함수로 이루어져 있다는 뜻이다. 자세히 알아보자.

함수는 수학적으로는 집합A와 집합B가 정해져 있을 때, 다음과 같이 정의한다.

A의 원소에 B의 원소를 짝지어서 (a,b)로 쓴다. 이 경우, 모든 (a,b)의 집합의 어떤 부분집합 f는 함수이다.

만약, B의 임의의 원소 b에 대해서 (a,b)가 존재하면 f는 전사함수(surjective function, surjection)라고 부른다. 만약, B의 원소 b가 결정되었을 때, (x,b)를 만족하는 x를 모아둔 A의 부분집합의 원소가 1개뿐이면 f는 단사함수(injective function, injection)이다. 그리고 전사함수이면서 단사함수이면 전단사 함수(bijection)라고 부른다. 이건 고등학교때 배우는 쉬운 내용이므로 넘어가자.

수학적으로는 그런데, 좀 어렵다. 따라서, 좀 쉽게 정해보자. 위와 똑같은 얘기를 아래와 같이 쉽게도 할 수 있다.

a는 A의 원소이고 b는 B의 원소라고 하자. 만약 a를 결정했을 때 그와 관련된 b를 알 수 있으면, 그런 규칙은 함수라고 부른다.

만약 모든 B의 원소가 A에 있는 적어도 한 원소와 관련되는 함수는 전사함수이다. 만약 B의 어떤 한 원소로 오는 A의 원소가 유일하게 결정된다면, 그런 함수는 단사함수이다. 둘 다 되면 전단사 함수이다.

여전히 어려운가? 상관없다. C언어의 함수를 배우는데는 아무런 문제가 되지 않는다. C언어에서의 함수는 아주 간단하다.

type 함수이름(변수1, 변수2…){

함수가 할 일

return 되돌려줄 변수;

}

이런식으로 함수를 만든다. type은 int, float, double, char, void 등이 있으니 맘대로 골라쓰자. void는 return할게 없을 경우에 사용한다. 물론 입력받을게 없는 함수도 만들 수 있다. 변수에 아무것도 쓰지 말고 void만 써주면, void는 “아무것도 없다”는 걸 알게 해준다. 이런식으로 기능을 함수로 쪼개는 것은 상당히 재미있다.

내가 이 얘기를 하는 이유는, 함수라고 부르는 대상이 상당히 재미있는 일을 해주기 때문이다. 가령, 숫자 두개를 받아서 더하여 출력하는 함수가 있다고 해 보자. 그럼 함수는 변수 2개를 입력받고, 내부적으로 적당히 처리해서, 출력을 해주면 된다. 이 사실을 알려주는 것을 선언이라고 한다. 선언은 함수의 정의와는 다른데, 정의는 함수가 무슨 일을 하는지 정확히 다 알려주는 것이지만, 선언은 그냥 변수를 무엇을 받고 결과를 어떻게 내보내는지만 말해준다. 그리고, 선언과 정의를 동시에 할 수도 있다. 중요한 것은, 함수의 정의는 어디에 있어도 상관 없지만, 선언은 그 함수가 최초로 쓰이기 전에 반드시 존재해야 한다는 점이다.

이것은 솔직히 말하면 귀찮은 작업이긴 하다. 하지만 귀찮은 것을 신경쓰지 않는다면, 재미난 것을 해볼 수가 있다.

double add(double,double);

이런 식으로 선언을 했다고 하자. add라는 함수는 실수 두개를 받아서 실수를 출력하는 함수가 된다. 그럼 정의는?

double add(double a, double b){

double c=a+b;

return c;

}

이런식으로 쓸 수가 있다. 중요한건, return해주는 변수 c는 처음에 add를 정의할때 사용한 double과 같은 타입을 갖고 있어야 한다는 점이다. 이것만 주의하면 된다. 만약 add를 좀 다른 방법으로 계산하고 싶다면, 다르게 정의하면 된다.

double add(double a, double b){

double c=a+2*b+3.0;

return c;

}

이렇게 하면 우리가 원하는대로 add라는 함수가 정의된다. 아무 상관 없다.

C언어에서 알고리즘은 그래서 함수가 어떤 기능을 하는지, 그리고 그 함수를 이용해서 또다른 함수를 어떻게 만들지 고민하는 과정이라고 보면 되겠다. 그런점에서 C언어는 상당히 수학적으로 구성할 수 있는 언어라고 생각한다.

수학은 최초에 무정의 용어와 그 무정의 용어의 사용법에 대한 공리Axiom가 있어야 한다. 그리고 그 공리와 무정의 용어를 이용해서 다른 정리들을 증명해 간다. C언어는 함수가 사용되기 전에 선언되지 않으면 사용할 수 없다. 그리고 선언되기만 하고 정의되지 않으면 사용할 수 없다. 수학에서도 알려지지 않은 정리는 사용할 수 없으며, 추측으로 그럴듯해 보이더라도 기존의 정리들로부터 증명되지 않으면 사용할 수 없다. C언어에서 무정의 용어와 공리계에 해당하는 것은 standard C의 문법 체계와 기본적인 라이브러리에 해당할 것이다.