프로그래밍 용어, 무리해서 번역하지 말고 사용합시다.
작년에 회계학을 공부할 필요가 있어서 세 달 정도 공부한 적이 있었습니다. 주변에서 다들 회계학은 내용이 너무 지루하다고 이야기를 해서 조금 걱정했는데 소소하게 재미있는 부분이 꽤 있어서 괜찮았습니다. 다만 중간중간에 이해하기 어려운 용어가 있어서 위키피디아나 회계학 용어 사전 등을 종종 참조했는데 당황스러운 일이 있었습니다. 한국어로 번역된 용어가 영어 용어보다 오히려 이해하기 어렵더군요. 저 뿐만 아니라 저와 달리 한국에서만 교육받은 사람들도 마찬가지로 한국어 회계 용어를 오히려 더 어려워한다는 점이 충격적이었습니다.
예를 들어 외상매입금(外上買入金)이라는 용어가 있습니다. 회계에서 가장 기초적인 개념 중 하나인데 저는 이 단어를 처음 봤을 때 직관적으로 이해를 못 했습니다. 외상을 매입한 금액이라는 말인가? 외상으로 무엇을 샀다는 말이지? 이 정도가 제 추측이었죠. 이 단어는 “상품을 매입한 후, 아직 지불하지 않은 매입 대금”을 의미합니다. 즉, 현금이 아닌 어음이나 수표 등으로 결제된 금액이죠. 누구나 쉽게 이해할 수 있는 간단한 개념인데, 오히려 이를 나타내는 회계 용어는 누구도 쉽게 이해할 수 없는 기묘한 일이 벌어지고 있습니다. 잘못 번역된 용어가 오히려 학습을 방해하고 있는 것입니다. 한자에 익숙한 예전 세대에게는 괜찮을 번역어였을 수도 있겠지만, 회계학을 새로 배우는 학생에게는 좋지 않은 번역입니다.
컴퓨터 공학과 소프트웨어 업계에서 사용되는 용어에서도 번역된 용어가 학습을 오히려 더 방해하는 경우가 종종 보입니다. 새로운 개념을 무리하게 번역하다가 오히려 번역된 용어가 해가 되는 경우도 있고, 과거에 번역된 용어가 요즘 독자에게는 맞지 않는 경우도 있고, 번역이 어렵거나 비효율적이라 그냥 영어를 한글로 음차한 용어도 있습니다. 그리고 이 모든 용어가 뒤섞여서 엉망진창이 되어버린게 현재 컴퓨터공학의 현 주소입니다. 저는 이 문제를 해결하기 위해서는 용어 번역을 하지 않고 원문 그대로 혹은 한글로 음차해 표기한 용어를 사용하는 것을 원칙으로 삼아야 한다고 생각합니다. 이렇게 생각하는 데는 세 가지 이유가 있습니다.
교육과정 상 한자 교육보다 영어 교육에 집중한 젊은 세대에게 한자어는 오히려 영어보다도 낯선 외국어다.
30세 이하의 젊은 개발자와 학생이 받은 교육과정에는 한자 교육이 거의 없습니다. 한자나 한문을 별도로 교육하는 교과도 거의 없을 뿐 아니라, 국어에서도 1990년대 이후로 국한문혼용체가 보이지 않게 되었고 특수한 경우를 제외하면 한자를 병기하는 경우도 보기 힘들어졌습니다. 간판이나 신문을 보아도 영어 표기가 더욱 자주 보이지 한자 표기는 찾아볼 수 없습니다. 이런 상황에서 영어 용어를 굳이 한자어로 번역해봐야 학생이 자신에게 덜 익숙한 언어로 학습을 하게 만드는 비효율적인 일입니다. 예를 들어 일반적인 학생이 매개변수(媒介變數)와 parameter 중 어떤 단어를 더 익숙하고 편하게 받아들일까요? 통계자료가 있는 것은 아니지만 저는 직관적으로 parameter일 것이라고 확신합니다.
예외적으로 우리가 일상 생활에서 자주 사용하여 사실상 한국어화 된 한자어도 존재합니다. 컴퓨터 공학에서는 변수(變數)가 대표적인 예입니다. 이렇게 일상 생활에서도 사용하는 단어를 활용해서 용어를 번역한다면 분명히 학습에 도움이 되지만, 그러지 않고 낯선 한자를 활용해서 신조어를 만들어내는 것은 오히려 방해가 됩니다. 하지만 이렇게 처음 배울 때는 도움이 되는 한국어 표현도 장기적으로는 오히려 장애물이 될 수 있습니다.
컴퓨터 공학의 세계공용어는 영어이기 때문에 결국 고급 개념을 접하려면 영어로 접해야 한다. 번역된 용어로 공부할 경우 영어 용어를 처음부터 다시 배워야 한다.
변수라는 용어는 일상적으로도 많이 사용되는 매우 좋은 번역어입니다. 하지만 이런 번역어는 결국 기술적 부채가 됩니다. 변수라는 한국어 표현을 계속 유지하게 되면 시간이 갈 수록 불필요한 문제가 발생하게 되기 때문입니다. 변수라는 개념을 바탕 삼아 발전하는 다른 용어와 그 번역어를 살펴봅시다. local variable (지역변수)까지는 아직 괜찮네요. 그런데 global variable (전역변수)쯤 되면 슬슬 일상적인 용어로 표현하기 어려워집니다. 전역이라는 단어를 보면 보통 군대 전역을 생각하지, global이라는 의미를 생각하지는 않죠. immutable variable? 불변성 변수? 고정 변수? 난감해지기 시작합니다. 보통 이 시점에서 번역을 포기하고 variable이나 배리어블이라고 부르기 시작하죠. 이제 머리속에는 변수라는 개념과 배리어블이라는 개념이 미묘한 관계를 유지하며 공존합니다.
게다가 번역 과정에서 의미가 미묘하게 누락이 되는 경우도 있습니다. software architecture는 보통 소프트웨어 구조라고 번역합니다. 단어의 모양이 아니고 의미에 충실하게 의역하여 자연스럽게 이해가 가능한 좋은 번역어네요. 하지만 원래 영어 용어에서 건축이라는 뉘앙스가 담긴 부분이 어쩔 수 없이 빠져버렸습니다. 그 결과, 이러한 소프트웨어 구조를 전체적으로 총괄하는 직책인 software architect라는 직책은 번역이 매우 어렵게 되었습니다. 한국어 번역의 맥락을 이어서 소프트웨어 구조 설계사라고 하든지 원어의 어감과 의미에 충실하기 위해서 소프트웨어 아키텍트라고 하든지 선택을 해야 하는 상황에 처하게 되었죠. 결국 아무리 잘 번역을 해도 번역에는 근본적인 한계가 있습니다.
번역이 불가능하거나 비효율적인 용어가 많으며 이런 용어는 이미 영어에서 한국어로 음차되고 있다.
이렇듯 번역의 한계 때문에 결국 그냥 음차해서 사용하는 용어는 이미 많습니다. 가장 대표적으로 이 분야 자체를 나타내는 용어가 있죠. 컴퓨터, 소프트웨어도 번역을 포기하고 음차한 단어입니다. 메모리, 포인터, 알고리즘 등 핵심 용어도 이미 음차해서 사용하고 있습니다. 이런 기초 개념은 워낙 다양한 부분에서 넓게 쓰이기 때문에 그 모든 용법에 정확히 대응하는 번역이 불가능합니다.
반대로 너무 고급 개념의 경우 함축된 의미가 많아서 의미있는 번역이 불가능한 경우가 있습니다. lazy evaluation은 위키피디아 한국어 페이지에 느긋한 계산법이라고 등록 되어 있네요. 원문이 되는 영어 표현도 사실 개념을 이해하지 못한 미국인이 보면 도저히 이해를 못 할 표현이기 때문에 한국어로 번역을 해봐야 어차피 의미가 없는 상황입니다. duck typing은 그냥 덕 타이핑이라고 등록되어 있는 것을 보니 등록자가 번역을 그냥 포기한 것 같네요. 현명한 판단입니다. 게다가 영어에서도 단어를 통해 개념을 표현하는 것을 아예 포기한 currying 같은 극단적인 예도 있습니다.
요약하자면, 한자어로 번역해봐야 일부 단어를 제외하면 영어보다 이해가 어렵고, 그렇게 번역한 용어도 장기적으로는 기술적 부채가 되어버리고, 이런 한계 때문에 영어를 음차해서 사용하는 용어가 이미 많으니, 굳이 용어를 번역하는데 노력을 들이지 말고 모든 용어를 영어 원문 그대로 혹은 음차해서 사용하자는 것이 제 의견입니다. 용어를 번역할 시간을 아껴서 차라리 영어 용어를 사용하는 기술 문서 자체를 번역해서 접근성을 높이는 편이 훨씬 더 유용하다고 생각합니다.
앞에서 예로 든 회계학에서도 이미 이런 경향이 일상화되고 있습니다. 대차대조표(貸借對照表)는 BS(balance sheet)라고 부르는 것이 일상이고, 앞서 말한 외상매입금도 account payable이라고 부르는 경우가 점점 많아지고 있습니다. 회계도 국제무역 및 금융거래를 위해서 회계공용어인 영어를 사용하는 경우가 많다보니 이런 현상이 자연스럽게 나타나고 있습니다. 그러니 마찬가지로 세계적으로 교류가 활발한 컴퓨터 공학에서도 이런 현상이 나타나는 것을 매우 자연스럽다고 볼 뿐 아니라, 앞서 설명한 이유도 함께 고려해해서 오히려 보다 적극적으로 원어를 사용하는 것을 장려해야 하지 않을까요?