« Previous : 1 : ... 128 : 129 : 130 : 131 : 132 : 133 : 134 : 135 : 136 : ... 215 : Next »

지난 2013년 5월 4일, 어린이날을 앞두고 본인은 교회 지인 가족의 초청으로 파주 임진각 일대에 안보 관광을 갔다 왔다.
그 경험에 힘입어 그로부터 거의 정확히 1년이 지난 2014년 5월 3일엔, 본인은 교회 친구들을 데리고 철원에 안보 관광을 직접 갔다 왔다.

본인은 철덕의 성지순례 코스로서 철원을 오래 전부터 주목하고 있었다.
우리나라 군사분계선의 주변을 지도로 살펴보면, 판문점이 있는 서쪽이야 평지이지만 동쪽으로 갈수록 빽빽한 산악 지형이 이어진다. 그런데 수풀을 머리숱에다 비유했을 때 땜통 같은 지역이 강원도에 동서로 딱 두 군데 있는데, 하나는 '평야'가 있는 철원이고 다른 하나는 분지처럼 생긴 양구이다. 북한 역시 이 두 지역을 염두에 두고 과거에 남침 땅굴을 팠었다(철원 쪽으로 #2를, 양구 쪽으로 #4를).

철원은 예로부터 천혜의 자연이 살아 있는 곡창 지대요 한반도 중부 지방의 교통의 요지이기도 해서 전략적 가치가 높았다. 6·25 휴전 이후에 서울이 북한과 더욱 가까워진 건 좀 ㅎㄷㄷ한 일이지만, 그래도 치열한 전투 끝에 철원을 수복해 낸 것은 굉장한 쾌거였고 김 일성도 이를 애석해했을 정도라고 한다. 여긴 나름 38선 이북이기 때문에 분단 직후 6·25 전쟁 전까지는 북한에 속해 있었다.

교통의 요지라는 건 여기에 철도가 있기도 했다는 뜻이다. 경원선이 지났고 금강산 관광 철도도 있었다. 우와..!
그래서 본인은 철원에 있는 다른 자연 관광지나 유적지들은 제쳐 두고 오로지 안보 그리고 철도와 관련된 곳을 골라서 답사하려고 마음먹었다. 로드뷰, 항공 사진 등을 참고하면서 모든 스케줄을 짠 뒤, 드디어 답사를 떠났다.
동반자가 없으면 나 혼자라도 차 끌고 가려고 생각했으나, 다행히 교회 친구를 세 명이나 꾀어(?) 내는 데 성공했다. “저런 델 도대체 왜 가 ㄲㄲㄲ” 같은 놀림과 비아냥은 물론 있었지만.. 그래도 나름 자매까지 한 명 불러냈다! ㅋㅋ

사용자 삽입 이미지

아침 7시 반, 떠나는 날의 아침이 밝았다.
토요일 이른 아침엔 도로가 아주 한산하고 소통이 원활했다. 날씨도 아주 쾌청하고 좋았다.
동부 간선 도로를 탄 뒤 의정부에서부터 국도 43호선만 죽어라고 타고 올라가면서 드디어 철원에 도착했다. 북쪽으로 갈수록 군부대가 수시로 눈에 띄기 시작했다.
편도로 약 85km를 달렸다. 고속도로의 혜택을 받을 수 없는 곳이기 때문에 가는 데 2시간이 넘지 않을까 예상했지만, 그래도 1시간 반 만에 잘 갔다.

처음 간 곳은 고석정 관광 사업소였다.
고석정 계곡은 예정에는 없이 시간이 남아서 들른 것일 뿐이었는데.. 경치가 끝내주게 아름다웠다. 하루 종일 날씨도 굉장히 좋았고 말이다.

사용자 삽입 이미지사용자 삽입 이미지사용자 삽입 이미지

다음으로 예매를 해 둔 패키지 안보 관광을 떠났다.
평일에는 허가를 받은 뒤에 민통선 안으로 자가용을 몰고 들어갈 수도 있는 반면, 인파가 몰리는 주말에는 셔틀버스만 들어갈 수 있다고 한다.

우리가 탄 버스는 어린 학생들까지 포함해 44개 좌석이 꽉 찬 만석이었다. 하지만 작년에 파주· 임진각· 도라산 역 일대는 외국인들도 많고 민통선 내부까지 완전 바글바글했던 반면, 여기는 우리 관광객 말고는 주변에 사람이 거의 없으며 조용하고 한산한 편이었다. 그 이유로는 여기는 파주보다 서울에서 더 멀고 교통이 불편하며, 또 황금연휴여서 사람들이 다른 곳으로 놀러 갔기 때문이 아닌가 싶다.
임진각으로 가는 길은 경의선 철도뿐만 아니라 자동차 도로도 신호 대기가 없는 자유로가 시원스럽게 뚫려 있다. 그러나 철원은 그렇지 않으니까 말이다.

버스는 지방도 464호선의 모 구간에서 좌회전하여 민간 지도에 나와 있지 않은 민통선 안으로 들어갔다. 여기서부터는 초소를 지날 때마다 군인이 수시로 탑승하여 탑승 인원 숫자가 맞는지 검문을 했다. 그리고 버스는 토교 저수지보다도 더 북쪽으로 남방 한계선으로 추정되는 철조망을 따라 쭉 오르막을 오르기 시작했다.

사용자 삽입 이미지

드디어 제2 땅굴의 입구에 도착했다.
제1 땅굴이 발견된 지 반 년이 채 되기 전에, 거기서(연천) 그리 멀지 않은 곳에서 더 깊고 더 큼직한 땅굴이 발견되었으니 국가적으로 얼마나 충격이 컸을까?

제3 땅굴은 열차로 드나드는 진출입로가 뚫려 있으며 제4는 터널 안까지 열차로 다닐 수 있는 반면, 제2는 땅굴 출입과 관련된 그 어떤 동력 시설도 없다. 그리고 내부의 길이도 제3 땅굴보다 더 길다. 그러니 오갈 때 발품을 좀 팔아야 한다.
땅굴 내부는 사진 촬영이 법적으로 금지되어 있다.

땅굴이라는 건 땅 속에 뭔가 빈 공간이 있다는 걸 감지하는 것이 별개이며, 그걸 찾아서 저지하려고 실제로 파 내려가는 게 또 별개이다. 우리나라에서 뚫은 출입로 땅굴에 들어가면, 북쪽으로도 길이 있고 남쪽으로도 길이 있다. 북쪽은 북한이 파 내려온 from 방향이고, 남쪽은 걔네들이 의도한 목적지 to 방향이다. 이 땅굴의 경우, 남쪽은 더 진행할 수 없게 길이 막혀 있고, 북쪽으로 약 500m 정도, 남방 한계선에 2~300m 앞까지 접근한 곳까지가 관광객에게 개방되어 있다고 한다. 사실 그건 제3 땅굴도 마찬가지다.

이 땅굴의 시점은 도대체 북한 어디에 있는 걸까? 쟤네들은 지하에 무슨 짓을 해 놨는지가 몹시 궁금해진다.
한반도가 통일되어서 땅굴도 남쪽 종점과 북쪽 종점이 모두 한데 뚫린 채로 역사 교육 현장으로 개방되는 날이 오길 기대해 본다. 물론, 여기서 말하는 통일이란 연방제니 나발이니 하는 말장난이 아니라, 김씨 부자 동상을 무너뜨리고 주체사상을 완전히 지워 버리는 제대로 된 통일을 말한다.

사용자 삽입 이미지

제2 땅굴을 탐사하고 저지하는 과정에서 이런 희생자가 있었다. 저기 나오는 계급은 아마 최소한 2계급 특진은 받은 것일 테고, 실제로 작업을 한 사람들은 다 병사 신분이었을 것이다.

내 기억이 맞다면, 제1 땅굴은 발견 직후 지하에 있던 북한군 인부와의 총격전으로 인한 전사자가 있었고, 제2 땅굴 탐사 중에 발생한 전사자는 내부에 있던 지뢰를 밟고 산화했다.
이런 경험을 토대로 제3 땅굴을 탐사하던 때는 딱히 사상자가 나오지 않았으며, 제4 땅굴을 탐사할 때는 사람 대신 군견이 희생되었다. 땅굴이 발견되고 위험 요소가 완전히 제거되어 안보 관광지로 개방되는 것조차도 다 이런 누군가의 희생이 따른 덕분인 것이다.

사용자 삽입 이미지

어라? 제2 땅굴을 발견하는 데에도 귀순자의 힌트가 기여했었구나.
땅굴이 북한 소행이라는 증거들은 제3 땅굴 소개 자료에도 거의 똑같이 있었던 걸로 기억한다.
쉽게 말해 북한은 NATM 공법으로 굴을 팠고, 우리나라가 그 땅굴을 관통하기 위해 따로 굴을 판 건 실드 공법과 비슷하다는 얘기인지?

사용자 삽입 이미지

1968년이면 땅굴이 발견되기 한참 전이었고 서울 근처와 강원도 일대에 온통 무장공비들이 출몰하던 무시무시한 시절이다. 그런데 북한이 그때부터 벌써 땅굴을 팔 생각을 하고 그 땅굴의 남한 쪽 출구를 어디쯤에다 낼지를 생각했다니 이건 뭐 흠..?
그나저나 저 사살된 간첩의 임무가 그런 것이었다는 건 어떻게 알아냈는지가 궁금하다.

땅굴 구경을 마친 뒤, 남방 한계선과 DMZ가 코앞인 평화 전망대로 갔다. 동송 저수지 근처이니, 구글 지도에서 위치가 어디인지는 이제 알겠다. (그나저나 철원에는 다른 곳에 승리 전망대도 있다고 그런다.)

(to be continued)

Posted by 사무엘

2014/05/09 08:21 2014/05/09 08:21
, , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/960

4. 내세

제아무리 불신자 무신론자라 해도 죽음을 두려워하지 않는 사람은 별로 없다. 하지만 죽음 이후의 세계는?
이건 마치 “목 잘린 직후의 느낌이 어떻냐”만큼이나.. 체험해 본 사람이 이 세상에 살아 있질 못하니 실험으로 입증할 수 없다. 당연히 과학적인 방법론이 접근할 수도 없으며, 사람들이 제각각 자기 종교관에 의지해서 신념을 가질 수밖에 없다. 윤회· 환생이든, 완전 소멸이든, 하늘과 지옥이든 그 무엇이든지 말이다.

이 분야는 불가지론의 영역이다 보니, 옳다 그르다 같은 감정 싸움은 딱히 없다. 뭐, 굳이 하나 지적하자면 “예수 안 믿으면 다 지옥 간다니 너네 종교는 참 편협하고 배타적이다” 정도의 딴지만 있을 뿐.
그러나 그건 협박이나 공갈이 아니다. 공의로운 하나님이 죄를 심판해서 죄인을 지옥에 보낸다는 거지, 그 말을 전하는 크리스천이 다른 사람을 제멋대로 해코지 차원에서 지옥에 보낸다는 말이 아니다. 그 교리가 안 믿어지면 그냥 개인적으로만 안 받아들이고 안 믿으면 된다.

그리고 기독교의 내세관은 그 배타적인 것 딱 하나만 받아들이고 넘기면, 나머지는 생각보다 굉장히 뒤끝 없고 깔끔하고 건전하다! 이건 내가 자신 있게 말할 수 있다. 귀신 없고 미신 없고, 산 자와 죽은 자 사이의 교류 없고, 죽은 사람 갖고 현질(=돈 내라)을 유도하는 지긋지긋한 종교 장난질이 없다! 그 대신 부활의 소망만이 있을 뿐이다.

이 점을 곰곰이 생각해 봐야 한다. 사람이 죽고 나서 혼이 소멸하고 모든 게 그대로 끝이라면... 내가 단언하는데 이 세상을 지금처럼 힘들게 살 필요라고는 눈꼽만큼도 조금도 없다~~!!! 자살이 전혀 죄가 될 필요가 없다. 누구라도 쉽게 내릴 수 있는 결론이다.

5. 보편적인 윤리

기독교가 가르치는 성경적 윤리관은 어지간한 세상 사람들이 ‘진보 트렌드’라고 생각하는 것들과는 완전 정반대인 수구꼴통(?) 성향이라고 생각하면 정확하다.
일단 필요악이라고 여겨지는 것에는 다 긍정적이다. 사형제, 체벌, 나라 지키는 군대, 공권력 같은 것. 절대적인 선악 기준이 없을 때는 마치 “닭이 먼저냐 계란이 먼저냐”처럼 흉악범의 인권이 더 중요한지 피해자 유족의 인권이 더 중요한지를 제대로 판단하기 어려울 때가 있다. 그러나 하나님의 입장은 단호하기 때문이다.

사형제가 있어서 범죄가 줄어들었느냐, 범죄자의 교화는 어떡하냐 그딴 건 하나님의 관심사가 아니다. 성경의 판결은 “흉계를 품고 사람을 고의로 죽게 한 사람은 이 땅에서 살 자격이 없다.” / “ ‘살인하지 말라’를 어기는 자는 반드시 죽일지니라”인 것이다. “너 고소”가 아니라 “너 죽어”다. 신구약을 막론하고 동일하다.
흉악범도 개인적으로야 예수 믿고 구원받을 수 있지만, 법적으로는 형벌에 의해 세상 하직해야 한다. 자기 목숨 바쳐서 피해자 유족들의 한을 풀고 자기 피로 땅을 깨끗하게 해 준 뒤, 빨랑 하늘나라 가야 된다.

그리고 성(sex) 관념도 진짜 깔끔하다. (1) 결혼한 (2) 남자사람과 (3) 여자사람이 하는 것 말고는.. (1)부터 (3)까지 한 단서라도 누락되거나 바뀐 것은 전부 음행, 죄악이고 그것도 굉장히 큰 죄이다.

이런 법칙들이 온갖 인간적인 부조리와 모순을 핑계로 문란해지고 무너졌다고 해서 인권이(특히 여성 인권) 실질적으로 향상되거나 하지 않는다. 그 대신 야금야금 “가정이 무너지고 사회가 무너지고” 헬게이트만이 열릴 뿐이다. 당장 당신의 부모님이 당신을 낳은 뒤 책임감 있게 가정을 꾸리지 않았다면 지금과 같이 성장한 당신이 있을 수 있었겠는가?

물론 이 사실을 인정하지 않는 사람들과는 늘 이상한 통계 자료나 주고받으면서 답 없는 쳇바퀴 같은 논쟁이 벌어지곤 한다.
이 윤리관의 경우, 다른 창조/진화나 성경 같은 이슈와는 달리, 굳이 크리스천이 아니어도 단순히 보수적인 성향 때문에 크리스천과 동일하게 생각하는 사람도 있을 수 있다. 그러나 요즘 같은 시대에 그런 경우는 매우 드물 것이다.

6. 예수님의 부활

위에서 소개된 여러 아이템들도 중요하지만, 뭐니뭐니해도 기독교와 비기독교를 가르는 가장 크리티컬한 변수는 바로 예수님의 부활에 대한 인식이다!

세속 백과사전이나 세계사 만화, 인명 사전, 위키백과 같은 데서 ‘예수’를 찾아 보시라. 제아무리 개독안티라 해도 예수라는 인물 자체가 허구라고는 안 그런다. 그건 역사적 증거가 너무 분명해서 누구라도 부인할 수 없는 사실이다.
그러나 열이면 열 다 십자가에 못 박혀 죽었다는 얘기로 끝난다. 아니면 부활까지도 소개는 하지만 “성경이라는 책에 따르면 그랬다고 한다, 기독경에 따르면 그랬다고 전해진다”라고 단서는 꼭 붙이고서, 우리는 저 진술에 책임 안 진다는 식으로 매우 조심스럽게 말한다. 내 말이 맞는지 틀린지 직접 확인해 보아라~!

“십자가에 못 박혀 죽고 묻혔다가 장사된 지 사흘 만에 부활했다”라고 쓰는 순간 그 책은 객관성을 잃고 특정 종교 집단의 교리를 대변하는 경전(?) 내지 간증집이 돼 버리기 때문이다. 부활이 역사적으로 진짜 사실인지 아닌지는 이 시점에서 관심사가 아니다.

정체불명의 위경이나 이상한 사료를 토대로 이 예수님의 부활 사건을 부정하려는 시도가 없지는 않았다. 예수는 사실 완전히 죽지 않고 기절해 있었으며, 나중에 제자들의 도움으로 무덤을 탈출한 뒤, 막달라 마리아와 결혼해서 후손을 남기고 죽었다는 얘기까지 지어낸 개독안티가 고대로부터 있었다. 고대의 철학자나 석학들도 현대의 지성인 무신론자보다 지성과 지능이 떨어지는 사람들이 결코 아니었다.

그러나 그런 얘기는 얼마 못 가 쏙 들어갔다. 지금도 예수 부활을 공격하는 얘기가 강경한 개독안티 커뮤니티 위주로 없지는 않으나, 그래도 성경 자체에 대한 공격 내지 창조/진화보다는 강도가 “훨씬” 덜하다. 이 주제는 너무 민감한 나머지 마치 ‘내세’만큼이나, “진실은 저 너머에” 수준으로 그냥 쉬쉬 하는 분위기다.

그야말로 오합지졸 겁쟁이었던 예수님 제자들이 불과 수십 일 만에 예수 전하느라 죽음도 두려워하지 않는 역전의 용사로 뒤바뀐 것, 고대로부터 수많은 신자들이 자기 목숨을 초개같이 버리면서 믿음을 지킨 것, 더 나아가 오늘날까지 기독교회가 수백, 수천 년을 찬양하고 경배하며 우려먹는 레퍼토리이자 복음의 핵심 근거가 바로 예수님의 부활이다. 새마을호 열차에서 Looking for you가 흘러나온 사건 따위하고는 비교가 안 된다.

그게 호락호락 정면으로 뒤집히고 반박당할 것 같은가? 아예 예수님을 비롯해 사도들의 존재를 송두리째 다 무시하고 부정하지 않는 이상, 부활만 쏙 부정하기란 대단히 어렵다. 예수님이 기절했다가 주변의 도움으로 무덤을 탈출해서 살아난 거라면 제자들이 그걸 모를 수가 절대 없었을 텐데, 겨우 그런 예수님을 보고는 역전의 용사로 바뀌고 예수님의 부활과 승천을 담대히 증언하다가 순교까지 했다고? 에라이..

모르긴 몰라도 아폴로 계획 달 탐사 자작극 음모론을 반박하는 것만큼이나 예수 기절설 같은 건 단박에 반박 가능할 것이다. 법학자로서 무신론· 회의론자이다가 예수님의 부활이 법적으로 너무 분명하고 확실한 사건이라는 걸 발견한 사이먼 그린리프 같은 사람은 과연 무엇을 알아낸 것인지가 궁금해진다. 그리고 이 예수라는 인물이 정말 부활했는지의 여부에 따라, 성경 전체의 실질적인 진위 여부와 여러분의 혼의 미래까지 180도 달라질 수 있다!

※ 결론

잠시 눈을 돌려 국가와 국가 사이의 분쟁을 좀 생각해 보자.
우리나라는 당장 북한과 휴전 상태이고 대립 상태이다. 물론 365일 24시간 내내 긴장만 하고 있으면 너무 피곤하고 피차 좋을 게 없으니, 가끔은 대화도 시도하고 화해 무드도 만들려 노력한다. 그러나 둘은 근본적으로 통치 체제와 지향하는 바가 180도 완전히 너무 다른 정치 집단이며 상대방을 적대적으로 보고 있다. 그러니 이 상태로는 둘은 도저히 절대로 하나가 될 수 없다. 하나가 다른 하나를 잡아먹지 않으면 안 된다.

그리고 우리나라는 일본하고도 미묘한 애증의 관계가 있다. 경제 쪽으로는 분명 협력과 공존 관계이며, 개인적으로야 한국인과 일본인이 좋은 관계를 유지하고 있는 경우가 매우 많을 것이다.
그러나 정치적으로 한국과 일본은 독도 때문에 여전히 대립하고 있고, 과거사 문제도 해결 기미가 안 보인다.

바로 이런 세상 국가들의 정치적 분쟁과 비슷한 맥락으로..
개인간의 영적 세계에는 예수님을 두고, 생명의 기원을 두고, 성경을 두고 다양한 분쟁 지대가 존재하고 있다. 이것도 일시적인 휴전 상태일 뿐, 완전한 종전이 아니다. 기회가 되면 이 불씨는 언제든지 대형 화재로 번질 수 있다. 크리스천은 불신자와는 얼마나 넘사벽급으로 다른 사고방식을 갖췄는지 자신의 영적 정체성을 잊지 말아야 한다.

물론 그렇다고 해서 이건 혈과 육의 싸움이 전혀 아니다. 그러니, 이런 걸로 신자와 불신자끼리 감정적으로나 물리적으로 싸운다거나, 한 신념을 남에게 폭력과 협박으로 강요한다거나, 그걸 인간의 존엄성과 관련된 차별의 근거로 활용한다거나 해서는 정말 절대로 안 된다. 크리스천은 다른 불신자와도 ‘가능한 한’ 화목하게 지내야 한다(롬 12:18).

그런데.. 종교 쪽 논쟁은 서로 싸워 봤자 별로 답도 안 나오고 서로 말도 안 통하고 감정만 나빠진다고 해서 아예 완전 입 다물고 말을 말고 “너는 네 식대로 믿어라. 나는 내 식대로 믿는다”고 선을 마냥 그을 수도 없는 노릇이다. 성경의 판결대로라면 이건 또 다른 극단이며 크리스천의 직무유기죄로 빠진다. 성경을 읽다 보면, 현실과 너무 동떨어진 진술로 인해 그럼 도대체 뭐 어쩌라는 건지 싶은 딜레마가 느껴질 때가 왕왕 있다.

이런 문제의식이라도 느낀 적이 있는 사람이라면 크리스천으로 최소한의 영적 생명력은 갖췄다고 하겠다.
그런데, 나라고 해서 뾰족한 수가 있는 게 아니고, 모든 분야에서 개독안티와의 어떤 논쟁도 다 이길 방대한 지식을 갖춘 것도 아니다. 그리고 비록 악의적인 의도는 아니었지만 왕년에 간증 잃을 병맛 같은 행실도 많이 남겼다. 게다가 나 또한 하나님의 모든 사고방식이 다 이해가 되는 것도 아니다.

그래도 성품을 다듬고 내 행실을 통해 예수 그리스도가 전해지도록, 오늘은 어제보다는 더 나은 모습을 보이도록 간구하고 노력을 할 뿐이다. 최소한 상대방이 복음이 무엇이고 기독교 교리가 무엇인지 알기는 제대로 알고서 거절하든가 반대하지, 삐쳐서 마음을 확 닫아 버리는 일은 없게 내 말에 너를 ‘위한다’는 진심을 담으려 노력한다.

사실, 불신자가 예수 믿기 위해서 지금 당장 안 믿어지는 창조론이라든가 하나님의 경륜을 납득해야 할 필요도 없고, 자기 힘으로 술· 담배를 끊어야 할 필요도 없고, 성경관· 윤리관 같은 사상을 인위로 개조해야 할 필요는 없다. 그런 노력이 구원의 조건이 아니다. 불신자의 입장에서 구원을 위해 당장 가장 중요한 건 4번과 6번일 것이다. 일단 예수님을 받아들이고 그분을 사랑하는 마음이 생기면 나머지 믿음은 추가로 공급된다.

그러니 길거리에서 복음 전하다가 불신자가 1~3, 5번 같은 걸 갖고 불필요하게 논쟁을 걸면서 시간을 끌면, 적당히 커트를 하는 기지도 발휘해야 한다. 그런 데에 끌려가면 힘만 빠지지 결론 절대 안 난다.

결국 미우나 고우나 이 모든 걸 할 수 있는 전능한 하나님께서 유한하고 부족하고 여건마저 제각각 불공평(?)하게 타고나는 사람에게서 원하시는 것은.. 다른 육신적인 스펙이 아니라 ‘믿음’으로 귀착된다. 인간에게 정말로 필요한 건 그래도 공평하게 해 놓으셨기 때문에 하나님이 공평한 거다.

기독교는 처음에 잘 이해가 안 되는 몇몇 전제조건 아이템만 믿음으로 받아들이고 나면 그 뒤에는 나름대로 상당히 건전한 원칙과 일관성과 체계가 잡혀 있다. 크리스천들은 그걸 세상에 전해야 한다. 그리고 안 믿는 건 개인 자유인데, 성경의 가르침이 아니고 기독교가 아닌 걸 남들이 기독교라고 부를 권리는 없다는 것도 분명히 전해야 한다. 이렇게 영적 전투를 치르는 것이 신자의 권리이자 의무일 것이다.

Posted by 사무엘

2014/05/06 08:28 2014/05/06 08:28
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/959

크리스천의 사고방식은 불신자의 사고방식과 무엇이 다르며, 우리는 이를 어떻게 대처해야 할까?

1. 신의 존재

사실, 신의 존재 여부 자체는 과학적 방법론으로 증명도 부정도 할 수 없으며, 그런 방식으로 논쟁을 하는 게 가능하지 않다. 그러니 이 분야는
“직접 관찰한 적이 없으니 신은 없다고? 그럼 너는 네 뇌를 직접 관찰한 적이 없으니 무뇌아냐?” 라든가
“현대 과학이 아직도 밝혀내지 못한 무수한 미지의 영역에 신이 전혀 없을 거라고 확신 가능하냐?” 같은
당장 틀린 말은 아니지만 추측+아전인수격의 유치한 논쟁에서 크게 더 나아가질 못한다. 이런 진흙탕 싸움에 이골이 난 사람은 보통 불가지론에 빠지게 된다.

창조과학 같은 데서는 우주와 지구와 자연의 정교함과 아름다움을 예로 들면서 그게 확률과 우연으로 절대로 될 수 없다는 직관을 많이 내세우는 편이다. 그건 성경적인 근거가 있으며(롬 1:19-20), 나 역시 직관과 양심에 근거하여 그 논조를 큰 틀에서 '지지'한다.

그러나 자연 계시는 과학적으로 온전하고 엄밀한 방법은 아니라는 것 역시 인정한다. 수학으로 비유하자면, 10의 무려 1500승까지 찾아 봤는데도 없었다고 해서 홀수 완전수가 아예 전혀 존재하지 않는 게 증명된 건 아니라고 하니까. 단지, 한 혼을 움직이고 예수님께 인도하기 위해서 굳이 과학적으로 온전하고 엄밀한 방법을 꼭 찾아야 할 필요는 없다는 걸 경험적으로 알 뿐이다.

또한, 같은 논리를 동원하자면, 자연에는 아름다운 것뿐만 아니라 틀어지고 망가지고 있는 것도 있고 처참한 살육과 약육강식도 있다. 온갖 나쁜 병균, 기생충도 있고 바이러스도 있다.
이 세상에는 전능하고 공의로운 신이 정말 존재하기는 한지 “불신자의 입장에서는”, 그리고 때로는 신자의 입장에서도 충분히 의구심이 들 정도로 끔찍하고 참혹한 일, 불의한 일, 억울한 일도 많이 벌어진다. 물론 그런 것을 성경적으로 설명하는 방법도 없는 건 아니나, 그걸로 영적 안목이 없는 불신자를 당장 충분히 설득 가능하지는 않다.

요컨대 신의 존재 자체에 대한 의문은 자주 불거져 나오긴 하지만 과학적 측면보다는 저런 명분론· 변증법(?)적인 측면에서 더 제기되는 편이다. 그리고 아무리 기독교회가 배도하고 타락하고 자유주의로 빠진다 해도 자기 존재 이유를 성립시키는 신 자체를 대놓고 부정할 정도로 막장으로 가지는 않을 것이다. 단지 껍데기만 유지한 채 변질만 되며, 하나님을 가르치긴 하나 그분의 성품을 완전히 왜곡해서 가르치게 될 뿐이다.

2. 창조-진화

여기는 과학이라는 미명 하에 진흙탕 싸움이 본격적으로 제일 치열하게 벌어지는 곳이다.
기원이라는 것도 어차피 실험으로 정확하게 재연 가능한 건 아니며, 단지 과학적 방법론을 동원해서 마치 범죄 수사처럼 과거엔 아마 이랬을 거라고 재구성과 추적만을 할 수 있을 뿐이다.

성경은 과학책이 아니며 학술논문 스타일로 쓰여진 책도 아니다. 그러나 건전한 신자라면, 성경에 양념으로 기록되어 있는 과학적 사실들은 모두 문자 그대로 참이라고 믿는다. 실제로 성경이 최소한 당대의 다른 문헌에 ‘비해서’야 과학적 통찰력이 아득히 앞서갔으며 성경 저자의 식견만으로는 도저히 기록할 수 없는 진술이 존재하는 건 사실이다. 그 성경이 너무나 평이하게 신의 존재만큼이나 당연한 듯이 창조를 말하고 있긴 하다.

그러나 그 성경을 읽고 믿는 신자들의 한계는 솔직히 인정하고 넘어가야 한다. 가령, 성경에 아무리 ‘땅의 원 위에 앉으신 분’(사 40:22), ‘땅을 허공에 매다시고’(욥 26:7), ‘낮과 밤이 동시에’ 같은 구절이 있었다고 해도, 그렇다고 해서 고대의 크리스천들이 성경만 읽고서 세속 과학자들보다 더 일찍부터 지구가 둥글다는 걸 선뜻 알아채지는 못했다. 또한 창세기 1장의 연대기 문제는 같은 믿는 신자들끼리도 진영간에 견해가 일치하지 않고 있다.

아 뭐 그렇다고 해서 창조를 믿는 성경 신자들이 너무 쫄거나 위축될 필요는 없다.
저쪽 사람들은 창조론자를 어떻게든 바보로 만들기 위해 약간 비논리적인 비약, 비과학적인 표현, 팩트 오류 같은 것만을 찾아내어 집요하게 공략한다. 그리고 자기에게 유리한 전제조건을 벗어나려 하지 않는다. “그럼 너의 천 대 만 대 조상은 확실하게 원숭이나 아메바냐?” 같은 원초적인 질문을 절대로 정면돌파하지 않는다는 뜻이다. 그러니 공정한 대결이랍시고 그 함정 설정에 필요 이상으로 말려 들어갈 필요 없다.

진화론자는 어차피 기원에 대해서 딱히 이렇다 할 시나리오를 갖추고 있는 게 아니다. 일단 원시 생명체가 있으면 거기서부터 진화가 가능하다는 얘기다. 그러나 실험실에서 아주 제한되고 미시적인 맥락에서 유기물이 합성됐거나 대진화가 관찰· 재연된 것은, 수많은 놀라운 지능을 선천적으로 갖고 있는 실제 자연의 생물들과는 여전히 엄청난 괴리감이 있다. 그리고 “인간이 원숭이로부터 진화했다”든, “인간과 원숭이가 공통 조상으로부터 진화했다”든 이거나 저거나 본질 개념상으로는 차이가 없는 진술일 뿐이다.

일상생활에서야 “A가 틀렸으니 B가 자동으로 맞다” 같은 논리 전개는 억지가 맞다. 그런데 기원은 솔직히 A, B 말고 다른 대안이 없는 거나 마찬가지잖아. 글쎄, 기어이 빠져나갈 구멍을 만들자면 만들 수는 있다. “신이 창조하긴 했을지 모르나 그게 꼭 너희들이 믿는 여호와 하나님이라는 보장은 없잖아” 같은 식으로 들이댈 수 있겠는데.. 그렇게까지 무슨 수를 써도 절대로 안 믿기로 작정한 사람까지 굳이 설득하려 애쓸 필요는 없을 것 같다. 서로 감정만 나빠진다.

3-1. 성경의 보존과 번역

창조-진화가 자연과학 쪽의 전쟁터라면, 여기는 언어학, 고고학 같은 인문계 영역의 전쟁터이다. 사실은 기독교의 근간을 구성하는 성경 자체에 대한 공격이야말로 제일 치열하고 집요하고 처절하다. 인류 역사상 성경만치 공격을 많이 받아 온 문헌이나 종교 경전은 존재하지 않는다.

일단 (1) 성경이 자필 원본 이래로 지금까지 온전하게 보존됐을 리가 없다고 공격하고, (2) 그 원문이 있다 해도 그 뜻을 우리가 제대로 알 수 없어서 완벽한 번역이 있을 수 없다고 공격한다. (1)은 원문 계층이고 (2)는 원어 계층 되겠다. 그리고 불행히도 이건 교회 댕기고 예수 믿는다는 사람들, 심지어 목사, 신학자라는 사람들까지 그 공격에 고스란히 넘어가서 불신자· 기독안티와 다를 바 없는 성경관을 갖고 있는 경우가 부지기수이니 이를 도대체 어쩌면 좋을까?

그런 허접한 텍스트를 근거로 어떻게 성경은 영감 받은 하나님의 온전한 말씀이라고 가르칠 수 있으며, 안 그래도 요즘 교회 이미지가 바닥을 치고 있는데 세상을 상대로 감히 복음 전하고 예수 믿으라고 전할 수가 있는가? 당신이 믿는 그 영감 받은 온전한 말씀은 도대체 무슨 성경이며 지금 우리 손에 있긴 한가? 문체 수준이 아니라 서로 번역과 내용이 제각각인 성경들 중에 무엇이 진짜 옳은 말씀이란 말인가?

킹 제임스 성경을 최종 권위로 믿는 진영은 이 문제에 관한 한은 확실한 정답을 가지고 있으며 비판에 대한 대안을 갖추고 있다. 오늘날의 학자들을 믿느니 차라리 400여 년 간의 선한 열매가 분명히 있는 옛 성경 역본을 믿는 것이다.

이 사람들은 자기 이익을 위해 기독교계에 다툼과 분열을 야기하는 고집쟁이 전투종족 집단이 절대로 아니다. 기독교를 믿을 거면 제대로 믿으려고 모 아니면 도 신앙 노선을 추구하며, 크리스천의 신앙을 최전방에서 방어하는 건전한 사람들이라고 봐야 한다. 복음을 전할 때는 예수 안 믿으면 다 지옥 간다고 완전 과격하고 배타적이고 편협하게 가르치면서, 성경이 특정 한 역본 말고 다른 내용은 다 잘못됐다는 지극히 당연한 팩트는 왜 그리도 받아들이기가 어려운가?

성경은 그저 내용 요점만 두리뭉실하게 적혀 있는 도덕 경전이라고 취급하기에는 너무 엄청나고 과격한 내용도 많이 들어있다. 정확도와 신뢰도가 보장되지 않는다면, 그 성경이라는 책이 말하는 내용들은 그저 판타지일 뿐 진지하게 믿을 가치가 없다!

3-2. 성경의 무오성과 해석

앞의 (1)과 (2)를 통과했다 하더라도 (3) 팩트와 해석 차원의 공격도 무진장 많다. 왜, (a) 성경에 오류와 모순이 잔뜩 있다는 태클들 말이다. 사복음서간에 뭐가 일치 안 하고 동일 사건에 대한 진술이 이랬다 저랬다 한다는 내부 모순이 있으며, 세속 역사 문헌 어디에도 요셉이나 모세나 출애굽 사건, 예루살렘 성전에 관한 기록은 존재하지 않아 고증이 안 맞다는 식의 외부 공격도 있다.
또 (b) “여자는 교회에서 잠잠하라”라든가 “가나안 민족들을 모조리 진멸하라”, “고환이 상한 자는 주께 나오지 못할지니라” 이런 것만 뚝뚝 떼어 와서 하나님이 인종 차별적이고 잔인하고 뭐 같다고 이상한 딴지 거는 얘기들도 한둘이 아니다.

어디 그 뿐이랴? 이제는 아예 (c) “성경 어디에도 예수 말고는 구원의 길이 없다거나, 예수가 자기 안 믿는 사람은 다 지옥 보내 버리겠다는 공갈을 한 적은 없다”고 교리를 제멋대로 정반대로 재해석하는 사람도 있다. 이런 난독증 수준의 억지에 비하면 “모세는 진짜 홍해를 횡단한 게 아니라 근처의 갈대밭을 건넌 거다”는 차라리 애교처럼 보인다.

이런 사람들의 얘기에만 끌려가다 보면.. 기독교와 바이블은 진작에 외면받고 사라지고 소멸했을 것 같은데 지금까지 존속해 있는 게 신기하게 느껴지고 내가 정말 어지간히 ‘쎈 걸’ 믿고 있는 게 아니라는 걸 느끼게 된다. 읽으라고 부탁하고 간청을 해도 안 읽을 재미없는 책을 옛날에 악의 무리들은 왜 그리도 없애려고 발광을 했으며, 그 책을 소지하거나 읽느라 순교까지 당한 바보들은 어떻게 존재할 수 있었던 걸까?

성경에는 왜 그렇게 적혀 있는지 정말로 알 수 없는 의문 구절도 일부 없지는 않다. 그러나 그것 말고 (a)에 속하는 상당수의 딴지들은 이미 반박과 해결책이 다 알려져 있으며, (b)도 교회와 이스라엘의 구분, 경륜 구분 같은 걸로 바르게 나누고 분간하면 성경에 왜 그런 무지막지한 말이나 모순점이 있으며 그것이 우리에게 직접적으로 적용되지 않더라도 최소한 어떤 의미를 갖는지를 오류 없이 거의 다 명확하게 알 수 있다.

(c)는...? 대꾸할 가치도 없을 것 같다. 입만 아프다. 믿어지지 않고 믿기 싫으면 전체를 거부하고 안 믿으면 된다. 단지 취사선택을 하지 말고, 비기독교적인 자기 신념을 기독교라고 우기지만 말았으면 좋겠다.

재미있는 떡밥을 하나 남기면서 이 주제를 마무리 짓도록 하겠다. 생명의 기원만큼이나 인간의 언어의 기원도 아무도 모른다는 점이다. 이건 화석이나 방사선 원소 연대 측정조차도 동원할 수 없는 물건이다 보니, 오늘날 언어학계에서는 언어의 기원은 그냥 불가지론으로 간주하고 함구하고 있다.

Posted by 사무엘

2014/05/03 08:25 2014/05/03 08:25
,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/958

GetMessage는 Windows 프로그래밍에서 윈도우 message loop을 구현할 때 쓰이는 함수이다.
이 함수는 명목상 리턴값이 BOOL이며, 평소에는 nonzero를 되돌리다가 WM_QUIT가 접수되어서 응용 프로그램이 종료되어야 할 때 FALSE가 된다.

그러나 이 함수의 리턴값이 이것이 전부가 아니다.
정상적으로 한 메시지를 끄집어 왔을 때는 nonzero이긴 한데 양수이며, argument가 올바르지 않다거나 해서 함수의 실행 자체가 실패했을 때는 음수 -1을 되돌린다.

그렇기 때문에 메시지 loop을 while( GetMessage(&msg, NULL, 0, 0)) { }  이런 식으로 구현하면, 메시지를 아예 가져오질 못했는데도 loop의 조건이 만족되며 프로그램은 무한 루프에 빠진다.
!=0으로는 불충분하니, 반드시 while( GetMessage(&msg, NULL, 0, 0) >0)이라고... >0을 명시해야 한다.

(1) 이 함수 말고도 타입이 BOOL인데 사실은 TRUE/FALSE라는 순수한 흑백 논리값 말고 다른 의미 있는 값도 되돌리는 페이크 BOOL 함수가 또 있었던 것 같으나, 당장은 기억이 안 난다. 이런 지저분한 이슈도 있고, 또 Windows API의 기반 언어인 C가 어지간한 건 그냥 machine word 정수로 처리하는 관행이 있기도 하니(문자 상수의 크기도 char이 아닌 int!), 프로그래밍에서도 BOOL은 C++의 bool이 아니라 그냥 int에다 대응시켜 놓은 것 같다.

(2) COM에도 이와 비슷한 얘깃거리가 있다. HRESULT는 원래 0과 양수가 '성공'을 나타내고, 음수가 실패를 나타낸다. 하지만 현실에서는 대부분 그냥 hr==S_OK (0) 여부만으로 성공/실패 여부를 판단한다.
거의 모든 COM 인터페이스 함수들은 실행이 성공했을 때 어차피 S_OK라는 단일한 값만을 되돌리기 때문에 이것이 현실에서 당장 크게 문제가 되지는 않는다. 그러나 원칙적으로는 어지간해서는 hr==S_OK를 쓸 곳에 SUCCEEDED(hr)을 써야 한다. 이것은 hr>=0 여부를 체크하는 매크로이다. hr!=S_OK를 대신해서는 FAILED(hr)이 바람직하고 말이다.

음수도 아니고 0도 아닌 대표적인 리턴값은 S_FALSE이다. 이것은 해당 함수가 의미 있는 동작을 하지는 않았지만 어쨌든 오류가 발생했거나 실패한 상황도 아닐 때 돌아온다. 가령, 뭔가 객체를 enum하고 있는데, 포인터가 이미 끝에 도달해서 더 fetch할 게 하나도 없으면 보통 &ulFetched는 0이 돌아오고 함수 리턴값은 S_FALSE가 된다. 하나라도 fetch된 게 있으면 S_OK이고 말이다.
따라서 이 경우, loop의 종료 조건을 지정하려면 SUCCEEDED와 더불어 fetch된 개수도 체크해야 한다.

(3) 다시 GetMessage 얘기로 돌아온다.
얘는 메시지를 수집하는 윈도우, 그리고 필터링할 메시지의 최소값과 최대값을 인자로 받는다. 하지만 PeekMessage도 아니고 GetMessage에다가 뭔가 동작의 범위를 제한하는 유의미한 값을 지정하는 것은 사실상 거의 쓸데없는 짓이다. 언제나 NULL, 0, 0을 하는 게 맞다. (레이몬드 챈 선생도 인증한 사실임)

이 함수는 뭔가 메시지를 얻을 때까지 실행이 끝나지 않고 계속 기다린다. 어떤 GUI 프로그램이 실행되면 굳이 자신이 아니어도 그 스레드 소속으로 남이 생성한 각종 잡다한 윈도우가 붙는다. 이들 윈도우도 메시지 큐로부터 메시지를 받아야 하는데, GetMessage에다가 필터링을 걸면 해당 윈도우는 메시지를 받지 못하며 그 동안 우리 프로그램도 실행되지 못하게 된다. 쉽게 말해 deadlock에 빠진다.

따라서 아무 윈도우로 전달된 아무 메시지라도 일단은 받아서 윈도우 프로시저로 Dispatch를 시켜야 한다. 정 특정 메시지만 필터링을 하고 싶다면 아까도 말했듯이 PeekMessage를 쓰는 게 훨씬 더 안전하고 바람직하다. 얘는 그래도 한 번만 체크 후 실행이 곧장 끝나기라도 하니까 말이다.

Posted by 사무엘

2014/04/30 08:31 2014/04/30 08:31
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/957

Windows API에서 LoadLibrary는 잘 알다시피 자기 프로세스 공간에다가 다른 DLL을 추가로 매핑시키는 매우 중요한 함수이다. 코드 실행이 아니라 단순 리소스 추출만이 목적인 경우, EXE 내지 현재의 기계가 지원하지 않는 다른 아키텍처로 빌드된 모듈을 열 수도 있다.
Windows에서 어떤 모듈(EXE/DLL)은 타 모듈을 말 그대로 자신이 실행되는 로드타임(load-time) 때 곧장 불러와서 여타 DLL에 대한 함수 링킹을 할 수 있으며, 반대로 실행 중인 런타임(run-time) 때 동적으로 할 수도 있다.

로드타임 로딩은 간편하긴 하지만 모듈 파일 이름 이상으로 불러들이고자 하는 디렉터리 위치를 세밀하게 제어할 수 없다. 그리고 모듈이 단 하나라도 존재하지 않거나 해당 파일에 함수 심벌이 단 하나라도 존재하지 않으면 프로그램이 전혀 실행되지 않는다. 그런 예외 상황이 발생했을 때의 제어도 사용자가 전혀 할 수 없기 때문에 프로그램의 유연성 내지 융통성이 떨어진다는 단점이 있다. 내 프로그램의 로드 자체가 실패해 버리니 말이다.

그래서 새 운영체제에 들어있는 API 함수를 쓰긴 하는데, 그 함수가 존재하는지 체크를 미리 해서 구형 운영체제와의 호환성도 유지하기 위해서는.. LoadLibrary와 GetProcAddress를 이용하는 런타임 로딩 기법을 써야 한다. 로드타임 로딩이라면 운영체제가 그 기능을 내부적으로 자동으로 제공해 줬을 텐데 런타임 로딩은 함수 포인터를 수동으로 관리해야 하니 좀 번거롭긴 하다.

이럴 때, 비주얼 C++ 6때부터 도입된 delay-loading은 로드타임 로딩과 런타임 로딩의 장점을 취합한 굉장히 괜찮은 대안이 될 수 있다. COM은 런타임 로딩을 규격화된 인터페이스라는 형태로 좀 더 깔끔하게 정형화한 바이너리 표준일 테고 말이다.

DLL을 불러올 때, LoadLibrary에다가 파일의 절대 경로를 주지 않고 파일 이름만 달랑 넘겨 주면 이 함수는 프로그램이 실행된 current 디렉터리, 프로그램이 존재하는 디렉터리, 운영체제의 시스템 디렉터리, PATH에 등록된 디렉터리 등 다양한 순서대로 파일을 탐색한다. 로드타임 로딩 때도 대상 DLL은 이런 순서대로 탐색된다.

이것은 프로그램의 동작에 유연성을 부여하고 한 DLL을 여러 프로그램들 사이에서 최대한 쉽게 공유가 되게 하기 위함이나, 오늘날에 와서는 이런 정책은 보안에 악영향을 끼치게 되었다. 이름만 같고 우선순위가 더 높은 디렉터리에 존재하는 악의적인 DLL이 잘못 선택되어 로딩될 수 있기 때문이다. 또한 하위 호환성이 지켜지지 않는 시스템 DLL이 덮어써짐으로써 DLL hell 같은 고전적인 문제도 야기될 수 있다. 갈수록 난잡해지고 포화 상태로 치닫는 시스템 디렉터리는 큰 골칫덩어리이다.

LoadLibrary의 디렉터리 탐색 방식 자체를 바꿀 수는 없다. 그 방식에 의존하여 동작하는 수많은 기존 프로그램들과의 호환성을 유지해야 하기 때문이다. 그렇기 때문에 오늘날 마소에서는, 새로 개발되는 프로그램에서는 LoadLibrary를 호출할 때 저런 알고리즘에 의존하지 말고 반드시 DLL의 전체 경로를 명시해 줄 것을 권고하고 있다. 또한, 전면 금지하는 건 불가능하겠지만, 운영체제의 시스템 디렉터리에다가는 가능한 한 자기 싸제 DLL을 집어넣지 말 것을 권고한다.

일례로, 예전에 qt 라이브러리를 DLL 링크한 프로그램을 돌려 봤다. 이 DLL은 운영체제의 시스템 디렉터리에 있는 것도 아니었는데 어떻게 DLL을 찾는지 궁금했는데... 에구, 그냥 PATH 지정이더라. 운영체제의 환경변수를 대놓고 바꿔 버리는 건 굉장히 안 좋은 방법인데 어쩔 수 없다. 이제 윈도 XP가 나온 지도 10년이 넘었으니 WinSXS 매니페스트 방식이라도 써야 하지 않나 싶다.

요컨대 Windows는 (1) 제3자 응용 프로그램이 자기끼리 공유하는 공용 DLL을 손쉽게 찾아 로딩하는 법, 그리고 (2) 운영체제의 시스템 DLL을 보안 문제 없이 간편히 로딩하는 법을 완전히 이원화하여 체계적으로 제공할 필요가 있다. 확장 버전인 LoadLibraryEx 함수에라도 그런 기능을 좀 추가할 수 없나 궁금하다.

(1)의 경우 아까도 말했듯이 delay-loading이나 WinSXS가 그럭저럭 해결책이다. 이게 중요한 문제이기 때문에 윈도 XP부터는 SetDllDirectory 함수가 추가되긴 했으나, 이것은 로드타임 로딩을 제어할 수 없기 때문에 여전히 근본적인 해결책이 아니다.

(2)는 known DLL 리스트라는 게 레지스트리에 존재한다. 그래서 "kernel32", "user32" 같은 건 DLL계의 예약어(reserved word)처럼 돼서 주변에 kernel32.dll, user32.dll 같은 동일 명칭의 사칭 파일이 있다 해도 언제나 운영체제의 시스템 디렉터리에 있는 놈이 로딩된다는 게 보장된다.

그러나 개인적인 생각은 그걸 API 차원에서 좀 더 엄밀하게 했으면 좋겠다. 아까 말했듯이, API 하위 호환성 유지를 위해 운영체제의 시스템 DLL을 수동으로 로딩하는 경우는 빈번하게 존재한다. 그리고 운영체제가 버전업되면서 새로운 시스템 DLL이 앞으로 얼마나 더 추가될지 모른다. 그러니 오로지 시스템 DLL만 로딩하고 다른 싸제 DLL은 유사품이 있다 해도 거부하는 명령이 있었으면 좋겠다.

앗싸리 시스템 DLL까지 몽땅 시스템 디렉터리 전체 경로를 지정해 줘서 로딩시켜 보기도 했다. 그런데 이렇게 했더니 한 가지 복병에 걸리는 게 있다. 바로 comctl32.dll이다.
얘는 WinSXS 매니페스트로 넘어가서 길고 이상한 다른 디렉터리에 있는 놈이 로딩되기 때문이다. 이걸 무시하고 운영체제 시스템 디렉터리에 있는 놈을 로딩하면 TaskDialog처럼 공용 컨트롤 6.0 이상에서만 지원되는 기능들을 사용할 수 없다.

그러니 시스템 DLL은 경로 다 생략하고 그냥 "comctl32", "kernel32" 이렇게만 로딩하는 게 정답인 듯하다.
문득 스프레드 시트 프로그램인 엑셀이 생각난다. 엑셀은 구조적인 이유로 인해 이름이 동일하고 서로 다른 디렉터리에 존재하는 여러 파일을 동시에 열 수 없다. 수식에서 다른 워크시트 파일을 참조할 때 디렉터리 대신 오로지 파일 이름만을 토대로 탐색을 하기 때문이다.

Posted by 사무엘

2014/04/27 08:25 2014/04/27 08:25
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/956

1. 수원 역 전동차 추돌 사고

도로에서 신호 대기 중이거나 고장· 정체로 인해 서 있는 앞차를 발견 못 하고 추돌하는 건 흔히 발생하는 교통사고 패턴이다.
그런데 이런 부류의 사고가 철도에도 드물게나마 존재한다.
대표적인 예로는, 왠지 콩스러운 2002년 2월 22일에 발생한 수원 역 전동차 추돌 사고가 있다.

한 서울 메트로(그 당시 서울 지하철 공사) 소속 1호선 전동차가 수원 역 진입을 앞두고, 하행 무궁화호를 먼저 보내 주기 위해 신호 대기 정차 중이었다.
그런데 뒤따라 오던 철도청(코레일 출범 전) 소속의 선로 보수 차량이 짙은 안개와 신호 오독으로 인해 이 전동차를 발견 못 하고 그대로 추돌했다.
그 결과, 차량과 직접 닿은 객차 2량이 탈선+대파되었고, 30여 명의 승객이 경상을 입었다.

여느 철도 교통사고와는 달리, 이건 가해 차량과 피해 차량의 소속 회사가 서로 다르기까지 하다 보니 보상 문제를 두고 양사간 알력다툼이 있었다.
철도청에서는 자사가 보유하고 있는 잉여 중고 전동차만 달랑 넘겨 주는 걸로 배상을 마무리 지으려 했다.
그러나 서울 메트로에서는 피해 객차 중에 차령이 3년도 안 된 새 물건이 있다는 걸 내세우면서 신차 도입에 맞먹는 손해 배상금을 청구했다. 이 의견 대립으로 인해 협상이 제대로 진행되지 않았다고 한다.

나중에 결국은 철도청이 서울 메트로의 요구를 사실상 다 수용하는 걸로 분쟁이 종결되었다. 총 배상금은 일반 자동차 교통사고의 배상하고는 잽도 안 되는 49억 2천만 원에 달했다고..! 참고로 전동차 한 편성이 아니라 한 량의 가격이 10억 원 정도 한다.

근본적으로 그때 전동차에도 웬 신호대기라는 게 있었고 판단 착오로 인해 이런 교통사고가 발생하는 게 가능했던 이유는... 평면교차 때문이었다.
수원에서 경부선 전동차가 회차를 하려면 일반열차 선로를 타넘어야 했다. 자동차로 치면 일종의 U턴과 같다. 이때 일반열차 눈치를 보는 건 필수다.

즉, 수원역은 근본적으로 종점으로서는 상당히 열악하고 위험한 구조였다. 또한 이 병목 지점 때문에 경부선 전동차를 충분히 증차할 수 없었다. 수원에 다 와 가지고는 n분간 지루한 신호 대기...

경부선 전철이 수원에서 천안까지 연장된 게 2005년부터인데, 그보다 앞서 병점 구간이 2003년에 개통했다. 이는 수원에서의 평면교차 지장을 없애기 위해 먼저 시급히 취한 조치였다. 거기는 병점 차량 기지 입· 출고 및 회차 선로가 경부선 본선과 별도의 입체교차 시설로 갖춰져 있기 때문이다.

2. 미전 신호소 열차 충돌 사고

자동차나 비행기의 좌석에는 안전벨트가 있다. 배는 안전벨트까지는 아니어도 그래도 침몰에 대비한 구명 조끼 정도는 승객 수만치 갖춰져 있다. 그러나 열차는 한번에 수백 명 이상의 승객을 대량으로 수송하는 교통수단임에도 불구하고 안전벨트 같은 개인 단위의 구명 수단이 전혀 존재하지 않는다.

그 이유는 철도는 주행 중에 도로와 같은 돌발상황을 고려하지 않기 때문이다. 그리고 설령 장애물이 나타난다 해도 어지간해서는 아무 일 없다는 듯 열차가 그냥 장애물을 밀고 지나간다. 무게 차이가 서로 비교가 되지 않기 때문이다. 승객이 급정거로 인한 큰 위험에 빠질 일이 없다.

그런데 똑같이 길고 무거운 열차와 열차가 서로 부딪치게 되면 이건 그야말로 대재앙이 된다.
관성 때문에 뒤의 객차들이 탈선하여 앞의 객차들을 타고 올라가게 되며, 깔린 객차들은 형체를 알아볼 수 없이 부서지기 때문이다. 이 정도의 사고까지 나면 어차피 안전벨트도 아무 도움이 안 되긴 마찬가지가 된다.

위의 1번처럼 멈춰 있는 열차를 뒷차가 추돌하는 정도가 아니라, 아예 서로 마주 보며 달려오던 열차가 머리끼리 정면 충돌하는 건 자동차로 치면 중앙선 침범 교통사고 정도에 해당한다. 이건 단선 구간에서 폐색 처리가 엉망으로 된 완전 막장 철도에서나 가능한 일인데..

우리나라에서도 그것이 실제로 일어난 적이 있었다.
1994년 8월 11일, 경부선 복선과 경전선이 합류/분기하는 구간에서 대구 발 마산 행 경전선 하행 무궁화호(217열차)와 부산 발 대구 행 경부선 상행 무궁화호(202열차)가 그만.. 정면 충돌했다.
이 사고도 당시 위험한 평면교차 시설에 두 열차가 동시에 진입하면서 발생했다.

우리나라 철도는 좌측통행이기 때문에 서울 방면 상행 선로가 부산 방면 하행 선로의 왼쪽에 있다. 그런데 경전선은 경부선의 서쪽, 즉 왼쪽으로 뻗어 나간다.
따라서 맨 오른쪽의 경부선 하행을 달리고 있던 경전선 하행 217열차는 경전선 마산 방면으로 가기 위해 잠시 경부선 상행을 침범했다가 경전선으로 빠져나가야 했다. 그리고 202는 217이 다 지나갈 때까지 남쪽에서 잠시 기다렸다가, 선로 분기기가 원래의 경부선 직진 쪽으로 돌아온 뒤에 진행해야 했다.

그런데 사고가 발생하던 당시에 202는 무슨 이유에서인지 기다리지 않고 경부선 상행 선로를 그대로 진행했다.
그러나 이때 경부선 상행의 해당 지점은 평상시처럼 서울 방면으로 향해 있던 게 아니라, 217이 지나갈 수 있게 경전선↔경부선 상행↔경부선 하행으로 잠시 행로가 바뀐 형태였다.
이에 202는 상행임에도 불구하고 자기 경로를 벗어나 하행 선로로 역주행을 하게 되었고, 그 결과 경부선 하행 선로에서 마주 오던 217과 충돌해 버렸다. 진짜로 중앙선 침범 사고와 똑같다. (☞ 당시의 MBC 뉴스 보도).

이 사고로 총 4명이 사망하고 200여 명의 승객이 중경상을 입었다.
결과론적으로는 잘못된 선로에 진입한 202의 기관사의 과실이 의심되었으나 현직 기관사들은 거기는 정황상 그런 어처구니없는 실수가 발생할 수 있는 곳이 아니라며 과실 가능성을 일축했다. 그리고 오히려 열차나 선로 시설의 시스템적 오류를 더 의심했다.

하지만 시설 미비 내지 파손으로 인해 기계적인 결함 가능성을 제대로 규명할 수 없었으며, 이례적으로 양 열차의 기관사들도 모두 사망해서 당시 상황을 정확히 증언할 사람이 없었던 관계로, 이 사고는 공식적으로는 '원인 불명'으로 처리되고 말았다.
비행기 추락도 아닌데 철도 사고에서 기관사가 모두 죽는 건 굉장히 이례적이다. 게다가 두 열차가 모두 기관차형 열차가 아니라 무궁화호 디젤 동차(NDC)였고, 기관실이 정말 전방에 노출되어 있었기 때문에 충돌 사고 시에 기관사가 상대적으로 더욱 위험하긴 했다.

지금이야 경부선과 경전선이 만나는 구간은 모두 복선에 입체 교차 형태로 바뀐 지 오래이며, 전철화가 되어서 경전선 KTX까지 다니는 상황이 되었다.

Posted by 사무엘

2014/04/24 08:36 2014/04/24 08:36
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/955

1. 특정 명칭(클래스, 함수, 변수 등등)의 선언지로 곧바로 찾아가기.
(1) 소스 코드에서 cursor나 마우스 포인터가 가리키고 있는 명칭에 대해서는 현재 소속되어 있는 클래스나 namespace 문맥을 감지하여 동작해야 하며, (2) 그냥 임의의 심벌을 타이핑하여 조회하는 기능도 있어야 한다. 둘 다 필요하다.

2. 디렉터리를 불문하고 프로젝트에 있는 특정 파일 이름을 곧바로 타이핑으로 조회하여 파일 열기. 시작하는 단어와 중간에 있는 단어가 모두 지원되어야 한다.

3. 그리고 명칭이 아닌 임의의 문자열을 검색하는 Find in files인데, 다음과 같은 범위에서 모두 가능할 것.
(a) 소스(=번역 단위)든 헤더든 프로젝트에 정식으로 등록돼 있는 파일
(b) 프로젝트에 정식으로 등록은 안 돼 있지만, 등록된 파일로부터 인클루드에 의해 한 번이라도 엮이는 파일들
(c) 프로젝트 파일이 하나라도 존재하는 디렉터리에 덩달아 있는 모든 소스 파일들

즉, 3은 파일 내부의 문자열 검색이고 2는 파일 이름 자체의 검색이다. 2의 경우 일단은 검색 도메인이 (a)만으로 한정이지만, 2도 (b)나 (c)가 옵션에 따라 지원된다면 금상첨화다.

Visual Studio IDE의 경우, 1은 진작부터 인텔리센스 엔진을 통해 지원되어 왔다. 그러나 2는 2012에 와서야 가능해졌으며, 3은 (a)만 가능하다. (c)를 하려면 결국 프로젝트 경로를 수동으로 직접 입력해야만 가능하여 매우 불편함. 프로젝트에 존재하지는 않지만 같은 디렉터리에 있는 파일들을 덩달아 찾아야 할 때도 있는데도 말이다.

물론 (b)는 소스 코드를 컴파일까지는 아니어도 전처리기 수준의 파싱은 해야 구현 가능하기 때문에, 좀 어려울지 모른다. #include를 제대로 처리하려면 프로젝트 차원의 인클루드 디렉터리 관리자가 있어야 하며, 조건부 컴파일뿐만 아니라 인클루드 대상 자체에 대해서도 매크로 상수 전개가 필요할 때가 있으니 말이다.

c/cpp 같은 소스 코드가 그 자체로 온전한 번역 단위를 구성하는 게 아니라, 다른 소스 코드에 또 인클루드되어 쓰이는 경우가 있다. 물론 프로젝트에 등록되지 않은 채로 말이다.
이런 파일은 (a) 형태의 문자열이나 파일명 검색이 되지도 않아 대단히 불편하며, IDE가 구문 분석을 하는 것도 굉장히 복잡하고 어렵게 만든다. C/C++에서 인클루드는 정말 양날 달린 검인 게 실감이 간다.

끝으로 (b)와 관련된 여담 하나 좀 남기겠다.
과거 비주얼 C++ 6 시절엔 프로젝트 파일 리스트에 External dependencies라고 해서, 정식으로 프로젝트에 포함돼 있지는 않지만 프로젝트 파일에 의해 인클루드되는 파일을 대충, 얼추 계산해서 표시해 주는 기능이 있었다. '대충, 얼추'라는 말은 그 동작이 100% 정확하지는 않았다는 뜻이다. 그러던 것이 닷넷으로 넘어가면서 이 얼렁뚱땅 불완전한 기능은 삭제되었다.

그 뒤, 버전이 201x으로 넘어가면서 이 기능은 부활했다. 온전한 컴파일러가 소스 코드를 머리부터 발끝까지 다 분석하면서, MFC와 플랫폼 SDK가 중첩 인클루드하는 수십, 수백 개의 헤더 파일들을 하나도 빠짐없이 정확하게 나열해 주는 무시무시한 기능으로 다시 태어난 것이다. 비주얼 C++ IDE는 변화가 없는 것 같아도 내부적으로 이렇게 변모하고 있다.
모든 파일들의 의존도 정보를 파악하고 있다는 소리이니, 이를 바탕으로 함수 호출 tree처럼 파일들의 include 계층 다이어그램(includes / included by)을 그려 주는 기능은 IDE에 혹시 없나 궁금하다.

Posted by 사무엘

2014/04/21 08:28 2014/04/21 08:28
, ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/954

예수님께서 우시니라

요한복음 11장은 죽은 지 나흘이나 지난 나사로를 예수님이 살리시는 장면이다.
죽은 지 그 정도 시간이 지났으면 시신은 시반이 짙어지고 피는 이미 검붉게 썩어 가며 어쩌면 구더기가 일고 부패가스로 인한 팽창까지 시작되었을 텐데(39절), 물리까지는 아니어도 자연의 수많은 생화학 법칙을 정면으로 거스르는 역변환이 일어났다는 뜻이다. (여담이지만, 갓 죽은 시신에 날파리가 날아오는 데 걸리는 시간과, 교통사고 현장에 견인차가 도착하는 데 걸리는 시간이 거의 비슷하다는 말도 있다. =_=)
 
그런데 그 문맥에서 슬며시 등장하는 Jesus wept(35절)는 영어 성경 기준으로 성경에서 가장 짧은 절이다. 참고로 우리말 성경은 흠정역/한킹을 제외하면 유독 대놓고 '울었다' 대신 '눈물을 흘리더라'라고 돌려 번역되어 있다. 왜 그렇게 됐는지는 모르겠다. 창 50:17 요셉이 울었을 때는 다들 그냥 '울었다'라고 했는데도.
 
이때 예수님의 울음의 의미는 무엇일까?
예수님은 나사로가 죽을 때까지 한참을 고의에 가깝게 지체하다가 현장에 도착했다. 그리고 잠시 후면 그 죽은 나사로를 그분께서 살려내실 것이다.
그런 상황에서 그 울음은 당연히.. "네가 죽다니 아이고 꺼이꺼이" 같은 문상과 추모의 의미라고 볼 수는 없다.
"내가 울었던 건 널 부활시킬 추진력을 얻기 위함이었다"....도 아닐 거다. 성경이 무슨 김 성모 만화냐?

인간적인 면모를 보자면, 예수님 역시 인간의 감정과 연약함을 모두 아셨다(히 4:15). 그리고 복음서를 보면 그분은 온갖 고뇌와 번민에 매여 있는 민초들을 불쌍히 여기셨다는 말이 자주 나온다(마 14:14, 9:36, 막 1:41 등등). 동정심, 즉 compassion 되겠다.

누구 사랑하던 크리스천이 죽었다. 그 사람은 구원받았기 때문에 하늘나라에서 편히 쉬다가 훗날 우리를 다시 만날 것이다. 솔직히 처지만 따지면 우리는 고인 걱정은 전혀 할 필요 없다.
그럼에도 불구하고 크리스천 역시 그 사람이 죽으면 당장은 슬퍼하고 울 수 있으며, 인륜과 예절의 관점에서도 그러는 게 마땅하다. 슬퍼는 하되 단지 "잘 가시오. 곧 만납시다" 수준에서 그치지, 멘붕에 빠져서 "아이고 꺼이꺼이 이제 가면 언제 오나" 이럴 필요만이 없을 뿐이다.

예수님께서 그런 사람들에 대한 연민이 클라이막스에 달해서, 부활 권능과는 별개로 울컥하신 거라는 설은.. 우리에게도 큰 위로를 주며 최소한 해롭지는 않다. 행 9:4-5도 이 설을 간접적으로 뒷받침한다. 예수님은 예수쟁이 크리스천들에 대한 박해를 예수 자신에 대한 박해와 동급으로 간주하셨다. 나도 너와 늘 동고동락한다는 뜻이다.

다만, 그렇다고 해서 요한복음 11장엔 그런 휴먼 드라마스러운 장면만 담겨 있다고 생각해서는 곤란할 것이다.
11장 앞부분을 보면 예수님의 제자나 주변 인물들이 예수님의 말귀를 제대로 못 알아듣고 동문서답을 하는 대화가 유난히도 많이 나온다. 7절부터 16절까지, 그리고 21절부터 24절까지를 보시라. 잠과 죽음을 분간 못 하고, 현세의 부활과 내세의 부활을 분간 못 하고.. 분위기가 심상찮다.

그렇게도 참 생명과 참 부활에 대해서 예수님이 거듭 설명을 해 주셨는데도 예수님을 가장 좋아하고 따르는 가까운 사람들조차 아직 분위기 파악을 못 한다. 물론 현장에 내가 있었으면 나라도 제대로 파악을 못 했을 테니 그 사람들 탓을 할 수는 없다.

예수님의 관심사는 영적으로 저 고상하고 저 높은 곳에 가 있는데 사람들의 관심은 오로지 죽은 사람과 유족, 그리고 "저 용한 의사 선생이 지체하지 않고 조금만 일찍 왔으면 나사로가 살 수 있었을 텐데" 뿐이었던 것이다. 요한복음 11장엔 36절만 있는 게 아니라 37절도 있다. 그 말에 예수님이 또 돌직구를 맞아서 '다시 속으로 신음하셨다'라고 38절은 말한다.

사실 11장 전체의 뉘앙스를 보노라면, 예수님은 나사로를 살리러 가실 때와 살리기 직전, 그리고 살리는 과정에서 아버지 하나님께 드린 기도(41~42절)를 봐도.. 그분 머릿속에는 나사로 유족에 대한 위로보다는 아버지의 일 그리고 자기가 아버지로부터 보냄받은 메시야임을 사람들로 하여금 믿게 하는 일... 정도밖에 주 관심사가 없었다고 봐야 한다.

그러니 이런 관점에서 예수님의 울음의 의미는.. 설령 사람들에 대한 동정과 연민이 가미됐다 하더라도 "너희가 나를 제대로 믿었으면 사람 하나 죽은 것 갖고 그렇게 초조하고 통곡하고 멘붕할 필요도 없었을 텐데, 왜 그렇게 달을 안 보고 달을 가리키는 손가락만 보고 있니 ㅠ.ㅠ 보는 내가 너무 안쓰럽다"도 가미되어야 하지 않을까 싶다.

문상 차원의 꺼이꺼이가 아니며, 믿음 부족에 대한 단순 분노나 책망은 더욱 아니다. 다른 예로, 누가복음이 아무리 예수님의 인간적인 면모를 조명한 책이라고 해도 겟세마네 동산에서의 기도(22:42-44)가 십자가형에 대한 단순한 인간적인 공포가 담긴 거라고 볼 수는 없듯이 말이다.

또한, 구약 성경에서 예수님을 가장 닮은 예표라 일컬어지는 요셉의 울음처럼 말이다. 자기는 진작에 형들의 과거 죄악을 아무 뒤끝 없이 다 용서했는데.. 아버지 야곱이 죽고 나니까 형들이 기껏 한다는 간청이 뭐냐면 우리에게 제발 해코지 하지 말아 달라는 부탁이었다. 이때 요셉이 운 것은 감정적인 슬픔 때문이 아니요, 형에 대한 배신감이나 분노 때문도 아니요, 다른 차원의 연민 때문이었을 것이다.

이런 나의 추론이 맞다면..!
실컷 구원받고 나서도 아직도 구원의 상실 때문에 예수님께 손이 발이 되도록 빈다거나, 대환란 안 겪게 해 달라고, 혹은 대환란 때 고문 안 당하고 고통 없이 단칼에 가게 해 달라고 고작 그런 기도나 한다면.. 우리 역시 아마 요 11:35-38과 비슷한 방식으로 예수님을 괴롭게 하고 울릴 수 있을 것이다. 일종의 영적 적용인 것이다(영적 해석이 아님).

이것이 죽었던 나사로가 살아나는 오묘한 장면, 그리고 그 속에 쏙 들어가 있는 "예수님께서 우시니라"를 읽으면서 우리가 얻을 수 있는 교훈이 아닐까 한다.

Posted by 사무엘

2014/04/18 08:30 2014/04/18 08:30
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/953

Windows API에는 FreeLibraryAndExitThread라는 함수가 있다.
얘가 하는 일은 이름이 암시하는 바와 같다. 주어진 모듈에 대해 FreeLibrary를 한 뒤 ExitThread를 호출하여 지금 실행 중인 자기 스레드를 종료한다.

어지간하면 응용 프로그램이 두 함수를 차례로 직접 호출해 주면 되며, 둘을 나란히 호출해야 할 일 자체도 실무에서는 매우 드물다. DLL을 제거하는 건 대체로 응용 프로그램이 종료될 때 같이 행해지지, 특정 스레드의 실행이 끝나자마자 칼같이 행해지는 일은 없기 때문이다. 그런데 왜 이런 함수가 정식으로 별도로 제공되는 걸까(Windows NT 3.1 첫 버전은 아니고 3.5에서 추가됨)? 다 이유가 있기 때문이다.

어떤 DLL이 별도의 스레드를 생성해서 자신의 코드를 동시에 실행하고, 실행 후에는 자기 자신을 스스로 깔끔하게 제거하여 사라지게 설계되어 있다고 치자. 즉, DLL을 로딩한 모듈이 그걸 수동으로 따로 해제하는 게 아니라, 그 DLL이 자기 임무를 다한 후 스스로 사라진다는 것이다. 이건 비록 흔한 디자인 형태는 아니지만 말이다.

이 경우, DLL의 코드가 자신에 대해서 FreeLibrary(hMyDLL)을 함부로 호출해 버려서는 곤란하다. 그러면 자기 스레드가 활동하던 모듈이 메모리에서 사라져 버리기 때문에 그 다음에 실행될 스레드 실행 종료 부분에 해당하는 코드(return 0 내지 ExitThread)까지 사라진다. 스레드는 정상적으로 종료되지 못하고 곧장 access violation이 발생한다.

그렇다고 ExitThread를 먼저 호출하면? 이 DLL을 실행하는 주체인 스레드의 실행이 끝나 버리기 때문에 FreeLibrary가 호출될 기회가 없다. 마치 실행 중인 EXE 자신을 제거하는 코드를 실행하는 것과 비슷한 맥락의 딜레마가 발생한다.

모듈(공간) 해제와 스레드(시간) 종료가 동시에 행해져야 할 경우, 이것은 운영체제가 알아서 동시에 수행해 줘야 한다.
FreeLibraryAndExitThread를 호출한 경우, 내부적으로 FreeLibrary가 됐더라도 그 다음으로 ExitThread를 호출하는 코드는 그 DLL이 아니라 운영체제가 책임을 지기 때문에 안전하다.

한편, Windows에서는 EXE나 DLL의 로딩이 파일 자체를 가상 메모리 주소에다 곧장 연결하는 memory-mapped file 기법으로 행해진다. 그렇기 때문에 실행 중인 프로그램 파일이 중간에 지워지는 것은 운영체제가 허용하지 않는다. 즉 DLL과 스레드 문제로 비유하자면 FreeLibrary 단계에서 이미 실패한다는 것이다.

그렇다고 자신을 먼저 종료해 버리면 자기 자신 파일을 지우는 코드가 실행되지 못할 테니, 이 역시 동시에 충족될 수 없는 모순이 된다. ExitProcessAndDeleteFile 같은 전용 함수라도 있어야 할 것 같은데.. Windows API에는 그런 건 없다.

다만 EXE와는 달리 실행 중인 배치 파일은 자기 자신을 제거하는 게 가능하다. 그래서 설치 제거 프로그램 같은 데서는 내부적으로 EXE를 지우고 자기 자신도 삭제하는 배치 파일을 만들어서 이걸 내부적으로 실행한 뒤, 자기 프로그램은 최대한 신속하게 종료함으로써 흔적 없는 '자폭'을 한다. 배치 파일은 당연히 IF EXISTS와 GOTO loop가 있어서 파일이 완전히 지워질 때까지 삭제 시도를 반복한다.

배치 파일은 자가삭제가 가능하긴 하지만 삭제된 뒤의 명령들은 실행되지 못하고 에러와 함께 실행이 끝난다. 옛날에 4DOS 같은 MS-DOS 대체 명령 프롬프트에는 BTM (Batch to memory)처럼 모든 내용을 메모리로 읽은 뒤에 실행하는 특수한 배치 파일이 있긴 하지만 이것은 MS 기반의 오리지널 셸에 있는 기능은 아니다.

물론 설치/제거 프로그램이라면 요즘은 직접 짜는 게 아니라 Windows Installer를 사용하는 게 대세이니 저런 꼼수를 직접 구현해야 할 필요는 더욱 없어지긴 했다. 자기 정체를 요리 조리 교묘하게 숨겨야 하는 악성 코드나 돼야 필요할까?

거의 모든 Windows API 함수들은 뭘 실행하더라도 성공/실패 여부를 되돌리는 리턴값이 있다. 리턴값이 없는 void형 함수는 정말 실패를 절대로 걱정할 필요가 없는 예외적인 물건을 제외하면 매우 드물다.
그러나 ExitProcess 내지 ExitThread처럼 뭔가 자신의 실행을 종료하고, 실행 후에 리턴값을 받을 주체 자체가 없어지는 함수라면 리턴값이 응당 void이다. 종료하는 동작이 실패할 리도 없을 테고 말이다.

FreeLibraryAndExitThread도 예외가 아니다. 모듈 핸들을 잘못 줄 경우 FreeLibrary 부분은 실행이 실패할 수 있지만, 후반부의 ExitThread 부분은 언제나 성공이 보장되기 때문이다.

그러고 보니 메시지 큐에다가 WM_QUIT를 넣어 주는 PostQuitMessage도 종료와 관계가 있는 전용 함수이며 void 형이다. WM_QUIT 메시지는 GetMessage 함수로 구성된 message loop을 끝내는 역할을 하며, 윈도우 프로시저를 통해 전달되지는 않는다.
MSDN은 저 메시지는 반드시 PostQuitMessage라는 전용 함수를 통해서(주로 메인 윈도우의 WM_DESTROY 타이밍 때) 넣어야지, 수동으로 PostMessage(hWnd, WM_QUIT, 0, 0) 같은 식으로 넣어서는 안 된다고 명시한다.

사실 저건 특정 윈도우가 대상이 아니라 스레드의 메시지 큐 자체가 대상이기 때문에 hWnd에 아예 NULL을 주거나, PostThreadMessage(GetCurrentThreadId(), WM_QUIT, 0, 0)과 비슷하다.
다만, WM_QUIT은 여느 메시지와 동일하게 취급되는 게 아니라 스레드의 내부 상태 차원에서 종료 플래그가 붙은 것으로 특수하게 처리되기 때문에 PostQuitMessage 같은 별도의 함수가 존재하는 것이다. 제거 딜레마의 해결 필요 때문은 아니다.

Posted by 사무엘

2014/04/15 08:25 2014/04/15 08:25
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/952

칼빈주의와 알미니안주의

  • 구원받았다면서 행실에 변화가 없는 사람이 왜 이리 많나?
  • 거짓/페이크 영접 기도로 인해 양산된 거짓 구원 확신, 가짜 크리스천에 대한 트라우마
  • 신이 어떻게 자기가 창조한 인간을 지옥에 보낼 수 있나? 그리고 구원받지 못한 사람이 왜 이리도 많나?
  • 신이 존재한다면서 정작 세상엔 신이 존재하지 않는 것처럼 왜 이렇게 악이 가득하나?

등등의 이유로 인해, 세상에는 일명 “예수천당 불신지옥”이라는 이분법으로 설명하기 곤란해 보이는 상황이 무척 많다.
그렇다 보니 이 모순을 풀려고 결국 크리스천들은 마치 좌· 우파마냥 내부적으로 크게 두 극단으로 갈라지게 되었다.

a. 사람마다 구원 여부는 우리의 행위와는 아무 상관 없이 애초에 다 정해져 있다. 이런 하나님의 주권적인 예정에 대해 인간이 감히 왈가왈부할 수는 없다.

vs

b. 아무래도 예수님을 입으로만 믿고 시인하는 걸로는 부족하다. 죄로부터 완전히 회개한 뒤에 자발적인 선행이 뒤따라야 구원받을 수 있으며 이미 받은 구원도 이를 통해서만 유지할 수 있다.

a는 흔히 칼빈주의, 예정론이라고 불리며 b는 알미니안주의라고 불린다. 그러나 이들은 궁극적으로는 둘 다 비성경적인 양극단이다.

1.

예정론의 매우 큰 문제는 '하나님이 원하시는 뜻'과 '하나님이 그냥 허락하시는 뜻'을 완전 혼동하여, 죄를 무슨 죄인 역할극 정도로 만들어 버린다는 것이다.

히틀러가 유대인들을 학살한 것도, 이북의 김씨 부자가 인민들을 학살한 것도 다 하나님이 그렇게 예정해 놨기 때문에 그리 된 거라니 이런 신성모독적인 발상이 어디 있는가? 그런 신을 우리가 어떻게 사랑과 공의가 충만한 하나님으로 믿을 수 있겠는가?

죄가 역할극이라면 예수님의 죽으심과 부활도 아무런 찬양받을 가치가 없이 그냥 짜고 치는 고스톱마냥 역할극에 불과할 것이다. 불이 영원히 꺼지지 않는 뜨거운 지옥도 무슨 가상 머신 매트릭스 샌드박스에 지나지 않을 것이다.

하나님의 주권 하에서 천차만별 불공평한 듯이 배분되는 것은 이 세상에서의 일시적인 지위나 위상뿐이다. 그래서 미국에서 태어나는 애와 북한에서 태어나는 애의 인생이 갈리고, 순교하는 신자와 기적적으로 살아나는 신자의 인생이 갈린다. 사람마다 신분과 빈부귀천이 갈린다.

그러나 개인의 구원 여부는 그런 것과는 전혀 관계가 없다! 하나님은 인간에게 정말로 필요한 것에 대해서는 철두철미하게 공평하다. 송명희 시인의 <나> 기억 안 나냐?
예정되어 있는 것은 구원받은 성도의 향후 지위 그 자체뿐이다. 미리 아심(read-only)을 예정(write operation)과 혼동해서는 안 된다.

가령, 성경의 파라오는 재앙을 자초하지 않고 이스라엘 백성을 순순히 풀어 줬어도 충분히 하나님께 영광 돌릴 수 있었다. 그럴 가능성이 거의 없겠지만, 인간 백정 인간 악마라 불리는 북한 김 정은이라 해도 어느 날 갑자기 회개하고 예수님을 영접한다면 그는 얼마든지 구원받을 수 있다. 당연한 말 아닌가? 예수님의 보혈은 말 그대로 모든 사람에게 유효하기 때문이다.

요컨대 인간이 예수님을 영접하거나 거부하는 것은 철저히 개인의 자유 의지에 달려 있다. 구원이 아무리 대가 없이 행위 없이 주어지는 선물이라 해도, “저 구원받고 싶습니다.”라고 말하고 손을 내미는 것조차 선물 받는 것에 대한 대가라고 얘기하지는 않는다. 인간은 스스로 의로워지거나 자신을 구원할 수 없지만, 스스로 예수님을 영접조차 할 수 없을 정도로 타락하지는 않았다.

저항할 수 없는 무조건적인 은혜는 스스로 선과 악을 분간 못 하는 어린아기가 받는 특례 구원에나 적용되는 조항일 것이다. 또한, 그 하나님의 은혜를 거부하고 자발적으로 지옥에 가는 사람이 있는 것은 하나님의 사랑이나 공의, 전지전능과는 전혀 별개의 영역에 있는 현상일 뿐이다.

난 정말,
하나님이 공의롭거나 전지전능하지 않고 새디스트여서 사람을 지옥에 보내는 것하고,
하나님이 공의롭고 전지전능하긴 한데 일부만 사랑하고 택했기 때문에 열외된 사람을 지옥에 보내는 것하고..
둘의 차이를 도무지 이해하지 못하겠다.

이건 마치 벌거벗은 임금님을 보고, 멍청한 사람에게는 안 보이는 아주 멋진 옷을 입고 있다고 둘러대는 것만큼이나 말장난에 지나지 않는다. 사람의 자유의지를 빼고서 지옥을 설명하면 그 무슨 수를 쓰더라도 하나님의 성품을 왜곡하지 않을 수 없는 모순에 빠진다.

여담이지만, 성경에서 하나님이 누구를 죽이기로 작정하시고 그의 마음을 더욱 강퍅하게 하고 뭐 어쩌기로 하신 것은, 일종의 가속(acceleration)이다. 그 사람을 보호하지 않고 그가 극단으로 치우치고 스스로 막장으로 빠지게 내버려 둔 것에 가깝다. 사람이 자기 힘으로 자동차나 비행기의 무거운 조향타를 움직일 수 없어서 파워스티어링 유압의 도움을 받는데, 하나님의 역할은 그런 유압인 것이다. 사람이 조향 자체를 무슨 pre-programmed된 로봇 조종 받듯이 하는 건 아니다.

2.

한편, 칼빈주의의 반대편에 서 있는 극단도 문제가 많기는 마찬가지다. 이건 믿음을 통해 은혜로 얻는 구원 교리를 아예 대놓고 부인하면서 기독교의 근간을 흔들기 때문이다. 구원의 결과로서 나오는 선행을 구원의 조건으로 혼동하여 이런 오류가 생긴다. 영어로는 fruit / root of salvation이라고 표현한다.

행위가 덧붙은 구원 획득 내지 구원 유지 교리는 성경이 말하는 구원이 뭔지 모르고 하나님이 원하시는 선행의 수준이 뭔지도 모르는 극도의 무지의 소치이다. 어떤 사람이 예수님 영접 기도를 이런 식으로 한다고 생각해 보아라.

“예수님, 저는 내가 죄인임을 이제야 알게 됐습니다. 그래서 죄악된 삶을 모조리 청산하고 예수님을 나의 주님으로 영접합니다. 이제 예수님이 사랑하는 것만을 사랑하고 예수님이 미워하는 것을 미워하기로 결단했습니다.
술, 담배, 마약 다 끊고 예전의 일체의 방탕하던 생활 방식을 다 그만뒀습니다. 예수님을 따라 성결하게 살기 원합니다. 그러니 저를 구원해 주시옵소서. 아멘.”

정말 끔찍하지 않은가? 자기가 예쁜 짓 해서 들어갔다가, 심한 사고 치거나 나쁜 짓 하면 짤리고... 저런 식으로 믿을 거면, 예수 믿는 게 부처· 마리아를 믿거나 심지어 철도교에 입교하는 것과 차이가 도대체 무엇이냐?

선행이 결과론적으로 아무리 좋게 보인다 하더라도, 이런 교리의 누룩은 우리가 극도로 경계해야 한다.
술· 담배, 마약이 나쁜 줄은 솔직히 불신자도 다 알고 그런 건 자기 깜냥과 재량껏 끊을 수도 있는 것들이다. 그걸 그만뒀다는 게 하나님 앞에서 도대체 뭐가 대수란 말인가?

자기가 구원받아야 하는 죄인임을 알았으면, 그 다음에 구원을 요청하며 따라야 할 고백은 이것밖에 없다.
예수님이 나를 위해 나를 대신하여 내 죄값을 치르고자 십자가에서 피흘려 죽으시고 부활하셨다는 걸 믿습니다.” (단, 정말 진심으로 말할 것).

인간의 깜냥으로는 도저히 처리가 불가능한 나의 처참한 죄를 사하기 위해서, 공자· 맹자나 부처나 마리아가 아니라 2000여 년 남짓 전에 이스라엘 땅에 있었던 그 역사 인물인 예수 그리스도가 십자가에서 죽으셨다고 시인하는 게 참 회개이고 기독교의 구원 조건이다!

그리고 사람이 그 구원부터 받은 뒤에야, 물리적인 죄로부터의 진정한 회개를 촉구하는 원동력은 성령님에 의해 차차 생겨난다. 철도는 교통 체증으로부터나 구원할 수 있지 죄로부터 인간을 구원하지는 못한다. 예수님 말고 다른 사대성인 같은 걸 이런 식으로 믿는다고 해서 성령의 열매 같은 게 생기지는 않는다.

그 구원은 나를 담보로 유지되는 게 아니라 하나님을 담보로 유지되는 거다. 내가 선행으로 구원받은 게 아닌 것만큼이나 내 악행으로 구원을 잃지도 않는다. 이게 바로 기독교와 여타 종교와의 넘사벽 급의 차이인 것이다.

구원 절차가 달랑 '믿음' 하나밖에 없고 너무 간단하고 쉬워서 문제라고 생각하는 분들은 그 '믿음'이란 게 뭔지를 아직 잘 모르는 경우가 태반이다. 그래서 자꾸 '행위'를 갖다 붙일려고 하는 것이다. 행위가 전혀 필요하지 않음에도 불구하고, 정말 저렇게 제대로 믿으면서 구원받은 사람이 이 대한민국에 얼마나 될 것 같은가?

물론, 정말 구원받았는데도 엄청 육신적인 신자도 있고 회개의 열매가 보이지 않는 신자도 있다. 신자의 영적 성장은 아주 느리고 답답하고 많은 시행착오를 겪는 과정이다. 행실만으로 사람의 구원 여부를 판단하기란 몹시 어렵다. 예수님의 재림 시기를 알 수 없는 것만큼이나 이것은 우리에게는 일면 불리한 면모이다. 그것만 바로 알 수 있으면 교회에서 불순분자를 훨씬 더 수월하게 솎아 내고 각종 분쟁도 시스템의 힘만으로 예방할 수 있을 텐데 말이다.

그러나 그런 불편을 못 참겠다고 신자들을 거짓 교리로 겁주고 협박하는 건 목사가 해서는 안 될 일이다. 사람이 먹는 음식을 갖고 장난을 쳐서는 안 되듯, 혼의 구원과 관련된 교리로 장난을 치지는 말아야 한다.

3.

믿음과 행위 사이에 모순처럼 보이는 관계 문제는 크리스천 사이에서 영원히 사그라들지 않는 논쟁거리로 남을지 모른다. 어찌 보면 답이 분명히 나와 있는 아주 쉬운 문제인데, 그걸 모순이 많은 이 현실에 적용하기가 껄끄럽기 때문일 것이다.

이것은 “성경에 어떻게 '없음'이 있지? 완전한 성경이 지금 우리에게 있는가?” 만큼이나 매우 중요한 사항이므로 크리스천이라면 이 문제에 대한 바른 관념도 갖추어서 내가 도대체 예수님의 어떤 면모를 믿고 있는지를 잘 따져 봐야 할 것이다. 그렇지 않으면, 당신이 믿는 종교는 인간에게 불가능한 것을 요구하느라 논리적으로 빼도 박도 못할 치명적인 모순에 빠져 있는지도 모른다. 그렇게도 절대무오하다는 성경은 이 문제에 대해서 과연 무엇을 말하고 있겠는가?

본인은 '인간의 자유 의지'와 '오로지 믿음'이 모두 반영되어 있는 위와 같은 해석이 성경적으로 가장 바람직하다고 제시하며, 이 모델로 속 시원히 풀리지 않는 의문은 참고 기다리면서 지켜봐야 한다고 생각하는 바이다.

그런데 무척 재미있는 것은 극과 극은 서로 통하기도 한다는 점이다. 그렇게도 은사주의와 거짓 영접 기도를 비판하면서 선행과 회개를 강조하는 폴 워셔 목사의 경우, 개념상 골수 알미니안주의일 것 같은데 실은 칼빈주의자이다. 아무나 구원받는 게 아니라는 주권 구원이 결국 행위 구원이나 다름없게 되는 셈이다. 계산 과정은 다르지만 궁극적인 결과는 일치한다고나 할까. 이 점도 우리는 곰곰이 생각할 필요가 있다.

Posted by 사무엘

2014/04/12 08:12 2014/04/12 08:12
, , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/951

« Previous : 1 : ... 128 : 129 : 130 : 131 : 132 : 133 : 134 : 135 : 136 : ... 215 : Next »

블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/05   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Site Stats

Total hits:
2712001
Today:
77
Yesterday:
1589