성경 왜곡의 역사 Misquoting Jesus 그리고 The Five Gospels

성경 왜곡의 역사
바트 D. 에르만 지음, 민경식 옮김/청림출판

성경을 문자 그대로 믿었던 사람이 대학에 가고 대학원에 가고
계속 공부를 하면서 마침내 사실로 믿던 것이 그렇지만도 아닌것을 깨달은 나머지
급기야 불가지론자가 되었다는 얘기가 있는데. 그게 바로 이 책의 저자 이야기다.
책의 앞머리에서 그는 자신의 신앙 여정에 대해 줄거리를 적으면서
자기가 이런 책을 왜 썼는지 개인적인 이유를 밝힌다.

이 책에서는 성경 – 그 중에서도 신약 – 의 다양한 사본이 여러군데서
일치하지 않고, 그 중에는 꽤 중요한 구절이 변개 되어 원래의 의미와는 사뭇다른
뜻으로 지금 읽히고 있다고 말한다. 그러면서 그 바뀌게 된 동기가 어떤 것일지
종류나 이유와 구체적인 예를 들어 설명한다.

본문비평이 무엇인지 상식적인 수준에서 이해할 수 있도록 도와준다고 생각된다.
2008년 초 자동차 CD플레이어가 고장나서 고치는 것을 기다리면서 읽었다.

나중에 알고보니 이 책을 낸 출판사가 아래 책을 낸 출판사더라.

The Five Gospels (Reprint, Paperback)
Funk, Robert W./HarperCollins

역사적 예수의 모습을 밝히겠다는 Jesus Seminar의 학문적 결과물로서
4복음서와 도마 복음의 본문을 그 세미나에 참석한 학자들의 분석한 내용을 담고 있슴.

보통 보는 성경중에 빨간색은 예수님이 말씀하신 것인데,
이 책에서도 이것과 비슷한 일을 했다.
세미나 참석자들은 각 문장마다 아래와 같은 기준으로
0점, 1점, 2점, 3점 (3점이 가장 인정할 만한 것)으로 투표를 했고,
그 결과를 모아서 평균을 낸 다음, 1.0 점 만점으로 바꾼다음,
0 ~ 0.25 ~ 0.5 ~ 0.75 ~ 1 사이의 점수를 가지고 검은색, 회색, 핑크, 빨간색을 주었다.

빨간색이면, 예수님은 분명 이런 얘기나 거의 똑같은 얘기를 했다.
핑크색이면, 예수님은 이런 얘기와 비슷한 얘기를 했을 것이다.
회색이면, 예수님이 이런 얘기를 하지는 않았지만, 의미는 통한다라고 생각할 수 있다.
검은색이면, 이런 얘기를 했을리가 없고, 나중에 추가된 것이다.

라고 이해하면 된단다. 재밌는 사람들이야 정말.

공부 열심히 한 학자들이 투표를 했으니
기분 내키는 대로 얼토당토 않게 하지는 않았겠지만,
이 책에서는 빨간색, 핑크색 까지 넣는다해도 붉그레한 색을 찾기가 힘들다.
특히, 요한복음에는 빨간색이 하나도 없고, 핑크색이 하나 있다. 4장 44절.
“A prophet gets no respect on his own turf.”

만들어진 신, The God Delusion

만들어진 신
리처드 도킨스 지음, 이한음 옮김/김영사

예의 차린 무신론자가 종교와 과학의 갈등을 얘기할때는
이 두 주제가 꽤 다른 영역을 다루는 것이라고 말하면서 종교는 과학을
과학은 종교를 존중해야한다하며 어느 정도 선을 넘어서는 말을 하지 않는다.

과학은 물질 세계와 현상에 대해 얘기하는 것이고,
종교는 정신적인 것 이성으로 파악할 수 없는 것에 대해 말하는 것이기 때문에
이 둘사이에는 긴장은 있을지라도 결정적으로는 충돌을 비껴나갈수 있을것
처럼 얘기하는 게 보통이라고 – 정치적으로 현명하다고 – 느꼈는데
(적어도 지난 번에 읽은 마이클 셔머의 책은 그랬다)

리처드 도킨스는 다르다.
그는 자신의 과학자로서의 관점을 관점을
종교, 특별히 인격적이며 유일한 절대 존재가 인간사에 관여한다고 믿는
기독교, 이슬람교, 유대교에게 본격적으로 들이댄다.
그러면서 이들 종교와 과학은 서로를 인정하면서 양립하는 것이 가능하지 않다고 말한다.
책은 도전적이고 직설적일 뿐더러 자신의 의견에 대한 자신감이 넘친다.
내가 이제부터 너희들의 무지함을 깨우쳐 주겠다. 자 읽어라.. 짜잔..
뭐랄까 아주 솔직한 무신론자의 대표주자랄까. 그런 느낌이 든다. 나쁘지 않다.

다른 두 종교는 잘 모르겠지만, 내부적인 문제만으로도 벅찬 기독교는
이 계몽주의의 적자로부터의 도전을 어떻게 받아들일 수 있을까.

Ubuntu에서 Thinkpad T42 버튼쓰기.

Ubuntu 깔고, tpb 패키지를 설치하니까 어지간한 버튼은 다 작동하고
OSD로 보이는데, 방향키 옆에 있는 앞, 뒤 버튼은 동작하지 않는다.

1. xmodmap 설정
~/.Xmodmap 을 만들고 거기에
keycode 234 = F19
keycode 233 = F20
를 추가하면, 그 두 버튼이 F19, F20으로 인식한다.
수동으로 xmodmap ~/.Xmodmap 실행해도 되지만, 다음 번 부팅에
gnome이 이것을 알아서 가져올까 물어보니 그 때 가져오라고 정하면 된다.
xev를 실행하고 눌러서 확인해 볼 수 있다.

2. tpbrc설정
tpb에게 F19,F20를 만드는 키입력을 가로채지 말라고 설정한다.
cp /etc/tpbrc를 ~/.tpbrc 한 다음.
XEVENTS OFF를 uncomment해서 살려준다.

3. Firefox 설정
keyconfig add-on을 설치하고
https://addons.mozilla.org/en-US/firefox/addon/6105
F19,F20에게 BrowserBack(), BrowserForward() 를 연결한다.

Thinkpad T42에 Windows XP, IBM RnR, 그리고 Ubuntu

4살이 되어가는 T42를 어떻게 하면 앞으로 한 4년 정도 더 쓸 수 있을까 고민했다.

하드 드라이브를 교체하기로 했다. 메모리는 1.25G 니까 원래 깔려있는 XP를 쓴다면 별 문제는 없을 것 같고, 원래 있던 40G하드가 작은데다가 몇년 안에 수명이 다할지도 모른다는 생각에
Western Digital 250G 노트북용 하드를 백불 좀 넘게 주고 샀다.

40G중에 4G를 복구 파티션에 내 주고 36G로 근근히 써 왔던 것을 생각하면
250G는 너무 황송해서 Windows XP와 더불어 Ubuntu도 설치하기로 했다.

/dev/sda1 : Windows XP, ntfs
/dev/sda2 : Extended (sda5,sda6)
/dev/sda3 : Ubuntu ext3
/dev/sda5:  IBM rnr
/dev/sda6:  swap

4년간 한번도 말썽 안 일으키고 재설치 없이 사용한 Windows XP Ko 를 버리고
학교에서 받은 영문 버전을 설치했다. 나중을 위해 순서를 적어보자면 이렇다.

0. Windows XP Ko 백업
복구 디스크를 만들면, CD1장과 DVD한장으로 복구 영역을 옮길 수 있다.
이것들로 시스템을 출고 시점으로 똑 같이 만들 수 있다.

1. Windows XP 설치
파티션 없는 하드드라이브를 달고, CD로 부팅
적당한 크기의 파티션을 잡고 거기에 설치

2. IBM RnR 복구 영역 심기
윈도우에서 적당한 크기의 파티션을 잡고 (5G정도) FAT32로 format하고 D Drive로 잡는다.
Rescue and Recovery 를 설치한다음, 실행해서 백업본을 D에 설치한다.
이제 부터 부팅 할 때, Access IBM버튼 누르면 복구가 가능하다.

3. 남은 공간에 Ubuntu 설치
남은 공간에 알아서 설치하도록 한 다음,
Grub를 (hd0)가 아니라 (hd0,2)에 설치하도록 한다.
/dev/sda3에 설치된 Ubuntu가 MBR을 건드리지 않도록 하고,
NTLDR가 /dev/sda3로 보내도록 할 것이기 때문,

4. NTLDR 설정
Ubuntu에서 dd if=/dev/sda3 of=ubuntu.img bs=512 count=1 로 만든 ubuntu.img를
윈도우 파티션으로 옮긴다음. c:\MBR\ubuntu.img
boot.ini에 c:\MBR\ubuntu.img=”Ubuntu” 추가

Cilk, C에 기반한 병렬 프로그래밍 언어

멀티코어 프로세서가 대세로 자리잡은 요즘
함수형 언어 Haskell이 상당한 장점을 가진다는 글을 읽고,
예전에 한번 돌려본 Cilk가 얼마나 잘 할 수 있을까 간단히 테스트 해 봤다.
위키피디아에는 C에 기반한 멀티 쓰레드 병렬 프로그래밍 언어라고 소개되어 있다.

Clik 철학은 C(C++)에 간단한 키워드를 도입하여 프로그래머가 어느 부분이
병렬화가능한지 지정해 주면, 런타임시에 지정된 부분을 알아서 병렬화 하겠다는 것이다.
그래서, 프로그램 소스는 C와 거의 동일하다.
눈여겨 볼 키워드로는 spawn, sync, cilk등이 있다.
이 키워드를 기본으로 cilk2c 라는 프로그램이 C 프로그램으로 바꾸어준 다음
나머지는 일반 C프로그램과 동일하게 처리된다.

Cilk는 GNU로 공개되어 있고, tarball을 다운 받아 간단히 설치 가능하다.

wget http://supertech.csail.mit.edu/cilk/cilk-5.4.6.tar.gz
tar xvfz cilk-5.4.6.tar.gz
cd cilk-5.4.6/
./configure
make
make install

Cilk의 매뉴얼에서 제시하는 첫 예제도 Fibonacci 수열인데,
Haskell과 비교를 해보기 위해 해당글의 C 프로그램 예제를 Cilk용으로 고쳤다.

#include <stdio.h>
#include <stdlib.h>

cilk long long fib(long long n) {
  if (n < 2) {
    return 1;
  } else {
  long long x,y;
  x = spawn fib(n-2);
  y = spawn fib(n-1);
  sync;
  return x+y;
 }
}

cilk int main(int argc, char ** argv) {
  long long n = 0;

  for (n = 0; n <= 40; n++) {
        long long ret;
        ret = spawn fib(n);
        sync;
      printf(“fib(%lld) = %lld\n”, n, ret );
  }

  return 0;
}

컴파일을 하고 실행을 하였더니 (–nproc 은 cpu를 알아서 쓰라는 얘기, 2개가 있으니 2개를 씀)

cilkc -O2 fib.cilk -o fib-cilk
time ./fib-cilk –nproc 0

결과가 나왔다.

real    0m40.979s
user    1m10.340s
sys     0m0.432s

이럴 수가! 너무 느려!!!
이 컴퓨터가 느려서 그런가 확인 하려고 비교 대상인 C프로그램을 돌렸더니

gcc -O2 fib.c -o fib
time ./fib

real    0m6.735s
user    0m6.568s
sys     0m0.000s

컴퓨터 문제가 아니고, Cilk로 짠 프로그램이 너무 느렸던거다.
아무리 편리하다고 해도 이 정도로 성능이 나쁘면 쓰기 힘들텐데…
Cilk를 기본으로 상업용 Cilk++ 이 곧 나온다던데, 이건 좀 쓸만해지지 않을까.
http://www.cilk.com/index.htm