<날개셋> 한글 입력기 7.1

1.

자, 내일 지구가 멸망하더라도 <날개셋> 한글 입력기의 개발은 개발할 거리가 있는 한 계속된다.
7.0 버전이 나온 지 약 100일 만에,
그리고 공휴일이 된 한글날을 전후하여 프로그램의 새 버전 소식을 전하도록 하겠다. 새 버전은 7.1이다. 이번에도 내 맘에 쏙 드는 새로운 버전이 잘 완성됐다.

7.1은 기본적으로는 역시 7.0의 버그를 고친 게 많다.
예전에 개발 근황글에서 먼저 언급했던 것처럼 Windows 8 Metro에서 옛한글이 입력되지 않는 문제, Visual Studio 2012의 일부 입력란에서 한글 연속 입력 시 한 타가 씹히던 문제를 해결했다.
7.0에서 처음으로 도입된 사용자 정의 후보 기능 자체에도 버그가 좀 있던 걸 고쳤다.
그리고..

2.

운영체제의 리치 에디트 컨트롤에 TSF 지원 확장과 관련된 오동작이 있다는 걸 도움말에 '알려진 문제'라고 추가 수록했다.

<날개셋> 한글 입력기의 외부 모듈은 꽤 옛날 버전부터 “TSF 지원 확장” 옵션이 있으며, 이걸 알고 실제로 쓰는 분들이 많은 줄로 본인은 안다. 이것은 한글 IME가 운영체제에다 요청할 경우, 운영체제의 표준 에디트 컨트롤과 Internet Explorer 브라우저 내부의 입력 폼을 TSF A급으로 실험적으로 바꿔 준다. 물론 XP에는 이런 기능이 없고 Vista 이상부터만 지원된다.

이렇게 TSF A급으로 임시 승격되고 나면 잘 알다시피 표준 에디트 컨트롤(가령, 메모장)에서도 단어 단위로 한자 변환이 가능하며 이미 완성된 글자도 낱자 단위로 지우고 역도깨비불 현상 같은 것도 <날개셋> 편집기를 쓸 때처럼 자유자재로 가능해진다.

다만, 이것은 마소에서 100% 지원은 해 주지 않는 비공식 실험적인 기능에 가깝다. 한글 IME 중에서 이런 요청을 하는 물건 자체가 날개셋밖에 없고 MS 한글 IME조차도 이런 짓은 안 한다. 그러니 동작의 기준으로 삼을 여타 프로그램 자체가 없고 내 프로그램에서 제대로 안 되면 다른 어디에도 해답이 없다. 그냥 사용자가 알아서 조심해서 쓰는 수밖에 없다.

그런데 사실은 이 옵션을 켤 경우, 표준 에디트 컨트롤과 IE뿐만 아니라, 리치 에디트 컨트롤도 영향을 받아서 TSF A급으로 바뀐다는 것을 모 사용자의 피드백을 통해 우연히 알게 되었다.
표준 에디트 컨트롤이 메모장이라면 리치는 '워드패드'와 같다. 전자와는 달리 후자는 글자별로 서체와 속성(진하게, 밑줄, 이탤릭 등)을 다르게 지정할 수 있고 글자의 크기도 조정할 수 있으며 문단 정렬이 가능하고 표나 그림도 삽입할 수 있다.

리치 에디트 컨트롤도 TSF A급으로 승격된다니 이것은 일면 바람직한 현상이지만...
참 안타깝게도, 지원하려면 좀 제대로 지원하지 여기에는 버그가 좀 있다.
cursor의 위치가 0 또는 1일 때.. 다시 말해서 문자열의 맨 처음 아니면 바로 그 다음 위치에서 한글 조합을 시작하면 두 글자가 조합으로 잡히고 깨진 문자가 삽입되는 등 온갖 오동작이 발생한다. 위치가 2 이상일 때부터는 이상이 없다.

카카오톡 PC 버전이나 스카이프(Skype) 같은 메신저 프로그램들의 대화창은 리치 에디트 컨트롤을 사용하는 대표적인 예다.
그렇기 때문에 이들 프로그램에서는 공통적으로 이런 문제가 발생할 수 있음을 밝힌다. 따라서 이런 데서는 먼저 '..'(마침표 두 개) 같은 문자를 먼저 찍어서 cursor의 위치를 2 이상으로 만든 뒤 한글을 입력하고 나중에 ..를 지우고 보내든가 해야 한다. 그게 싫으면 TSF A급 확장을 사용하지 말고.

다만, 리치 에디트 컨트롤을 사용하는 대표적인 기본 프로그램인 워드패드는 이런 확장 옵션이 필요 없이 진작부터 자체적으로 TSF A급으로 동작하기 때문에 저런 문제가 없다.

운영체제의 확장 지원을 통해서 TSF A급이 된 입력란은 한글을 조합할 때 종래의 검게 깜빡이는 사각형 cursor 대신, 조합 전체가 파란 블록으로 잡힌다는 차이가 있다. 그러나 워드패드나 MS Word처럼 원래부터 TSF A급인 환경은 한글 조합 중일 때 여전히 검게 깜빡이는 사각형 cursor가 나온다. 이런 외형으로 동작 방식을 구분할 수도 있다.

3.

그리고 덧붙여,
예전에는 어떤 에디트 컨트롤에다가 TSF 지원 확장 옵션을 켜거나 끈 걸 적용하려면, 제어판 대화상자를 닫은 뒤에 프로그램의 키보드 포커스를 다른 프로그램으로 옮겼다가 되돌아와야 했다. 그래야만 새 설정이 적용되었다.
하지만 이번 7.1은 창 포커스를 수동으로 바꾸지 않아도 제어판만 '확인'으로 닫으면 설정 변경이 바로 적용되게 개선했다.

4.

bksp 키의 동작 방식에 "연타 시 한번 정해진 동작을 계속 적용"이라는 옵션을 추가했다.
bksp 키의 동작 방식은 기본적으로 현재 한글을 조합 중이냐 그렇지 않느냐에 따라서 동작이 매번 달라지는데,
이 옵션이 켜지면, bksp든 Shift+bksp든 그 글쇠가 처음으로 누르던 순간에 결정된 동작 방식(조합 중이냐 아니냐)을 해당 글쇠를 연타하는 중에 계속 적용하게 한다. 즉, bksp로 인해서 한글 조합 여부가 달라지더라도 계속 낱자 단위 아니면 글자 단위로 지우게 한다는 뜻이다.

보통 한글을 조합 중일 때는 bksp는 낱자 단위로 지우고 Shift+bksp는 글자 단위로 한꺼번에 지운다.
그런데 반대로 한글을 조합 중이지 않을 때 평소에는 bksp는 언제나 글자 단위로 지우다가 Shift+bksp를 눌렀을 때만 예외적으로 낱자 단위로 지우게 하고 싶을 때가 있다.
그리고 bksp든 Shift+bksp든 글쇠를 연타하면, 그 다음부터는 한글 조합 상태이든 아니든 한번 결정된 단위로 계속 지우는 게 자연스러울 것이다.

이때 이 옵션을 사용하면 된다. 지금까지 제공되던 bksp 동작 옵션은.. 뭔가 2% 부족한 면모가 있었는데 이 옵션을 도입함으로써 드디어 완전체를 이뤘다.

5.

Windows 운영체제 내지 많은 응용 프로그램들은 여전히 한글은 조합이 오로지 한 글자 단위로만 만들어진다고 가정하고 동작하는 부분이 많다. 이 가정이 오랜 시간 동안은 참이었다. 그러나 이제 글꼴 처리 기술이 발달하고 옛한글을 여러 글자를 모아서 하나로 표현하는 게 가능해지면서 그 가정은 문제를 일으키고 있다.

프로그램에 따라서는 옛한글 내지 호환용 자모로 표현되지 않은 한글 자모는 조합 과정이 제대로 표시되지 않다가 조합이 끝나야 글자 전체가 표시된다. 최악의 경우는, 한글 조합을 호환용 한글 자모 한 글자로 시작하지 않으면, 조합이 되지 않고 그냥 튕기기도 한다. 이런 동작 때문에 <날개셋> 외부 모듈은 근본적으로 자체 구현체인 <날개셋> 편집기와 100% 동일하게 동작할 수가 없다.

이 점을 감안하여 이번 새 버전의 외부 모듈은, '한글 표현 방식' 옵션에서 '호환용 한글 자모 사용'을 체크하지 않을 경우 더 강한 경고 메시지가 아래에 표시되게 했다.

그리고 버그 신고 요령도 도움말에다 추가했다.
외부 모듈은 MS IME의 소스를 직접 보지 않는 이상 애시당초 100% 완벽하게 만드는 게 불가능하기 때문에, 오동작이 의심될 경우, (1) 프로그램이 최신 버전인지, (2) 도움말의 FAQ는 미리 읽어 보셨는지, (3) TSF 확장 지원 옵션을 끄고 한글 표현 방식을 원상복귀해 봤는지, (4) MS IME는 문제 없는데 이 프로그램만 그러는 게 확실한지 등등을 먼저 확인하고..

버그 신고시 운영체제의 버전과 언어, 비트수, 그리고 프로그램이나 웹사이트를 연 직후부터 모든 재연 과정을 일일이 설명할 것을 당부했다.

에필로그:
이렇듯, 7.1은 프로그램의 완성도를 강화한 여러 아기자기한 개선 사항들이 많으니, 7.0 포함 구버전을 사용하고 계신 분은 프로그램을 업데이트하시길 권한다.
앞으로 7.x 중반까지는, 내년 정도까지는 한글 입력 쪽으로 집중적인 기능 추가가 있을 예정이다.

Posted by 사무엘

2013/10/14 08:35 2013/10/14 08:35
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/887

Wonderful Grace of Jesus에 이어 본인이 최근에 팍 꽂혔던 명찬양이 있어 내 블로그에다가도 소개를 좀 하겠다.
참고로 CCM이 전혀 아니다. 가사는 지금으로부터 거의 300년 전에 찰스 웨슬리가 썼고, 곡은 거의 200년 전에 토머스 캠벨이 만든 완전 고전이다.
유튜브 링크: And Can It Be That I Should Gain

클래식답게 리듬도 아주 규칙적이고 쉬운 찬송가 스타일인데 딱히 국내에 많이 소개된 것 같지 않다.
멜로디가 Wonderful Grace of Jesus만치 그저 화사 발랄한 느낌은 덜하지만, 그래도 여전히 미려하고 웅장하고 감동을 준다.
그리고 무엇보다 가사가 정말 고퀄 일품이다. 너무 '찐하다'. 직접 보시라.

1.
And can it be that I should gain
An int’rest in the Savior’s blood?
Died He for me, who caused His pain?
For me, who Him to death pursued?
Amazing love! how can it be
That Thou, my God, shouldst die for me?

2.
’Tis mystery all! The Immortal dies!
Who can explore His strange design?
In vain the firstborn seraph tries
To sound the depths of love Divine!
’Tis mercy all! let earth adore,
Let angel minds inquire no more.

3.
He left His Father’s throne above,
So free, so infinite His grace;
Emptied Himself of all but love,
And bled for Adam’s helpless race:
’Tis mercy all, immense and free;
For, O my God, it found out me.

4.
Long my imprisoned spirit lay
Fast bound in sin and nature’s night;
Thine eye diffused a quickening ray,
I woke, the dungeon flamed with light;
My chains fell off, my heart was free,
I rose, went forth, and followed Thee.

5.
No condemnation now I dread;
Jesus, and all in Him, is mine!
Alive in Him, my living Head,
And clothed in righteousness Divine,
Bold I approach the eternal throne,
And claim the crown, through Christ my own.

후렴
Amazing love! how can it be
That Thou, my God, shouldst die for me?

어찌하여 나 같은 자가 감히 내 구주의 보혈의 수혜 대상이 될 수 있었는가!
나는 민폐만 끼쳤는데 그분은 나를 위해 죽어 주셨다.
죽으실 수 없는 분이 죽다니, 세상에 이런 신비· 미스터리가 따로 없다.
그 신묘막측한 하나님의 섭리를 누가 이해나 할 수 있을까. 천사들도 하나님의 지혜의 깊이를 측량하려 했지만 다 실패로 끝났다.
후렴: 놀랍기 그지없는 사랑이로다! 어떻게 하나님께서 나를 위해 죽으실 수 있는가?

대충 이런 내용.
영어에서 it is는 흔히 it's로 줄여 쓰는데, 시나 만화 대사 같은 데서는 이따금씩 2음절이 아닌 1음절의 모음을 생략하여 'tis라고 줄이기도 한다. 우리말로 비유하자면 '오타쿠'를 오덕이라고 줄이느냐 덕후라고 줄이느냐의 차이와 같다.

감상평을 잠시 얘기하자면, 1절 처음에는 I should gain이라고 했다가 후렴에서는 thou, my God, shouldst라고 should가 굴절되는 차이가 발생한다. 가사가 맨 처음부터 And로 시작하는 것도 특이점.

4절은 죄에서의 자유를 묘사하면서 My chains fell off가 나오는데, 이것은 감옥에 갇혔던 베드로의 사슬이 풀리는 장면을 떠오르게 한다(행 12:7). 그리고 2절의 sound는 '소리'나 '건전한'이라는 뜻이 아니라 '깊이를 측량하다'라는 뜻으로, 성경에서 사도행전에서만 쓰인 용법이다(행 27:28). 따라서 이 찬양의 가사는 전반적으로 사도행전스러운 느낌을 준다. 내가 느끼기엔 그렇다.

가사가 무려 5절까지 있는 관계로 긴 편이다. 악보에 따라서는 천사가 어떻고 스랍이 어떻고 하는 너무 형이상학적인 2절을 주로 생략하고, 때로는 5절까지 생략하기도 한다. ㅎㅎ

우리 교회에서 지난 8월에 청년부 찬양으로 이 곡을 선정해서 불렀다. 가사는 물론 원판보다 깊이가 훨~씬 덜한 한국어 번역으로..
심지어는 나조차도 한 주간은 Looking for You마저도 제치고 이것만 들을 정도였다.
이런 찬양을 놔 두고 철도 음악을 들을 수는 없어서였다.

작사자와 작곡자는 이걸 한번 부르면서 테스트하고 나서는 “오~ 주여, 우리가 정녕 이런 찬양을 만들었단 말입니까? ㅠㅠㅠㅠ” 하면서 얼싸안고 꺼이꺼이 했을 법도 해 보인다.

Posted by 사무엘

2013/10/11 08:26 2013/10/11 08:26
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/886

성경 노선도!

지금 각종 SNS와 구글, 네이버 등 검색엔진에서 '성경 노선도'라는 이름으로 떠돌고 있는 아래 그림은 원저자가 본인이다. 김 용묵, 내가 고안한 것임을 이 자리를 통해 밝힌다.

너무 남사스러운 거 같아서 그림에다 딱히 저작권 표시를 하지는 않았지만, 최소한 자기가 만들지 않은 작품을 자기 것이라고 사칭하는 일은 막기 위해서 최소한의 출처는 알리도록 하겠다.

사용자 삽입 이미지

내가 너무나 사랑하는 철도와 성경이라는 두 분야를 서로 융합해서 표현하는 방법이 없을까 고민하던 끝에 만들어진 작품이다.
작품을 최초로 만든 건 2006년경이다. 다음은 2006년임을 인증하는 최초의 그림 링크이다.

그러다가 본인은 내 혼자서 발로 그린 노선도를 디자인 일을 하시는 교회의 모 자매님에게 부탁하여 깔끔한 그림으로 만든 뒤, 청지기 카페와 킵바이블에다가 공개했다.
그랬는데 역시 킵바이블의 인지도 덕분인지 이 노선도는 인터넷에서 크리스천들 사이에 급속도로 퍼져 나가기 시작했다. 누가 만든 건지도 모르는 채로.. ㅎㅎㅎ

주황과 분홍 같은 붉은 계열은 신구약 성경의 배경 지식이 되는 기초에 속한다. 구약에서는 모세오경, 신약에서는 복음서이다.

파란색은 역사서이다. 구약에서는 역사서가 모세오경에서 자연스럽게 이어진다.
에스더기 구간이 저런 선형을 하고 있는 이유는 시간적으로 느헤미야보다 이전이기 때문이다.
신약에서는 역사서가 사도행전이 전부이며, 사복음서 중 당연히 누가복음에서 파생되어 나온다.

자주색은 소위 대언서로, 신약에서는 계시록이 유일하다.
구약에서 위쪽은 major prophets이고 아래쪽 호세아부터는 minor prophets이다.

사무엘하~열왕기하, 그리고 역대기상~역대기하는 병렬로 배열되어 있고, 이를 대언서가 수직으로 관통한다. 왼쪽은 다윗 이전이고, 오른쪽은 다윗 이후이다.
그리고 에스라와 그 오른쪽의 책들은 바빌론 포로 귀환 이후의 시간대이다.

다음, 연두색은 문학서이다. 욥기는 창세기 시대에서 파생되어 나온다. 룻기는 역사적으로는 사사기 중간에 속하지만 결말이 다윗의 계보로 끝나는 점을 감안하여 그림과 같이 분류했다.
문학서는 위쪽을 차지하면서 예레미야서와 교차하여 예레미야애가로 끝나게 배치한 것이 특징.

신약을 보면, 사도행전 중간부터 바울이 활동하기 시작하므로 바울 서신서의 노선은 그림과 같이 분기되어 나온다.
시기적으로 사도행전 28장까지 다 끝난 뒤에(로마 감금 내지 그 이후 4차 전도 여행) 기록된 것은 사도행전보다 오른쪽에 놓인다.
데살로니가 서신은 바울 서신들 중 상당히 초기에 기록된 서신임을 알 수 있다.

히브리서는 바울 서신과 일반 서신의 경계에 있는 독특한 책이므로 응당 저렇게 배치된다.

즉, 이 노선도는
성경 각 책의 성격, 책이 다루는 연대나 기록된 연대, 그 책이 성경 전체에서 차지하는 위치를 적당히 시각적으로 나타내면서 책의 66권 배열 순서도 크게 안 흐뜨리려 했다.

사소한 고증 오류가 있을 수는 있으나, 취지는 충분히 설명되었으므로 그런 부분만 약간 고치면 성경에 대한 시청각 교육에 꽤 유용한 자료가 되지 않을까 싶다.
아무쪼록 우리 인류에게 성경을 남겨 주신 하나님께 감사드리고, 한국 철도에게 영광 돌리는 바이다.

Posted by 사무엘

2013/10/08 08:31 2013/10/08 08:31
, , ,
Response
No Trackback , 3 Comments
RSS :
http://moogi.new21.org/tc/rss/response/885

퇴근길에 문득 든 아주 기초 수학 생각이다.
아래 그림은 포물선 2개 x^2+2*x (x=-2..0), -x^2+2*x (x=0..2)와, sin(x*PI/2) (x=-2..2)를 한데 포개 놓은 것이다.
원래 sin, cos 부류의 삼각함수는 주기가 2*PI인데, 이를 4로 좁혀 놓았다.
이렇게 보니까 포물선도 싸인파 곡선과 형태가 생각보다 꽤 비슷해질 수 있다는 걸 느꼈다.

사용자 삽입 이미지

0부터 2까지 구간의 넓이를 정적분으로 구해 보면 이차함수인 포물선의 면적은 4/3인 반면, 진짜 싸인파의 면적은 4/PI이다. 즉, 포물선에 속하는 면적이 약간 더 크다.

그러나 이 두 곡선은 비슷하게 생겨도 그 본질은 굉장히 다르다. 미분을 해 보면 안다. 이들의 도함수를 그래프로 그리면 다음과 같다.

사용자 삽입 이미지

싸인파는 도함수도 기준 위치와 진폭만 다를 뿐, 여전히 전구간이 미분 가능한 매끄러운 싸인파이다.
그러나 두 포물선을 인위적으로 연결한 함수는 도함수가 직선으로 바뀌었고, x=0 지점은 연속이긴 하지만 기울기의 좌극한과 우극한의 값이 서로 달라서 미분이 불가능한 점이 되었다. 마치 절대값이 들어있는 일차함수처럼 된 셈이다.

이걸 또 미분하면 어떻게 될까?
싸인파는 역시 또 싸인파이지만 저 직선은 아예 양수 아니면 음수의 상수함수로 바뀌고, x=0 지점은 이제 연속이지도 않게 된다. 마치 인간이 만든 아무리 매끄럽고 뾰족한 바늘도 확대하고 또 확대해서 보면 울퉁불퉁한 표면이 드러나듯이 말이다.

우리가 자연에서 흔히 볼 수 있는 물체의 운동 양상은 관성에 의한 등속 직선, 아니면 힘을 한 쪽으로 균일하게 받는 포물선 형태가 있다. 하지만 출렁이는 물결이나 음파 같은 진동은 삼각함수에 속하는 싸인파가 자연스러운 움직임이다. 오히려, 포물선 두 개를 갖다붙인 것에 불과해서 미분하면 딱딱한 절대값 직선으로 바뀌어 버리는 곡선이야말로 인위적이고 부자연스러운 형태인 것이다.

왜 싸인파가 자연스러운 움직임일까?
삼각함수는 무한소나 무한대로 발산하지 않고 주기를 갖고 -1에서 1 사이를 한없이 진동만 한다.
그러면서도 전구간이 단절 없이 연속이고 미분 가능하다. 미분을 해도 심지어 도함수조차 형태를 바꾸면서 주기적으로 자기 자신으로 돌아오기를 반복하기 때문이다.
내가 수학적인 통찰력이 부족해서 그 원리를 다 '이해'와 '실감'은 못 하겠지만, 적어도 이런 함수는 돼야 정말 매끄러움의 본질을 수학적으로 표현한 게 아닌가 하는 막연한 추측까지는 한다.

해석학적으로 볼 때 x^n의 x에 관한 미분은 n*x^(n-1)로 떨어진다. 지수함수 exp는 알다시피 (1/ n!)*x^n의 무한합으로 정의되어, x에 대해 미분하더라도 예전항이 바로 다음항의 미분 결과와 같은 꼴이 되는 형태이다.

그런데, 삼각함수인 sin과 cos는 exp를 홀수승 항과 짝수승 항으로 분할함과 동시에 각 항의 부호를 또 +, -로 교대로 오고 가게 바꾼 형태이다. 그래서 함수가 무한대나 무한소로 발산하지 않고 진동하게 된다. 신기하기 그지없다.

미적분학을 공부하면 삼각함수와 더불어 쌍곡선함수라는 물건도 배우게 된다.
얘는 sin과 cos에다가 h를 붙여서 sinh, cosh처럼 쓰는데, 지수함수를 이루는 무한급수에서 각각 홀수승항과 짝수승항만 쪼개서 취한 함수이다. 삼각함수와의 차이는 부호 스위칭이 없다는 점이 전부다.

그래서 쌍곡선함수는 비록 그래프의 모양은 삼각함수와 완전히 다르지만 삼각함수와 굉장히 비슷한 특성을 갖게 된다. sinh와 cosh는 미분하면 부호 스위칭이 없이 서로 상대편으로만 탈바꿈하며, 삼각함수의 덧셈정리와 비슷한 특성도 가진다. 삼각함수가 cos(x)^2 + sin(x)^2 = 1이듯이 cosh(x)^2 - sinh(x)^2 = 1이다. 전자가 원스럽다면 후자는 정말 쌍곡선스러운 형태이지 않은가?

쌍곡선함수는 사실상 수학 해석학적인 의미 때문에나 배우지, 삼각함수에 비해 실생활에서 유용한 구석은 별로 없는 것 같다. 그러나 얘도 자연에서 의외로 중요한 곳에서 자주 볼 수 있다. cosh가 바로 현수선의 방정식을 나타내는 함수이기 때문이다.

현수선이란 밀도가 균일한 줄이 자기 길이보다 짧은 간격으로 양 끝이 어떤 중력장 안에 매달렸을 때, 자신의 무게로 인해 중력의 방향(아래)으로 축 늘어짐으로써 형성되는 선을 말한다.
이것도 포물선과 비슷해 보여서 혼동되기 쉽지만, 포물선하고는 수학적인 성질이 완전히 다르다. 현수선은 증가의 폭이 이차함수가 아니라 지수함수와 같은 스케일이다.

알고 보면 아치도 포물선이 아니라 현수선을 뒤집은 모양이다. 현수선 모양으로 구조물을 건설하는 게 모양이 역학적으로 가장 안정적으로 형성된다고 한다.
왜 현수선이 cosh 함수의 형태로 형성되는지 수학적으로 증명하려면 물리학, 미적분학 등 여러 방면의 이론이 동원돼야 하지 않을까 싶다.

어찌 보면 당연한 말이지만, 현수선은 일부만 잘라 내도 그 모양이 그대로 유지된다. 다시 말해 U자 모양으로 된 현수선의 양 끝의 일부를 잘라내서 u부분만 잡고 있더라도 기존 부위가 받는 힘은 변함없으며, 그 구간의 선 모양이 바뀌지 않는다는 뜻이다.

삼각함수와 쌍곡선함수가 각자 자기 분야에서 포물선과는 다른 매끄러움, 출렁거림 등을 표현하고 있다는 게 경이롭다.
자연 현상으로부터 얻은 물리량이라는 게 태생적으로 연속적인 데이터의 형태이다 보니, 물리학의 발전을 위해서는 수학, 특히 미적분학의 발전이 반드시 선행되어야 했다는 게 느껴진다.

Posted by 사무엘

2013/10/05 08:27 2013/10/05 08:27
, , , , , ,
Response
No Trackback , 5 Comments
RSS :
http://moogi.new21.org/tc/rss/response/884

* 게일 리플링거(Gail Riplinger). 1947년생.

사용자 삽입 이미지

세벌식 글자판 운동에다 비유하자면, 거의 킹 제임스계의 송 현 선생님 같은 분.
여성이지만 변개된 역본들을 까는 전투력은 타의 추종을 불허하는 만렙이다. 변개된 성경 옹호자 내지 원어· 원문를 빠는 사람들의 천적, 나이트메어이며, 킬러요 저격수이다. 나 같은 사람은 감히 범접할 수조차 없는 세계적인 전문가이다. 다만, 그 덕분에 주변에 적도 엄청 많다.

구글에서 사진을 검색해 보면 일반 사진보다는, TV에 노출된 장면이 캡처된 게 더 많이 걸려 나온다. 예쁘장한 전형적인 미국 아줌마 인상이라나? 단, 그런 것들은 대개 최소한 20세기 시절의 굉장한 옛날 사진이다.

이분은 New Age Bible Version(국내엔 <뉴에이지 성경 역본>이라고 소개됨), In Awe of Thy Word, Hazardous Materials 같은 전설적인 책들을 썼는데, 다들 수백~천몇백 페이지에 달하는 어마어마한 거작이다.
그냥 성경간의 차이를 대조하는 수준이 아니라, KJV를 공격하는 데 쓰이는 알량한 히브리/그리스어 원어 사전이나 원문부터가 완전히 헛점투성이이고 싸그리 잘못된 이유를 다 밝혀 낸다. 그리고 그 바닥 학계가 얼마나 허접하고 더러운지를 까발린다. 종교적이 아니라 학술적으로 말이다.

그렇게 적을 상대로는 디버프를 시켜 놓고, KJV에 대해서는 버프 그 자체다. 언어 차원에서 성경의 영어 번역은 KJV 말고는 선택의 여지가 있을 수 없음을 논증하고, KJV의 영어는 매 단어 하나 하나가 거의 뜻글자나 마찬가지라는 수준으로 의미 부여를 시켜 준다. 가령, do의 3인칭 단수가 왜 굳이 doth(더쓰)와 doeth(두이쓰)로 달리 존재하는지 같은 것까지 다 아무렇게나 번역된 게 아니라는 거다.

과장 좀 보태면, 400여 년 전의 KJV 번역자들보다 KJV를 더 잘 알 것 같기도 한 사람이다.

본인은 이분의 저서 Hazardous Materials의 일부를 번역하는 일에 투입된 적이 있었다. 그런데 chapter 1만 봐도 이건 뭐..
다음과 같은 기상천외한 비유가 들어간 문장들을 생각해 낼 수 있는 사람은 역시 이분밖에 없다. ㅋㅋㅋㅋㅋㅋ 번역하면서 내가 다 놀랐다.
나부터가 글을 좀 호전· 도발· 공격적으로 쓰는 걸 좋아하는 스타일이다 보니, 그런 스타일의 글을 번역할 때도 동질감이 느껴진다.

1. 신학교 교수가 강의실에서 포르노를 보여주고는 이렇게 말한다고 생각해 보라. “이브의 ‘원판’(original)은 원래 이렇게 생겼지요. 그러니 여러분의 와이프라는 ‘판본’(version)은 원본보다 열등합니다.” 원어 어휘집은 우리의 신앙에 이와 동일한 맥락의 악영향을 끼치니, 정말 기독교계의 포르노라고 해도 과언이 아니다.

2. 이런 체계 하에서 성경학도들은 끝없이 배우지만 진리의 지식에 결코 도달하지 못할 것이다. 그럼에도 불구하고 그들은 계속해서 소프트웨어와 서적들을 모으면서 “지혜로워지고” 하나님께서 말씀해 주신 것보다 더 많은 것을 아는 “신들처럼 되려고” 노력할 것이다. 그들은 전쟁터에서 이미 뱀의 편이 되고 말았다. “참으로 하나님께서 그렇게 말씀하시더냐?” (Yea, hath God said?)

3. 에이즈(AIDS)라는 질병은 원래는 GRID(게이와 관련된 면역 체계 이상증세)라고 불렸다. 그런데 오늘날은 또 다른 GRID(그리스어와 관련된 면역 체계 이상증세)가 학생들을 물들이고 있다. 영적 면역력을 파괴하여 이단으로 빠지게 하는 것이다.

4. 하다못해 주변에 마약이나 포르노에 대한 유혹이 있다면, 성령의 검인 성경이 신자를 지켜서 그런 것들이 얼씬도 못 하게 할 수 있다. 그러나 마귀가 그 검을 빼앗아 버리면, 검을 빼앗긴 사람은 앞으로 어떤 공격도 막을 수 없는 무방비 상태가 된다.

5. 필자는 자라나는 대학생들로 인한 마음의 부담 때문에 매일 이렇게 기도한다. 그들에게 거짓을 가르치는 자들은 어서 회개하고, 만약 회개를 거부한다면 그들의 거짓말이 강제로라도 잠잠해지기를 말이다. 거짓말을 잘하는 사람이라면 합법적으로 거짓말을 해도 되고 거짓말이 최소한 ‘영적인’ 해악을 끼치지는 않는 직업을 선택하면 얼마나 좋을까? 중고차 판매 영업사원이 적절할 것 같다. 주님은 여러 위험한 교수들과 성경 의심쟁이들을 본업에서 끌어내셨으며, 일부를 진짜로 중고차 판매업계로 보내 버리신 적이 있다.


사실, 영어로 the original이라고 하면 원어도 되고 원문도 된다. 성경 번역의 품질은 얼마나 정확한 원문을 바탕으로 얼마나 정확한 언어 지식을 동원하여 번역하였느냐에 따라 결정된다.
킹 제임스 진영에서 기존 성경들이 다 변개되었다고 주장하는 건 대부분이 '원문' 문제이고 <뉴에이지 성경 역본> 같은 책도 다루는 분야가 이쪽이다. 오리겐 같은 사람이 변개한 부패한 원문을 웨스트코트와 호르트 같은 학자가 본문 비평이라는 정신승리 궤변을 들고서 다시 끄집어내어, 성경의 주류로 끌어올려 놓은 것이다. 이것은 참으로 거대하고 치밀한 음모이다.

그런데 세월이 흐르면서 리플링거 박사의 관심사는 원문을 넘어서서 이제 '원어'로 넘어갔다.
변개된 성경에 대해서는 경각심이 생긴 사람들의 마음을 도저히 고칠 수가 없으니, 악의 무리들은 이제는 본문은 KJV 그대로 놔 두더라도 단어의 뜻이 이게 아니고 원어로는 이렇다는 식으로 사기를 치는 것이다.
예를 들어, 영어로는 아가페 사랑과 에로스 사랑을 구분해서 표현할 수 없다거나, 하나님의 이름은 히브리어 사자음어 때문에 음가를 영원히 알 수 없다는 식의 괴담 말이다.

그래서 새로 나온 책은 변개된 역본이나 본문에 이어 원어 어휘집, 사전을 신랄하게 까고 있다.
요즘은 사전을 만들 때 편찬자의 주관이 아니라 다량의 말뭉치 분석을 통해서, 거기에 드러난 어휘의 용례를 바탕으로 뜻풀이를 추출하는 게 대세이다.
그런데 문제는 그런 원어 어휘집들의 밑천은 이집트나 그리스 이교도들이 남긴 전혀 기독교적이지 않은 문헌이라는 점이다.

그런 엉뚱한 걸 갖다대고는 단어의 의미가 서로 일치하지 않으면 KJV의 오역이라고 트집 잡고 넘기고, 심하면 KJV의 단어의 의미를 세속· 인본주의적인 뜻으로 완전히 왜곡해 버린다. 특히 지옥, 대속, 기도, 은혜 같은 단어가 그런 식으로 왜곡되면 이건 뭐 기독교의 근간이 다 무너지지 않겠는가?

단적인 예로 virgin이 사실 원어에 따르면 굳이 처녀가 아니라 '젊은 여성'도 된다. 이런 식으로 원어드립을 치면 예수님의 동정녀 탄생도 얼마든지 공격하고 부정할 수 있게 된다는 뜻이다.

이 주제로는 할 말이 무척 많지만, 오늘은 이쯤에서 글을 맺겠다. 요컨대 킹 제임스 성경에 대해서는

1. 변개되지 않은 바른 본문에서 번역되었으며,
2. 모든 바른 필사본들을 온전히 집대성했다.
3. 원문을 그 누구보다도 탁월한 실력으로 번역했고,
4. 원문을 교리적으로 바른 사상으로 번역했다.


이렇게 알면 정확할 것이다.
1은 무슨 뜻인지 설명이 더 필요하지 않겠지만, 2는 세상의 그 어떤 성경 필사본도 단일 필사본에 성경 66권 전서가 다 담겨 있지는 않기 때문에 짚고 넘어갈 필요가 있는 문제이다.
2가 불안하면 마가복음 16장의 마지막 열두 구절이라든가 요한일서 5:7 삼위일체 문제에서 걸려 넘어지게 된다.
1과 2는 원문 계층이고 3과 4는 원어 계층이다. 3은 KJV의 이스터(행 12:4) 같은 우수한 번역을 뒷받침하며,
4는 KJV가 동성애· 여자 목사 옹호, 지옥 부정 같은 불온사상에 물들지 않았음을 보여 준다.

성경 역본 논쟁은 확실히 창조-진화 논쟁 바닥과 비슷한 양상이다. 원숭이와 사람 사이의 중간 화석이 없는 것만큼이나 원어· 원문의 막연한 환상도 허상일 뿐 그 실체가 존재하지 않는다.
또한, 창조에 대한 믿음이 무너지면 그 뒤의 예수님의 동정녀 탄생이나 부활, 재림 같은 것도 결코 믿을 수 없게 되듯, 성경에 대한 믿음이 무너지면 성경에 기록된 그 어떤 말씀도 믿을 수 없게 된다.

KJV 신자의 믿음은 이런 성경 구절 패러디로도 요약될 것 같다. 매우 적절한 비유이다.

“나를 본 자는 아버지를 보았거늘 어찌 네가 말하기를, 우리에게 아버지를 보여 주소서, 하느냐?” (요 14:9)
킹 제임스 성경을 본 자는 이미 original(원어+원문)을 보았거늘, 어찌 네가 말하기를 우리에게 original을 보여 주소서, 하느냐?


한글-한자 논쟁으로 비유하자면, 리플링거 박사는 수천 년 전의 한중일 한문 고전을 죄다 술술 읽고 해석해 내는 한문 전문가뻘 된다. 그럼에도 불구하고 국민 계몽을 위한 한글 전용을 적극 지지하고 한자 기득권 속에 숨은 위선자 헛똑똑이들의 정체를 폭로하는 의로운 일을 하는 셈이다.

기독교의 하나님은 언어 가지고 말장난을 하시지 않는다. 언어 장벽은 인간의 동반 타락을 막기 위해 허락하신 것일 뿐, 이것이 성경 말씀에 대한 접근성 제약을 의도한 것은 결코 아니라는 뜻이다. 아무쪼록 리플링거의 책의 번역문이 어서 출판되어 나와서 국내의 많은 크리스천들에게 성경에 대한 바른 믿음을 세우는 데 도움이 되면 좋겠다.

Posted by 사무엘

2013/10/02 08:37 2013/10/02 08:37
, , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/883

제헌 국회 기도문

대한민국이 기도로 시작한 나라라는 걸 정치적으로 좀 우파 성향인 크리스천이라면 어렴풋이 들어서 알 것이다.
본인은 수 년 전, 우리나라 초대 겸 건국 대통령인 이 승만 박사의 옛 저서 Japan Inside Out의 번역판인 <일본 그 가면의 실체>가 국내에 출간됐을 때, 그 책을 통해서 저 기도문을 처음으로 접했다.

잠시 역사 배경을 설명하자면 이렇다.
대한민국의 제1대 국회인 대한민국 제헌국회는 대한민국 헌법을 첫 제정한 국회이며 1948년 5월 31일 구성되고 1950년 5월 30일까지 활동하였다. 대한민국에서 국민의 직접 투표로 선출된 국회의원을 구성원으로 한 최초의 국회이다. (한국어 위키백과 설명)

그 당시는 우리나라에 국회 의사당 건물이 따로 있는 게 아니었기 때문에, 서울 광화문 근처의 옛 중앙청 홀--김 영삼 정권 때 헐린 그 튼튼한 건물--에서 국회의원들이 모였다.
국회의원들은 정확히 세 주 전에 열린 5· 10 총선거 때 선출된 사람들이다. 남한만 단독으로 총선거를 해 버려서 남북 분단이 고착화되었다는 우려도 받았으나, 북한은 어차피 그 전에 이미 조선로동당 대회를 자체적으로 치렀으니 통일은 애초에 물 건너간 상황이었다.

자, 그래서 1948년 5월 31일 아침 10시경이 되었다.

* 임시 의장 이 승만

대한민국 독립 민주국 제 1차 회의를 여기서 열게 된 것을 우리가 하나님에게 감사해야 할 것입니다. 종교· 사상 무엇을 가지고 있든지 누구나 오늘을 당해 가지고 사람의 힘으로만 된 것이라고 우리가 자랑할 수 없을 것입니다. 그러므로 하나님에게 감사를 드리지 않을 수 없습니다. 나는 먼저 우리가 다 성심으로 일어서서 하나님에게 감사를 드릴 터인데 이 윤영 의원 나오셔서 간단한 말씀으로 하나님에게 기도를 올려 주시기를 바랍니다.

* 이 윤영 의원 기도 (일동 기립)

이 우주와 만물을 창조하시고 인간의 역사를 섭리하시는 하나님이시여, 이 민족을 돌아보시고 이 땅에 축복하셔서 감사에 넘치는 오늘이 있게 하심을 주님께 저희들은 성심으로 감사하나이다. 오랜 시일 동안 이 민족의 고통과 호소를 들으시사 정의의 칼을 빼서 일제의 폭력을 굽히시사 하나님은 이제 세계만방의 양심을 움직이시고 또한 우리 민족의 염원을 들으심으로 이 기쁜 역사적 환희의 날을 이 시간에 우리에게 오게 하심은 하나님의 섭리가 세계만방에 성시하신 것으로 저희들은 믿나이다.

하나님이시여, 이로부터 남북이 둘로 갈리어진 이 민족의 어려운 고통과 수치를 풀어 주시고 우리 민족 우리 동포가 손을 같이 잡고 웃으며 노래 부르는 날이 우리 앞에 속히 오기를 기도하나이다. 하나님이시여 원치 아니한 민생의 도탄은 길면 길수록 이 땅에 악마의 권세가 확대되나, 하나님의 거룩하신 영광은 이 땅에 오지 않을 수밖에 없을 줄 저희들은 생각하나이다.

원컨대 우리 조선 독립과 함께 남북통일을 주시옵고 또한 우리 민생의 복락과 아울러 세계평화를 허락하여 주시옵소서. 거룩하신 하나님의 뜻에 의지하여 저희들은 성스럽게 택함을 입어가지고 글자 그대로 민족의 대표가 되었습니다. 그러하오나 우리들의 책임이 중차대한 것을 저희들은 느끼고 우리 자신이 진실로 무력한 것을 생각할 때 지와 인과 용과 모든 덕의 근원이 되시는 하나님 앞에 이러한 요소를 저희들이 간구하나이다.

이제 이로부터 국회가 성립이 되어서, 우리 민족의 염원이 되는, 모든 세계만방이 주시하고 기다리는 우리의 모든 문제가 원만히 해결되며 또한 이로부터 우리의 완전 자주독립이 이 땅에 오며 자손만대에 빛나고 푸르른 역사를, 저희들이 정하는 이 사업을 완수하게 하여 주시옵소서. 하나님, 이 회의를 사회하시는 의장으로부터 모든 우리 의원 일동에게 건강을 주시옵고 또한 이겨서 양심의 정의와 위신을 가지고 이 업무를 완수하게 도와 주시옵기를 기도하나이다.

역사의 첫걸음을 걷는 오늘의 환희와 감격에 넘치는 이 민족적 기쁨을 다 하나님에게 영광과 감사를 올리나이다. 이 모든 말씀을 주 예수 그리스도의 이름을 받들어 기도하나이다. 아멘.

이 기도문은 이 윤영 목사가 원고를 미리 써 와서 읽은 게 아니라는 걸 유의하자.
이 승만 의장이 현장에서 갑작스럽게 즉흥으로 요청을 해서 기도가 시작된 것이다. 즉, 이건 애드립이다. 텍스트는 속기사가 받아 적어서 만들어졌다.
이런 건 좀 공신력 있는 사이트에 문헌으로 좀 기재되어 있어야 할 텐데 국회 홈페이지나 위키문헌엔 없나?
<날개셋> 타자연습에는 저 글이 연습글로 수록되어 있다.

뭔가, 아폴로 8호 승무원의 창세기 낭독 사건 같은 걸 보는 느낌이지 않은가.
이런 거 읽을 때만큼은 제발 후천년주의니 정교일치니 그딴 삐딱한 시선은 잠시 집어치우고, 일단 감격하고 감사할 줄 좀 알자.
누군 뭐 국가나 정치와 관련된 성경적 입장을 모르는 줄 아나..?

한쪽에서는 “정의의 칼을 빼서 일제의 폭력을 굽히시사 ... 오늘 같은 날을 있게 하신 주님께 저희들은 성심으로 감사하나이다. 우리 민족 우리 동포가 손을 같이 잡고 웃으며 노래 부르는 날이 속히 오기를 축원하나이다. 이 모든 말씀을 주 예수 그리스도의 이름을 받들어 기도하나이다” 이러면서 나라를 세웠다.

이 국회를 통해 1948년 7월 17일에 대한민국의 첫 헌법이 공표되었다. 그래서 지금은 공휴일에서 빠진 국경일 제헌절이 이 날로 제정된 것이다.

그 반면, 반대편에서 비슷한 시기에 벌인 북조선 로동당 2차 대회(1948년 3월 27일~30일)는 분위기가 아마 어땠을까? -_-;;
그때는 워낙 초창기이기 때문에 북한도 내부에 여러 파당이 있었으며 노골적인 김씨 우상화는 지금보다 덜했었다.
하지만 이미 인간성 말살이 시작되고 반대파 '반동'들을 비판하고 숙청하고, “동무들, 인민 해방을 위한 과업을 어서 완수하시오” “소련으로부터 지원 받아서 미 제국주의 남조선 원쑤들 다 쓸어버립시다” 이런 권모술수와 추악한 음모가 진행 중이었을 것이다.

덧붙이자면 북한이 태극기 대신 자체적인 인공기를 제정해서 쓴 게 1948년 초쯤부터이고, 애국가도 자기네 애국가를 1947년 하반기부터 채택했으니, 이미 남북 영구 분단 고착은 그 무렵부터 예고된 귀결이었다. 쟤들은 소련의 군사· 경제력을 등에 업고 시민들은 공산주의 지상락원으로 선동하고, 서로 비판하고 감시하고 못 믿게 만들고 팀웍을 해체시키는 방법으로 권력을 꽉 장악해 갔을 것이다.

난 이걸 생각하면 소름이 확 돋는다.
어디 누가 누굴 보고 대한민국이 처음부터 더럽게 시작되고 태어나지 말았어야 할 나라라고 정체성을 부정하고 앉았는가? 괘씸한 놈들!

난 우리나라가 건국 이래로 예수 믿고 교회 댕기고 예배드리고 심지어 거리설교까지 하는 데 아무 지장이 없었던 것 하나만으로도.. 우리나라의 자유는 정말 넘치도록 잘 보장되어 있었고, 극소수 있었던 부조리와 제약은 종북 불순분자 빨갱이들 빼고는 하나도 걸릴 게 없었다는 생각이 변함없다.

이 승만 전대통령은 대한민국의 초대 대통령으로, 건국 대통령으로 충분히 예우받고 존경받아야 한다. 그가 대통령으로서 잘못한 것들은 잘한 것에 비하면 정말 사소하고 불가피하고 최소한 악의는 없었던 것들이다. 특히 말도 안 되는 허무맹랑한 친일파 드립은 내 눈에 띄면 절대로 그냥 넘어가지 않을 것이다. 다 조직적으로 반박해 줄 것이며, 앞으로 기회가 되면 이 주제만으로 또 블로그에다 글을 쓸 기회가 있을 것이다.

아무에게나 정말 양심에, 가슴에 손을 얹고 솔직하게 물어 보고 싶다. 종북 빨갱이들조차 적으로 안 보이고 혁명가 투사로 보일 정도로 우리나라가 아직까지 그렇게도 엿같고 개판이고 다 갈아엎어야 하고, 국민들에게 해 준 게 없는 나라인가?

Posted by 사무엘

2013/09/29 08:36 2013/09/29 08:36
, , , , ,
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/882

지뢰찾기 연구

요즘 팔자에도 없던 지뢰찾기에 살짝 재미가 붙었다.
본인은 비슷한 학력· 경력으로 IT 업계에 종사하는 여느 사람들과는 달리, 머리 싸움을 즐기는 스타일이 전혀 아니었으며 복잡한 퍼즐 게임 따위와도 담을 쌓고 지내는 편이었다. 이런 점에서 본인은 완전 퍼즐 게임 매니아인 T모 님과는 성향이 다르다.

그래도 지뢰찾기 정도면 요령을 알고 나니까 은근히 재미있다. 초보 레벨로는(9*9, 지뢰 10개) 40초~1분 남짓한 시간 동안 대략 60~70%대의 승률로 깨겠다. 처음엔 초보 레벨조차도 5분이 넘게 끙끙대기도 했으나, 마치 경부선 서울-부산 열차의 운행 시간이 17시간에서 6시간대~4시간대로 줄어들듯이 시간이 단축되었다.

사용자 삽입 이미지
지뢰찾기는 소련에서 개발된 테트리스와 더불어 시간 죽이기용으로 상당히 적절한 컴퓨터용 퍼즐인 거 같다. 여느 보드 게임과는 달리, 물건이 먼저 존재하다가 컴퓨터로 옮겨진 게 아니라 처음부터 컴퓨터용으로 만들어진 게임이라는 차이가 있다.

맥북의 터치패드 격인 트랙패드로는 도저히 게임을 할 수 없는 듯했다.
두 손가락을 동시에 누르거나 패드 우측 하단을 지그시 누르면 우클릭이 되긴 하는데, 이게 생각보다 정확하게 인식되지가 않는 듯하기 때문이었다.

지뢰가 있다는 깃발만 꽂으려고 우클릭을 했는데, 그게 좌클릭으로 인식되어 지뢰를 밟고 장렬히 죽는 참사가 한두 번 발생하는 게 아니어서 말이다. 단, Windows Vista 이후부터 새로 개발된 지뢰찾기는 Shift+클릭으로 우클릭, 더블클릭으로 좌우 클릭도 돼서 조작이 훨씬 더 편해졌다.

키보드로는 Space는 셀 개봉(좌클릭)이고, Shift+Space가 깃발(우클릭)이다.
그런데 이번엔 깃발이 꽂힌 것을 제외한 모든 인접 셀들을 한꺼번에 개봉하는 건 키보드로 어떻게 하는지 모르겠다. 게임에 익숙해지고 나면 셀 개봉은 하나씩 클릭하는 것보다 저렇게 개봉을 훨씬 더 즐겨 하게 되는데 말이다.

지뢰찾기라는 게임은 풀이 순서를 논리적으로 명확하게 유추 가능한 상황이 대부분이지만, 가끔은 주어진 정보만으로는 정확한 지뢰 배치를 알 수 없어서 찍기(guessing)를 해야 하는 경우도 있다. 지뢰가 정확하게 어떤 조건으로 배치되어 있을 때 그런 상황이 생기는지는 잘 모르겠다.

숫자 정보로부터 유추 가능한 지뢰 배치 가짓수는 기본적으로 폭발적으로 증가할 수 있으며, 어떻게 될 수 있는지 백트래킹으로 일일이 하나하나 때려박아 넣으며 추적을 하는 수밖에 없다. 뭔가 네모네모 로직을 푸는 것 같은 느낌이 들기도 한다. 이 때문인지 이 문제는 전산학적으로 봤을 때 NP 완전 문제라는 것까지 증명되었다.

그리고 찍기가 필요 없는 명확한 상황일 때 사람이 지뢰를 찾는 절차는 의외로 아주 명료하고 기계적이다.
딱 이 정도 영역이 개봉되고 인접 셀의 지뢰 정보가 이렇게 주어졌을 때, '명백한 해법' 하나만 동원해서라도 컴퓨터가 게임 진행을 충분히 도와 줄 수 있겠다는 생각이 들었다.

그래서, 막간을 이용해 지뢰찾기를 푸는 프로그램을 짜 봤다.
초-중급 수준의 간단한 클래스 설계와 알고리즘 구현이 동원되니 심심풀이 땅콩 코딩용으로 꽤 적절한 거 같다!
'명백한 해법'을 적용할 수 없어서 '찍기'를 해야 할 때, 지뢰가 있을 만한 위치를 가장 유력하게 유추하는 것 정도까지 구현해야 비로소 중급-고급 사이를 넘볼 수 있지 싶다.

대략의 코딩 내역은 이러하다.
지뢰 답을 알고 있는 MineSource 클래스(각 칸마다 지뢰 여부를 실제로 담고 있는 2차원 배열),
그리고 그 MineSource에다가 쿼리를 해 가며 1~8 숫자와 자기가 찾아낸 지뢰 위치 정보만을 알고 있는 MineSolver 클래스를 만들었다.
이들은 다 2차원 배열과 배열의 크기는 공통 정보로 갖고 있으므로 MapData라는 동일 기반 클래스를 설정했다.

MineSource는 특정 위치 x,y에 대한 쿼리가 온 경우, MineSolver에다가 인접 셀들의 지뢰 개수를 써 준다. 인접 셀에 지뢰가 하나도 없다면 여느 지뢰찾기 프로그램이 그러는 것처럼 인접 셀 8개도 한꺼번에 개봉하면서 flood fill을 한다.
곧바로 지뢰를 찍었다면 당연히 곧바로 게임 오버라고 알려 준다. 그리고 요즘 지뢰찾기 게임 구현체들이 그런 것처럼, 첫 턴에서는 절대로 지뢰를 찍는 일이 없게 내부 보정을 하는 것도 이 클래스에서 하는 일이다.

지뢰찾기의 '명백한 해법'은 딱 두 가지이다.

  1. 열리지 않은(지뢰 마크가 있는 놈 포함) 인접 셀의 개수와 자기 숫자가 '같은' 셀은 주변 미개봉 셀이 다 지뢰임이 100% 확실하므로 그것들을 전부 지뢰 마크(깃발)로 표시한다.
  2. 깃발이 꽂힌 주변 셀의 개수와 자기 숫자가 같은 셀의 경우, 지뢰 마크가 없는 나머지 열리지 않은 인접 셀은 지뢰가 아닌 게 100% 확실하다. 따라서 전부 개봉한다.
  3. (위의 명백한 해법만으로 개봉할 만한 셀이 존재하지 않는 건 운이 나쁜 케이스다. 패턴을 기반으로 랜덤 추측을 해야 하는데, 이건 일단 보류.)

텍스트 모드에서 자기 스스로 무작위하게 지뢰밭을 만들고 지뢰찾기를 풀기도 하는 자문자답 프로그램을 만드니, 200줄이 좀 안 되는 코드가 완성되었다.
이 프로그램은 인접 셀에 대해서 뭔가 조건을 만족하는 셀의 개수를 세거나, (getCount) 일괄적으로 동일한 조치를 취하는(doAction) 패턴이 많다.

이걸 그냥 for(j=y-1; j<=y+1; j++) for(i=x-1; i<=x+1; i++)이라는 2중 for문만으로 돌리기에는 i나 j가 boundary 밖인 경우도 고려해야 하고, (i,j)가 (x,y)와 같은 위치인 경우도 피해 가야 하기 때문에 loop 자체가 생각보다 복잡하다.
그러니, 그 loop 자체만 하나만 짜 놓고 loop 안에서 하는 일을 그때 그때 달리 지정하는 것은 템플릿-람다로 깔끔하게 설계했다.

다음은 프로그램의 간단한 실행 결과이다.

after the first turn:
+ + 1 . . . . . .
+ + 1 . 1 1 1 . .
+ + 1 . 1 + 2 1 .
+ + 1 . 1 2 + 1 .
1 1 1 . . 1 + 2 1
. . . . 1 1 + + +
. . . . 1 + + + +
. 1 1 2 2 + + + +
. 1 + + + + + + +

(중간 과정 생략)

picking 7 9
@ @ 1 . . . . . .
2 2 1 . 1 1 1 . .
1 1 1 . 1 @ 2 1 .
1 @ 1 . 1 2 @ 1 .
1 1 1 . . 1 2 2 1
. . . . 1 1 3 @ 2
. . . . 1 @ 3 @ 2
. 1 1 2 2 2 2 1 1
. 1 @ 2 @ 1 . . .
You Won!


이 정도 초보적인 지뢰 찾기 풀이 프로그램은 이미 다 개발되고도 남았으니,
유튜브를 뒤지면 신의 경지 수준의 속도를 자랑하는 지뢰찾기 TAS (매크로 프로그램 내지 역공학을 동원한 게임 스피드런) 동영상들이 나돌고 있다.

여담이다만, 지뢰찾기를 하다가 지뢰를 밟아서 게임 오버가 될 때 본인은 깜짝 깜짝 잘 놀란다. =_= 마치 옛날에 페르시아의 왕자를 하는데 타이밍을 잘못 잡아서 왕자가 쇠톱날(chopper)에 두 동강 나서 죽는 것 같은 그런 느낌이다.

Posted by 사무엘

2013/09/26 08:32 2013/09/26 08:32
, , , ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/881

세계의 국가(national anthem)들

한 나라의 상징으로는 깃발(국기), 꽃(국화) 등과 더불어 노래(국가)가 있다.
난 우리나라의 여러 상징들이 전반적으로 개성 있고 잘 만들어졌다고 생각한다. 고유 문자인 한글은 두 말할 나위도 없고, 소나무, 태권도, 무궁화 다 좋다. 국기인 태극기도 적당한 상징성과 복잡도로 잘 만들었다.

다만, 그런 것들에 비해 상대적으로 '덜' 좋아하는 상징은 국가인 애국가이다. 다소 밋밋한 가사, 그리고 시작 부분의 너무 어색한 박자 때문이다(갖춘마디에다가 못갖춘마디 스타일의 박자를 얹음). 뭐, 덜 좋아한다는 거지, 아주 싫다는 뜻은 아니지만.

1. 동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세
2. 남산 위의 저 소나무 철갑을 두른 듯 바람 서리 불변함은 우리 기상일세
3. 가을 하늘 공활한데 높고 구름 없이 밝은 달은 우리 가슴 일편단심일세
4. 이 기상과 이 맘으로 충성을 다하여 괴로우나 즐거우나 나라 사랑하세

후렴) 무궁화 삼천리 화려강산 대한 사람 대한으로 길이 보전하세


난 개인적으로 1절과 4절은 모두 외우고 있고, 2절과 3절은 첫 단의 가사만 기억하고 있었다. 군대 훈련소에 있던 동안은 각 절을 매일 돌아가면서라도 훈련병들에게 애국가 가사를 4절까지 다 외우게 했던 것 같다.

그럼, 대한민국 말고 다른 나라들의 국가는 어떨까?
내가 멜로디를 완전히 알고 있는 외국 국가로는 미국, 중국, 영국, 독일, 그리고 북한이 있다.
교회 다니시는 분들은 영국과 독일의 국가 멜로디는 이미 자동으로 숙지하고 계실 것이다. 찬송가에 동일 멜로디의 찬양이 수록돼 있기 때문이다. <피난처 있으니>와 <시온 성과 같은 교회>.
하긴, 우리나라에서도 한때는 <천부여 의지 없어서>(혹은 작별의 노래) 멜로디에다가 애국가 가사를 끼워서 부른 적이 있었다.

중국의 국가는 영락없는 행진곡 군가 스타일이어서 호전적이고 씩씩한 느낌이다.
중국 국가는 '칠라이'(일어나라), '치안찐'(전진) 같은 단어가 반복해서 들린다. "앞으로 용진 또 용진" 이러는 우리나라 <육군가>와 비슷한 느낌을 준다. 가사의 주제는 "자, 노예로 살기 원치 않는 인민들이여, 함께 일어나 적들을 무찌르고 새 세상을 건설하자. 빠샤!" 정도?

노래를 부를 때는 성조를 전혀 표현할 수가 없어진다. 그럼 중국어를 알아듣는 데 어려움이 생기지는 않나 모르겠는데, 하지만 의외로 문맥으로 별다른 어려움 없이 식별이 된다고 한다. 그런 식으로 따지자면 사실 한국어도 완전 말도 안 되는 모호성이 적지 않기도 하고 말이다(소년/소녀, 그년/그녀, 내/네 등).

미국의 국가는 가사가 전투 장면을 묘사하고 있지만 멜로디는 군가풍이 아니며 오히려 3박자 계통이다. 그리고 가사 중에 국기인 성조기에 대한 묘사가 있는 게 특징이다. "그 치열한 전장에서도 우리의 성조기는 당당히 펄럭이고 있었노라."
가사 끝부분에 나오는 "자유의 땅, 용사의 고향"이라는 표현은 아메리카 대륙에 대한 미국인들의 자부심을 짐작케 한다.

독일의 국가는 "도이칠란트 도이칠란트, 위버 알레스 위버 알레스 인 데르 벨트"(우리 독일이 세계 킹왕짱)라고 시작하는 첫부분이 인상적이다. 가사의 나머지 부분도 전투적인 요소는 별로 없이 그냥 자기 나라 찬가이다.

영국의 국가 <God Save the Queen>은 군주인 (여)왕에 대한 축복송이라고 생각하면 되겠다. 찬송가뿐만 아니라 Noteworthy Composer 악보 프로그램에도 예제 데이터로 곡이 통째로 실려 있다.

다음으로, 북한의 국가는 제목이 남한과 동일한 <애국가>이다. 김씨 부자에 대한 우상화가 지금처럼 극심해지기 전에 미리 만들어져서 그런지 노래 자체는 의외로 전투적이거나 위수김동을 전파하는 내용이 없다. 그냥 평범한 조국 찬가 스타일이고, 어찌 보면 남한의 애국가보다 퀄리티가 더 좋게 느껴질 수도 있다.
하지만 실질적으로 북한 내부에서 주요 행사 때는 애국가보다 별도의 장군님 찬가를 더 즐겨 부른다고 하니 '역시나'이다. 북한 애국가에 대한 자세한 묘사는 국가보안법에 걸릴 수 있으니 더는 하지 않겠다.

이스라엘의 국가는 역시 이스라엘 아니랄까봐, 국가가 웬 단조라는 것 정도만 기억한다. (찬송가 중에 <여호와 하나님>이 이스라엘 민요풍의 단조)

끝으로, 일본의 국가는 <기미가요>인데.. 지극히 일본스럽다. 일본 사람이 자기 내면을 잘 표현하지 않고 말을 모호하게 하는 걸 즐기고, 헌법조차 덴노의 정체성에 대해서 아주 모호한 문장으로 시작하듯...
국가도 마찬가지다. "임의 대(代)는 1000대까지.. 8000대째에 작은 조약돌이 바위가 되어 이끼가 낄 때까지.."라는 너무나 짧고 의미도 밍숭생숭하기 그지없는 가사이다. 세계에서 가장 짧은 국가라나? 멜로디의 음계 또한 전통적인 서양 음악 스타일을 떠올렸다가는 놀라게 된다.

모든 일본인들이 이런 기미가요를 국가로서 좋아하는 것 역시 아니라고 한다. 똑같은 군주 찬가여도 대놓고 신을 거론하며 마음껏 복을 비는 영국 국가하고는 스타일이 너무 다르다.
가사 내용에 대해 또 딴지를 걸자면, 돌멩이는 무슨 눈덩이나 흙덩이도 아닌데, 긴 세월이 흐르면 커지기보다는 닳고 쪼개지지 않나 싶기도 하다.

기미가요는 가사 자체는 너무 추상적이다 보니 별로 문제될 게 없으나, 역시 일제 군국주의와 함께 강제로 보급되고 퍼진 이력이 있다 보니, 한국처럼 일제의 피식민지 경험이 있는 국가에서는 좋은 평판을 못 받고 있는 노래이다.

다른 나라들은 그렇다 치고 한중일 CJK만 살펴보더라도, 국가가 삼국이 서로 극과 극으로 다름을 알 수 있다.
세계의 국가들을 군가/전투형, 군주 찬가형, 국가 찬가형 등으로 분류할 수도 있을 것 같다.

Posted by 사무엘

2013/09/23 08:25 2013/09/23 08:25
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/880

간단한 인트린직 이야기

요즘 컴파일러에는 인트린직(intrinsic)이라고 정의된 내장 함수들의 집합이 있다. 그래서 그런 함수를 호출한 것은 실제 함수 호출이 아니라 특정 기계어 코드로 곧장 치환된다. 함수의 몸체가 직접 삽입된다는 점에서는 함수 인라이닝과 비슷하지만, 인트린직은 그 몸체가 컴파일러에 의해 내장되어 있으니 개념과 용도가 그것과는 살짝 다르다.

인트린직은 굳이 인라인 어셈블리 같은 거창한 문법 없이 간단한 C 함수 호출 스타일로 특정 기계어 인스트럭션을 곧장 집어넣거나 컴파일러의 확장 기능을 사용하기 위한 목적이 강하다. #pragma가 특수한 의미를 지닌 지시를 내리기만 하는 전처리기로 비실행문이라면, 인트린직은 실행문이다.

또한, 기존의 표준 C 함수가 인트린직 형태로 몰래 처리되기도 한다. memset, strcpy처럼 간단한 메모리 조작은 컴파일러가 아예 직통 대입 코드를 집어넣는 식으로 최적화를 하기도 하며, 각종 수학 함수들도 FPU 명령 하나로 곧장 치환되는 게 보통이다. 가령 제곱근을 구하는 sqrt함수는 곧바로 fsqrt 인스트럭션으로 말이다.

C 라이브러리 DLL인 msvcr*.dll은 여전히 수학 함수 심벌들을 제공한다. 그러나 요즘 컴파일러가 수학 연산을 인트린직 대신 일일이 그런 함수 호출 형태로 곧이곧대로 사용하는 경우란, 수학 함수들을 함수 포인터 형태로 접근해야 할 때밖에 없다.

비주얼 C++이 제공하는 여러 인트린직 함수 중에는 '일을 하지 않음'(no operation)을 의미하는 __noop이라는 함수가 있다. x86의 nop 인스트럭션(코드 바이트 0x90)과 비슷한 발상인데, nop를 생성하기라도 하는 것도 아니다. 컴파일러는 파싱만 해 주지 코드 생성은 안 하고 넘긴다. 파이썬으로 치면 pass와 비슷한 물건이다.

파이썬은 세미콜론 같은 구분자도 없고 공백 들여쓰기가 유효한 의미를 갖기 때문에 empty statement를 표현하려면 pass 같은 별도의 문법이 반드시 필요하다. 그러나 C/C++은 ; 하나만 찍어 줌으로써 empty statement쯤이야 얼마든지 만들 수 있는데 굳이 저런 잉여로운 인트린직은 왜 필요한 걸까?

__noop의 주 용도는, 가변 인자를 받는 디버그 로그를 찍는 함수의 컴파일 여부를 제어하는 것이다.

#ifdef _DEBUG
    #define WRITE_LOG   WriteLog
#else
    #define WRITE_LOG   __noop
#endif

WRITE_LOG("Start operation");
WRITE_LOG("Operation ended with code %d", nErrorCode);

함수가 가변 인자가 아니라면, WRITE_LOG 자체를 매크로 상수가 아닌 매크로 함수로 선언하면 된다.

#ifdef _DEBUG
    #define WRITE_LOG1(msg,a1)  WriteLog(msg,a1)
#else
    #define WRITE_LOG1(msg,a1)  0
#endif

이렇게 해 주면 디버그가 아닌 릴리즈 빌드에서는 WriteLog가 호출되지 않을 뿐더러, 매개변수들의 값 평가도 전혀 발생하지 않게 된다.
그러나 매크로 함수는 가변 인자를 받을 수 없기 때문에 임의의 개수의 인자를 모두 커버하려면 결국 함수 이름 자체만 치환하는 매크로 상수를 써야 한다. 매크로 상수는 함수의 호출만 없앨 수 있지 함수로 전달되는 매개변수들의 값 평가를 없앨 수는 없다. 뭐, 상수들의 나열이야 컴파일러의 최적화 과정에서 제거되겠지만 side effect가 남는 함수 호출은 어떡하고 말이다.

이런 이유로 인해 가변인자를 받는 디버그 함수를 제어하는 매크로는 범용적인 버전뿐만 아니라 매개변수 고정 버전도 같이 딸려 나오는 게 관행이었다. 대표적인 게 MFC의 TRACE 매크로이다. TRACE0~TRACE3도 있다. 한번 함수를 호출할 때 전달되는 매개변수의 개수가 런타임 때 매번 바뀌는 것도 아니니, 가능하면 고정 버전을 쓰는 게 프로그래밍 언어의 관점에서 더 안전했기 때문이다.

그런데 비주얼 C++의 __noop은, 하는 일은 없으면서 0개부터 n개까지 아무 개수로 그 어떤 type의 인자를 넘겨줘도 되는 훌륭한 페이크 함수이다. 그래서 매크로 상수를 이용해서 그 어떤 함수도 __noop로 치환하면 그 함수의 호출은 깔끔하게 무시되고 코드가 생성되지 않는다.

게다가 코드는 생성되지 않지만 컴파일러가 각 토큰에 대한 구문 분석은 해 준다는 점에서 __noop은 매크로 상수뿐만 아니라 매크로 함수보다도 더 우월하다.
WRITE_LOG1에다가 아예 얼토당토 않은 선언되지 않은 변수를 집어넣을 경우, 이것을 그냥 0으로만 치환해 버리는 코드는 디버그 버전에서만 에러가 발생하고 릴리즈 버전은 그냥 넘어간다.

그러나 __noop으로 치환하면 효과는 0 치환과 동일하면서 릴리즈 버전에서도 컴파일 에러가 뜬다. 그러니 더욱 좋다.
이 인트린직은 #pragma once만큼이나, 그야말로 기존 C/C++ 문법만으로는 뭔가 2% 부족한 면모가 있는 걸 채워 준 물건이 아닐 수 없다. 컴파일러 개발사들이 괜히 비표준 꼼수를 집어넣는 게 아니다. 그 꼼수가 정말 타당하다고 여겨지면 다음 표준 때 정식으로 반영까지 될 테고.

아무 일도 안 하는 null instruction은 코드 바이트도 0으로 하는 게 직관적이지 않나 싶은데..
아까도 얘기했듯이 x86은 의도적으로 쉽게 떠오르지 않는 값에다 그 명령을 할당했다.
크기 최적화를 하지 않고 프로그램을 빌드하는 경우(디버그 또는 속도 최적화), 비주얼 C++은 machine word align을 맞추거나 edit and continue용 공간을 확보해 두기 위해 코드 바이트를 약간 듬성듬성하게 배치하는데, 과거의 6.0은 그 빈 틈에 nop(0x90)를 집어넣었다.

그러나 언제부턴가 닷넷부터는 그 버퍼 코드가 int 3(0xCC)으로 바뀌었다.
정상적인 경우라면 거기는 도달해서는 안 되는 곳인데, 그냥 아무 일 없이 nop로 넘어가는 게 아니라 breakpoint가 걸리게 보안을 강화한 게 아닌가 싶다.

말이 나왔으니 말인데, int 3을 집어넣어 주는 인트린직도 응당 존재한다. 바로 __debugbreak 함수이다. 이건 사실 Windows API에도 DebugBreak()로 있기도 하고 말이다.
이걸 쓰면 비주얼 C++ IDE에서 F9를 누른 것과 동일한 효과를 낼 수 있다. 디버거를 붙여서 실행할 경우, 그 지점에서 프로그램의 실행이 멈춘다.

Posted by 사무엘

2013/09/20 08:30 2013/09/20 08:30
, , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/879

지금으로부터 수십 년 전에는 동네마다 컴퓨터 학원이 있었고, 꼬꼬마가 프로그래밍을 공부하겠다고 하면 으레 GWBASIC부터 시작하곤 했다. 베이직은 16비트 MS-DOS뿐만 아니라 각종 가정용 8비트 컴퓨터에도 특유의 인터프리터 환경이 내장되어 있기도 해서 접하기가 한결 쉬웠다.

그때와는 달리 오늘날의 컴퓨터 교육은 이미 만들어진 소프트웨어들을 활용만 하는 실무에만 치우친 편이다.
지금 컴퓨터 프로그래밍을 처음부터 공부하고 싶다면 무엇부터 시작하는 게 좋을까?
이 질문에 대한 답변은 그 사람이 무슨 프로그램을 작성하고 컴퓨터로 무엇을 하고 싶은지 목적에 따라 크게 달라진다.
이 글은 나의 지극히 좁은 편견만을 반영하고 있으므로, 당연히 프로그래머마다 생각이나 견해가 다를 수 있다.

1. 비전문가/비전공자로서 그냥 최소한의 시간 투자로 개인적인 컴퓨터 활용도만 높이고 싶다면(고급 계산기 + 기초 알고리즘 실습 + 파일 자동 조작 + 매크로/자동화 도구 등)

개인적으로 파이썬을 추천한다. 복잡한 자료형을 다루기가 쉬워서 여타 언어들에 비해 짧은 코드만으로 복잡한 일을 한번에 끝낼 수 있다. 방대한 크기의 파일을 읽어서 내가 원하는 처리를 한 뒤 출력을 뱉어내는 수십 줄 남짓한 프로그램만 짤 줄 알아도 인생이 굉장히 편해질 수 있다.
좀 수학 덕후 기질이 있다면, 함수형 프로그래밍 언어를 건드려 봐도 될 듯.

2. 1보다는 좀 더 나아가서 가성비가 뛰어난 개발 환경에서 최소한의 GUI까지라도 만들어 보고 싶으면

Windows 플랫폼 한정으로 C#급 언어가 가장 좋겠다.

3. 웹브라우저에서 어지간한 애니메이션이나 프레젠테이션을 다 띄우고, 글이나 그림을 계산 결과로서 출력하고 싶으면

HTML + 자바스크립트.
요즘은 HTML이 단순히 화면에 뿌려지는 글과 그림, 하이퍼텍스트 문서일 뿐이라고 생각하는 건 큰 오산이다.
문서에다 서식을 주는 건 이제 CSS라는 방대한 별도의 규격으로 독립해 나가고, HTML은 문서 반 코드 반이다. 실시간으로 내용이 업데이트되고 화면 끝까지 스크롤됐을 때 추가로 컨텐츠를 로딩하고.. 사용자의 조작에 반응하여 그림을 뿌려 주는 등, 예전에는 ActiveX나 하다못해 플래시라도 써야 했을 컨텐츠들이 지금은 저것만으로 다 된다.

웹브라우저가 거의 플랫폼 독립적인 프로그램 구동 플랫폼처럼 바뀌었으니, 이를 활용할 줄 알면 역시 컴퓨터 활용 능력이 크게 향상될 수 있다. 웹 프로그램은 다른 언어나 런타임, IDE 같은 걸 설치할 필요조차 없이, 그냥 메모장에서 코딩 후 웹브라우저에서 곧바로 돌려보면 된다.

4. 맥 OS용 응용 프로그램이나 아이폰 앱을 개발하고 싶다면

Objective C + xcode + COCOA API 등등으로 고고씽이다. 일단 맥북을 장만해야 할 것이고 Windows와는 너무 이질적인 개발 환경 때문에 처음에 고생 많이 할 것이다.

5. 안드로이드 스마트폰용 앱을 개발하고 싶다면

자바 + 이클립스 IDE에 익숙해져야 할 것이다. Java는 요즘 스마트폰 앱 개발용 언어로 입지가 확 되살아난 듯하다. 이게 완전한 웹용 언어도 아니고(자바스크립트는 자바와 전혀 다른 언어임), 자바 애플릿이 플래시/ActiveX를 완전히 대체하는 RIA (rich internet application) 프레임워크로 자리잡은 것도 아니고, 로컬에서는 느리고 성능이 안 좋다 보니 전통적인 기계어 프로그램들에 밀려서.. 예전까지는 위상이 좀 어정쩡했기 때문이다. 로컬에서는 일부 크로스플랫폼 소프트웨어의 GUI(프런트 엔드)를 돌릴 때나 좀 쓰이곤 했다.

6. 끝으로, PC + Windows 환경에서 네이티브 코드 + standalone으로 실행되는 프로그램을 개발하고 싶다면

아래아한글이나 <날개셋> 한글 입력기나 어지간한 온라인 게임과 같은 급의 기계어 실행 파일을 만들고 싶다면..
역시나 재래식 Visual C++이나 최소한 델파이 같은 툴로 가야 한다.
개발 환경, 언어 문법과 기본 라이브러리, Windows API, 그 뒤 개발 분야에 따라 추가적인 라이브러리 공부까지 산 넘어 산이다.

오늘날 프로그램 개발 환경이 결국 로컬 + 웹 + 앱이라는 세 양상으로 구분된다고 예전에 글을 쓴 적이 있는데.. 그것과도 관계가 있다.
프로그래밍, 더 나아가 소프트웨어 개발에 관심이 있는 분이라면 이런 아이템들을 참고하면 되겠다.
그런데 정작 이런 글을 쓴 본인은 6만 빼고 나머지 분야는 여전히 너무 모른다는 게 함정..ㅎㅎ

Posted by 사무엘

2013/09/17 08:37 2013/09/17 08:37
,
Response
No Trackback , 13 Comments
RSS :
http://moogi.new21.org/tc/rss/response/878

« Previous : 1 : ... 149 : 150 : 151 : 152 : 153 : 154 : 155 : 156 : 157 : ... 230 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2026/08   »
            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:
4000678
Today:
854
Yesterday:
6203