1 소프트웨어 번역어 선택의 어려움

2017 may

프로그래밍 용어, 무리해서 번역하지 말고 사용합시다를 예전에 읽었었는데, 참 공감이 가는 글이다. 그러나 글을 쓸 때의 대전제는 읽기 쉬운 글을 쓴다는 것이다. 알기 쉽도록 하기 위해선 어느정도 용어를 번역해야 한다.

위키백과에서 충격받은 번역어

번역할 때 한국어 위키백과 참고를 많이 참고하는 편은 아니지만, 적어도 한번은 번역 용어를 어떻게 사용하고 있는지 알아보기 위해 참고한다. 이전에 책에서 본 번역가들이 참고했다고 했던 위키백과 참고해보려고 했으나 내용이 빈약하다. 그리고 정말 실력있는 에디터가 위키백과 수정을 하고 있는지 의문이다. 위키백과가 정말 누구나 편집할 수 있다는 점이 장점이지만 고민을 많이한 문서들은 별로 없는 것 같아 보인다. 나무위키는 논외로 한다.

예를 들어 누가 푸시다운 오토마타를 내리누름 오토마타로 번역한단 말인가? 위키백과 하단의 표를 보도록 하자. 내리누름 오토마타는 직관적이지 않다! 또 다른 예로 번역어의 모호성에서는 람다 대수(lambda calculus)가 정확히 대수(algebra)를 의미하지는 않는다. lambda calculus는 람다 계산법이 적절하다.

단어가 뜻하는 의미를 포괄하기

컴퓨터과학 번역어는 어렵다. 일반적으로 단어에서 단어가 뜻하는 의미를 전부 포괄할 수는 없다. 컴퓨터 과학 용어 번역의 목적은 독자의 이해를 최대한 돕도록 하는 것이다. 초보자 대상으로 한 용어는 대부분 번역이 되어있는 경우가 많다.

번역을 하면서 번역용어를 정리 하고있다. 대부분 대한수학회 용어를 먼저 참고하고있다. 다음은 번역하면서 고민을 해본 용어 목록이다. 이 목록은 계속 수정할 것이다.

  1. 심볼(symbol) : 심볼은 의미 그대로 한다면 기호다. 튜링기계에서는 알파벳 26개를 기반한 문자 집합을 말한다. 기호로 번역한다면 그 의미는 어떻게 되는가? 튜링기계의 헤드도 마찬가지다. 누가 헤드를 머리로 번역할까1.
  2. accepting state : 오토마타에서 받아들이는 상태, 수용상태 둘 중에 하나를 쓰고 있는 상황이다. 옛날 책을 보면 수용 상태. 위키백과는 받아들이는 상태가 보인다.
  3. linear bound automata : 컴퓨터 과학 용어의 의미를 포괄하는 단어를 만드는건 정말 어렵다. linear bound automata는 pushdown automaton과 같이 비결정적으로 동작할 수 있지만, 단일 메인 테이프를 사용하며 보조 테이프를 가지고 있지는 않다. 그리고 linear bound automata은 테이프에 읽기/쓰기가 가능하다. 하지만 linear bound automata은 다른 오토마타처럼 다른 방향으로 이동할 수 없다. 이런 내용은 기존 영어 단어도 의미를 포괄하지 못한다.
  4. Convex-hull : 컨벡스 헐, 알고리즘 문제 풀이를 할때 자주 볼 수 있을 것이다. 볼록껍질 의미는 맞다. 정말 볼록껍질로 해야할까?
  5. word problem : 구글에 검색해보면 수학에서 말하는 문장 문제(혹은 문장제)가 나온다. 그러나 컴퓨터 과학에서 말하는 word problem은 다르다. 단어 문제라고 해야할 것이다.
  6. withness : 위키백과에서는 증거, 친절한 수론 길라잡이에서는 증인으로 사용한다. n이 홀수인 합성수일때 \({1, 2, 3, … , n-1}\) 의 75%의 수가 withness를 가지고 있다. 라는 미하엘 라빈의 정의를 본다면 증거 혹은 증인이 맞아 보인다.
  7. minima : 수학용어에서는 극소다. 다만 스타이너 트리를 찾는 아날로그 방법인 비눗방울 방법2으로 하는데 극소를 쓴다? 그건 아닐것이다.
  8. list comprehensions : 리스트 해석, 리스트 조건제시법, 어느정도 해당하는 말일 수 있다. 하지만 다양하게 사용되는 컴프리헨션에 대응이 될 수 없다. 음차로 쓰는것을 추천한다.

사실 이렇게 엉망인 이유는 하나 더 있는데, 컴퓨터과학에는 수학의 개념을 차용한 개념들이 많이 있다. 처음에 링크한 글에는 parameter와 매개변수를 비교했는데, 문제가 조금 복잡하다. 사실 매개변수는 수학 용어에서 왔기때문이다34. 그리고 invariant와 immutable 는 둘다 수학에서 불변이라는 의미다. argument는 수학에서 편각, 변수로 쓰고 있다. 반면 컴퓨터 과학용어로 번역을 했을때는 인수로 쓰고 있다. parameter와 argument의 차이를 설명한 인용을 보도록 하자.

We well generally use parameter for a variable named in the parenthesized list in a function definition, and argument for the value used in a call of the function. - K&R, C Programming Language (2nd Edition), p.25

결론

과거로 돌아가서 번역할때 한자 쓰지말자고 하기에는 타임머신이 개발되지 않았다. 과거의 한자용어의 익숙함도 문제지만 한글로 번역하면 의미가 한 글자로 압축되어 있는 한자보다 긴 단어가 될 가능성이 있다. 한글의 표현 한계에도 금방 부딪힐 것이다.

이정도로 한국어 문서가 빈약할 줄은 몰랐어

요약하면 쉽게 읽히기 위한 글(번역)을 쓰기 위해선 어느정도 용어를 번역해야 한다. 초보자를 대상으로 하는 책은 더더욱 용어를 번역해야한다. 위키백과는 참고는 할만하지만 번역용어 제시 사이트로는 좋지 못한 상태다. 한국어 웹 문서는 빈약하다.


  1. 위키백과 튜링 기계 https://ko.wikipedia.org/wiki/%ED%8A%9C%EB%A7%81%EA%B8%B0%EA%B3%84↩︎

  2. CS 언플러그드 http://www.playsw.or.kr/repo/cs_unplugged/379↩︎

  3. 류광의 번역 이야기 parameter, argument, 인자, 인수, 매개 변수 http://occamsrazr.net/tt/11↩︎

  4. 수리과학연구정보센터 http://icms.kaist.ac.kr/new_sub05/sub05_04.php↩︎