override와 재정의, overload와 중복

류광, 2003/03/28 15:43
다 아시겠지만 override라는 것은.. 부모로부터 물려받은 것을 다르게 만든다는 개념입니다. 별로 어렵지 않은 개념으로, 객체지향의 상속성에 관련된 것이죠.

반면 overload는... 동일한 모습을 가진 어떤 것이 상황에 따라 다른 방식으로 작동하게 하는 것입니다. 이것은 객체지향의 다형성에 관련된 것이죠. 예를 들어서 + 연산자는.. 모습은 같지만 정수에 쓰일때, 문자열에 쓰일때, 부동소수점에 쓰일 때 모두 다른 방식으로 작동하죠.

저를 비롯해서 많은 사람들이 overload를 중복이라고 번역합니다. 이는 어느 정도 굳어진 것이죠. override는 아직 굳어진 용어가 없는 것 같습니다. 오버라이드, 오버라이딩 등등 발음 그대로(좀 오버를 한다면 오버롸이드..) 쓰는 경우가 더 많은 것 같더군요.

제 번역 역사 중 override가 처음 나온 책은 아마 C++ Howto였던 것 같은데요... 조금 고심을 했습니다. 두 가지 후보가 있었는데요. 하나는 '번복'이구요. 또 하나는 제목에 나온 '재정의'입니다.

번복의 장점은... 중복과 운율(!)이 맞다는 것. override와 overload, 번복과 중복... 짝이 맞죠. 의미상으로도 그리 틀리지 않고요... 부모가 정의한 메서드를 자식이 '번복'한다... 그렇죠? 그러나.. 안그래도 override와 overload를 혼동하는 사람들이 있는데, 한글 번역어까지 비슷하게 만들 필요는 없다는 점과, 또 '번복'이라는 말의 어감이 그리 좋지 않다는 점... 특히 심판들의 자질에 상당히 불만이 많은 프로축구 팬으로서 '번복' 같은 말은 정말 싫거든요...

그래서 재정의를 선택했습니다. 처음엔 어색하더라도... 자주 쓰면 머리 속에서 override와 재정의가 자연스럽게 연결될 것입니다.

-- 2001. 08. 05 15:08:40
top
TAG 번역
트랙백 1 : 의견 # + 4

hierarchical - 계통적인가, 계층적인가....

류광, 2003/03/28 15:42
hierarchical이라는 단어... 어떠한 구조를 설명할 때 자주 나오죠. 윈도우즈 탐색기의 예와 함께 나오는 경우도 많구요. 대충 말하면 트리 구조에 해당하는 말인데... 영한 사전을 보면 계급 조직의, 계급제의, 계층적인 등으로 되어 있습니다.

그러나 '계층적'이라는 말은 적어도 프로그래밍에서의 hierarchical에는 좀 맞지 않는 부분이 있습니다. 왜냐하면 layer나 level과 겹치기 때문입니다. 제가 쓰는 용어는 '계통적'입니다. 적어도 프로그래밍 분야에서 hierarchical은 대부분 어떠한 부모-자식 관계, 즉 종적인 관계에 강조된 용어입니다. 그렇다면 '계통적'이 더 적합하리라고 봅니다. '계층적'은 수평적, 횡적 관계에 적합하구요...

굳이 예를 들자면... HTTP는 OSI 일곱 계층의 '응용 계층' 프로토콜에 속하구요.. 응용 계층의 또다른 프로토콜인 FTP와는 수평적인 관계죠. 반면 계통적이라는 것은... 예를 들어 PasswordBox는 InputBox로 비롯되는 입력 대화 상자의 계통에 속한다 정도.... 수직적인 관계가 강조된 것입니다.

계층적이라는 것은 여러 개의 층들이 쌓여 있는 것, 계통적이라는 것은 하나의 조상으로부터 각각의 후손들이 뻗어나가는 것이라고 할까요.. 어쨌든 두 용어 사이의 차이는 틀림없이 존재합니다. 함께 쓸 수 있는 성질이 아니라고 생각합니다...

-- 2001. 08. 05 15:08:11
top
TAG 번역
트랙백 1 : 의견 # + 2

comment out과 loop through

류광, 2003/03/27 22:46
이번 역시 번역가 지망생이나 원서를 읽으시는 분들께 도움이 될만한...

comment out과 loop through 모두 오직 프로그래머들만 사용하는 말입니다.

comment out... comment는 주석, 각주, 참고 노트 뭐 그런 뜻에 관련된 것이구요. 기본적으로는 '뭔가 한 마디 덧붙인다', 즉 기존의 어떤 것에 뭔가를 추가한다는 의미를 내포하고 있습니다. 그런네 out은 그 반대... 빼다, 내보내다, 제외시키다 그런 뜻을 가지고 있죠. 이 두가지가 결합된 숙어는 프로그래밍에 관련된 글에서만 나타나는 것 같습니다. 뜻은 대부분 알고 계시겠죠. 번역하자면 '주석 처리하다', '주석으로 제외시키다'가 되구요. 좀 더 길게 설명하면,

"어떤 특정한 코드에 주석 표시를 추가해서(comment) 그 부분을 컴파일 또는 기타 처리로부터 제외(out)시킨다"

가 됩니다. comment out이 프로그래머만의 말이 된 것은, 다른 분야에서는 주석을 추가한다는 행위가 뭔가 처리에서 제외시키는 결과가 되는 일이 거의 없기 때문입니다. 오직 프로그래밍 언어에서만 있는 일이죠...

loop through 역시 프로그래밍 서적에만 나오는 숙어... 이와 비슷하면서 좀 더 일반적으로 쓰이는 것은 walk through입니다. 어떤 여러 개의 항목들을 차례 차례 거쳐가면서 보거나 처리하는 것을 뜻하죠.
제가 선택한 번역은... 상황에 따라 '루프로 돌려서 처리한다' 또는 '루프 안에서 훑어 나간다' 정도입니다.

loop through라는 말을 처음 쓴 사람은 아마 walk through에서 영감을 얻었을 겁니다. 게임의 세세한 공략을 walk through라고도 하죠. 어떤 시스템 또는 집합 안의 각 요소들을 하나 하나 거쳐 가는 것을 walk through라고 할 때, 프로그래밍 세계에서 그런 일을 하려면 항상 루프문이 끼어 들게 되죠. 그래서 walk에 through를 붙이듯이 loop에 through를 붙였지 않았을까요.

또하나 재미있는 것은, 일반 영어 사전에도 loop가 동사로 쓰인다고 나와 있긴 하지만 '고리로 만들다', '고리로 묶다' 정도의 뜻만 있을 뿐 프로그래밍 세계에서처럼 '반복적', '순환적'이라는 의미를 가지지는 않습니다.... loop가 '루프를 돌리다, 반복적으로 처리하다'라는 동사로 쓰이게 된 것은 명사로서의 loop에서 의미를 가져온 것으로 보입니다.

역시 한가지 교훈... 프로그래머에게는 프로그래머만의 언어 생활이 있으며, 저자들 중에는 새로운 말을 만들어 내는 것이 일종의 취미인 사람도 있다는 점... 번역은 저자와의 머리 싸움이기도 하죠...  

-- 2001. 08. 05 15:07:42
top
TAG 번역
트랙백 0 : 의견 # + 1

remote와 email

류광, 2003/03/27 22:46
이번 글은 독자보다는 번역가를 지망하시는 분들께 더 많은 도움이 될 것 같습니다.

우선 remote... 별로 어려운 단어는 아닌 것 같지만, 아주 특이한 경우를 만난 적이 있습니다. 현재 제가 가지고 있는 영어 사전이나 웹 상의 영어 사전들을 뒤져봐도 remote가 동사로 쓰인다고 되어 있는 것은 없습니다. remote는 '원격의'라는 뜻의 형용사이구요. '원격으로'라는 뜻으로, 즉 부사적으로 쓰일 수도 있습니다. 그리고
remote control의 줄임말로서의 명사로 쓰이기도 합니다. 흔히 말하는 리모콘이죠...

그러나 제가 번역한 어떤 책에서는 remote를 동사로 쓰더군요. '원격으로 조종하다', '원격으로 제어하다'라는 뜻의 타동사로 쓰이는 문장이 몇 번 있었습니다. 즉 'control remotely'라는 뜻으로 쓰이는 거죠.

여기서 한 가지 교훈은... 한국어에서와 마찬가지로, 영어 역시 컴퓨터 기술의 급속한 발전을 따라 잡느라 애를 먹고 있다는 점입니다. 새로운 용어, 단어가 생겨나는 것은 물론이구요. remote 처럼 기존 단어의 쓰임새가 변하는 일도 생기는 거죠.

이와 관련된 또 하나의 예가 email입니다. email은 원래 명사로 쓰였던 것으로 알고 있습니다. 그것도 메시징 시스템의 한 종류를 지칭하는, 아주 제한적인 용도로요. 예를 들면..

please send me a message through E-Mail system.

그런에 차츰 네트웍을 통한 메시징 시스템을 대표하는 용도로 쓰이게 되었죠.

please send a e-mail message.

나중에는 아예 '메시지' 자체를 가리키게 되었구요.

please send me a e-mail.

급기야는 동사로도 쓰입니다.

please e-mail me.

이러한 발전 과정은 e-mail이 우리의 일상 생활에 천착해 들어가는 과정을 그대로 반영하고 있죠. 특히 산업 기반이나 경제 규모에 비해 비정상적으로 인터넷이 발달한 한국에서는 더욱 극명하게 나타납니다. 위의 영어 문장을 한글 단 두 글자로 표현할 수 있습니다...

'멜줘!'


.....

번역은 재미있는 작업입니다.... 프로그래머를 꿈꾸시는 분들... '번역가'도 장래 희망 목록 끝에 올려 놓으세요...

-- 2001. 08. 05 15:07:04
top
TAG 번역
트랙백 0 : 의견 # + 1

메서드와 스레드

류광, 2003/03/27 22:45
메서드와 스레드..... 뜻 자체에 대해서는 별로 할 말이 없습니다. 그리고 현재로는 마땅한 번역어가 없습니다.

method의 경우 어떤 클래스에 속한 함수나 프로시저를 지칭하는 경우에만 '메서드'로 지칭하고 그 외의 일반적인 의미로 쓰이는 경우에는 '방법' 등의 용어를 쓰구요. thread는... 욕심 같아서는 '실행 줄기' 정도로 번역하고 싶지만 너무 오버죠...

하고 싶은 말은 발음입니다. 왜 쓰레드나 메쏘드가 아닌가 하는 거죠. 사실 메서드나 메쏘드나 정확한 발음이 아닌 것은 마찬가지입니다. th 발음이 원래 어렵죠... 발음을 기준으로 한다면 메'ㅅㄷㅓ'드라고 표기하는 것이 좀 더 정확하겠지만....

method를 메서드라고 하는 가장 기본적인 이유는... 비주얼 베이직 한글 도움말에 메서드라고 나와 있기 때문입니다. 물론 MS의 한글화 방식을 모두 찬성하는 것은 아니지만... 이전에 한글판 비베 관련 초-중급 책을 번역하는 과정에서 메서드라는 말을 선택했고, 별 문제가 없는 것 같아서 계속 쓰고 있습니다.

두 번째 이유는 국어 생활에서 된발음을 피하는 것이 좋다는 의견에 공감하기 때문입니다. 싸랑해! 보다는 사랑해!가 좋죠... 이와 관련된 한 가지... '먹거리'라는 말을 들어 보셨죠... 그런데 먹거리라는 말은 문법적으로도 옳지 않고, 된발음을 사용하게 만드는 잘못된 말이라고 합니다. '먹을거리'가 옳다고 하는군요.

스레드 역시 마찬가지 이유입니다.

한국 MS의 한글화를 보면 비판할 것도 많지만 배울 것도 많습니다. 특히 object와 개체, component와 구성요소 등등... 현실적이지는 않지만, 의미상으로는 정확하죠. 실제로 80년대 후반인가 object-oriented를 객체 지향이 아니라 개체 중심으로 번역해야 한다는 주장이 있었구요. component 역시 애초에 구성 요소라는 단어가 우선권을 잡았다면 지금은 모두가 별 거부감 없이 구성 요소라는 말을 사용하지 않았을까요....

-- 2001. 08. 05 15:06:31
top
TAG 번역
트랙백 0 : 의견 # + 0