predicate, 서술자

Twitter icon류광, 2005-09-14 16:09

C++에서, 부울 결과를 돌려주는 함수 객체를 predicate라고 부릅니다. 아마도 다른 언어들에도 비슷한 것이 있을 것입니다.

조건자라는 용어를 쓴 책도 있다고 들었는데, 부울 결과라는 것과 조건이라는 용어가 잘 어울린다는 점에서 의미있는 선택이라고 봅니다. 그러나 condition variable predicate, condition predicate 등 condition이 붙어 나오는 경우에는 좀 곤란해집니다.

저는 서술자라는 용어를 사용해 왔는데요. 서술자라는 용어의 문제점은 descriptor와 충돌한다는 점입니다. descriptor도 서술자라고 번역해 왔거든요. descriptor를 기술자라고 하면 engineer와 충돌하고요.

다행히 예전 책들에서는 predicate와 descriptor가 같이 나오지 않았지만, 최근 나온 Windows 시스템 프로그래밍 제3판에서는 같이 나왔습니다. 시스템 프로그래밍인만큼 파일과 보안을 다루며, 따라서 파일 서술자와 보안 서술자가 안 나올 수가 없죠. 서술자로서의 predicate는 스레드 동기화 부분의 condition variable predicate에서 나오고요. 불행중 다행으로 predicate와 descriptor가 같은 문단이나 절 안에서 함께 쓰이지는 않았습니다만...

서술자라는 용어를 사용했던 주된 이유는 prediate가 술어 논리라는 논리학의 용어와 서술어, 서술부라는 언어학의 용어와 관련이 크다는 생각 때문이었습니다.

술어 논리에 대해 잘은 모르지만 아주 간단히 이야기하면: 예를 들어 Tom is a student라는 문장에서 Tom은 주어이고 is a student는 서술어(또는 서술절, 서술부)입니다. 이 문장을 하나의 명제라고 볼 때 이 명제(의 진위 여부)를 술어 논리에서는 is_student(Tom)라고 표기한다고 합니다. 형태를 보면 C++의 predicate와 다를 바가 없죠.

번역어를 선택할 때 관련 분야(이 경우 언어학, 논리학)와 같은 용어를 사용해서 연관 관계를 드러내는 것[1]이 중요하다고 한다면, predicate의 번역어는 꼭 서술자가 아니더라도 '술'이라는 글자만큼은 들어가야 할 것 같다는 생각입니다. 술어, 술어 객체, 서술부 함수 등 여러 가지가 가능하겠지만, 서술자보다 아주 나아 보이지는 않습니다. 서술자는 반복자 등과 같이 ~자로 끝나서 왠지 일관성이 있어보이기도 하구요.[2]

[1] 의역과 직역 - Desktop의 사례에서 말한 비유의 유지와도 관련된 이야기인데 나중에 좀 더 써보겠습니다...

[2] 극복해야 할 일관성일 수도 있겠지만요... iterator, 반복자 참고 )

그러나 descriptor와 심하게 충돌하는 책을 번역하게 된다면 아마 서술자가 아닌 다른 번역어를 택할 것 같습니다.

태그: 번역 프로그래밍 C++

comments powered by Disqus

예전 댓글(읽기 전용)