제 사견을 말씀드리지요...
영문 컴파일러나, 한글 컴파일러나, 심지어 외계어 컴파일러나 구현은 같습니다. 프로그래밍 언어가 어떤 언어로 쓰여져 있는지, 컴파일러나 컴퓨터는 관심 없습니다.
어떤 문자라고 해도 결국은 이 안에 정의된 문자 코드, 극적으로 말해 단순한 숫자에 불과하기 때문이지요. 그렇기 때문에 규칙을 정해주고, 그 규칙대로만 입력해주면 알아먹는게 컴퓨터입니다.
영어(정확히는 알파벳이라고 해야 하겠습니다만)로 만들어진 언어를 한글로 바꾸는 것에 대해서는, 앞서 말씀드린대로 단순 치환이 있을 수 있지만, 사실 델파이나 C++, 자바같은 객체지향 언어를 보면 사용하는 키워드가 많이 잘못되어 있음을 발견할 수 있습니다. 예를 들어 virtual 같은 것을 보면, 직역하면 '가상'이겠지만, 도대체 프로그램에서 '가상'이란게 무슨 뜻입니까? virtual은 늦은 바인딩을 지시하는 키워드인데 말이죠. 그러니 여기서도 단순히 직역할 것인지, 아니면 의미에 맞게 적당히 고칠것인지에 따른 문제가 발생하겠네요...
뭐, 델파이 명령어라고 하셨는데 어떤 것인지는 정확히 모르겠습니다. 단순히 키워드만 말씀하시는 건지, 또는 VCL 같은 언어에 종속적인 라이브러리까지 몽땅인지...
그건 그렇고, 사건연결해는 RTTI와는 관련 없는 내용일겁니다.
말씀하신 RTTI를 이용하여 이미 있는 이벤트를 다른 객체의 이벤트로 연결한다고 하셨는데, 이 동작은 사실 아까도 말한 가상 함수를 이용하는 것입니다.(델파이 구현이 이떻게 되어있는지는 확실히 알 수 없지만, 결국은 같습니다.)
가상 함수란게 뭔지 알고 계실테지만 모르시는 분들을 위해서 -_-; 간단히 말해서, 어떤 객체의 함수를 실행할 때(exe를 만드는 때가 아닌) 결정하게끔 하는 것이죠.(이런 것을 늦은 바인딩이라고 합니다)
그러니까, 이벤트(사건)도 하나의 함수입니다.(프로그램은 모두 함수로만 이룰 수 있습니다. 고수준 언어에선 이러한 것을 언어적인 개념을 적용하여 조금 다르게 부르는 게 있지만, 같습니다.) 어떤 객체의 이벤트를 실행할 때 정할 수 있기 때문에, 이벤트를 바꿀 수 있는 것이죠.
그런데 창조는, 아마도 컴파일러가 아닌 인터프리터입니다. 그렇기 때문에 소스 코드는 실행 중에 분석이 되지요...(어떻게 보면 모두가 늦은 바인딩입니다) 주석까지 그대로 포함되는 것을 봐선, 아마 소스 텍스트 그대로를 넣는다고 추측하고 있는데... 실행할 때 이 것을 풀어서 인터프리팅 한다는 뜻이겠죠.
아마 그렇다면, 창조에서의 사건은 일종의 속성으로, 실행될 소스 코드의 텍스트를 담고 있다고 생각해 볼 수 있습니다. 사건이 발생하면 해당하는 텍스트를 인터프리팅 하는 것이지요. 그렇게 때문에 사건연결해는 아마도 어떤 객체의 어떤 사건 내용의 텍스트를 단순히 교체해준다...라고 생각할 수 있습니다.
남상기님께서 확실히 밝히신 건 아니지만, 아마 제 추측이 맞을 겁니다. -_-;
창조에 '사건연결해' 명령어가 있는 것으로 봐서 다음을 추측할 수 있었습니다.
1) 사건연결해가 원래의 소스 코드를 그대로 실행시키는 것을 보아, 창조의 인터프리터는 원래의 소스 코드를 그대로 실행할 수 있는 능력을 가지고 있다. 2) 그렇기 때문에, 창조는 소스 코드 구조에 별다른 변형을 주지 않고 그대로 exe로 만드는 것 같다.(아마 일종의 압축을 해서 넣는 것 같습니다.) 3) 위 가정이 맞다면, 창조로 만든 프로그램에서 100% 그대로의 소스 코드를 만들어낼 수 있다. 4) 말을 한번 더 꼬아서, 창조로 만든 프로그램에서 원래의 소스 코드를 뽑아낼 수 있다면 위 가정은 성립한다. |
|