transparent. 투명하다는 뜻이다. 책을 읽다 보면 이 단어가 많이 나온다. 처음에 접했을 때, 어떤 뜻인지 바로 와 닿지가 않았다. 물론 그래픽스 책에서 나올 때 말고. 거기에선 말 그대로 투명하다는 얘기니깐. 범위를 더 좁혀보면 설계에서 이 단어가 나왔을 때이다.
The decorator conforms to the interface of the component it decorates so that its presence is transparent to the component's clients. - design patterns p175

"이 줄에 버그가 있다"
"이 포인터가 널이라는 점이 버그이다"
"프로그램이 죽었다. 이것은 버그이다"
- 프로그램은 왜 실패하는가? p26
버그(bug)라는 말을 많이 사용하는데, 위에 인용한 말처럼 원인과 증상을 뭉뜽그려 말하곤 한다. 또, 프로그래머가 무조건 잘못한 일이 대부분인데 그 잘못을 묽게 만들기도 한다.
계산한 값을 메모리에 저장해서 여러 번 같은 값 계산을 피하는 최적화 기법을 메모이제이션(memoization)이라고 한다. 실행 속도와 공간을 바꾸는 가장 기초적인 기법이기도 하다. 실수로 메모리제이션이라고 하기도 하는데 메모이제이션이 정확한 용어이다.
이 용어를 몰랐을 때는 데이터나 값을 미리 복사해 놓거나 계산해 놓은 임시 장소를 뜻하는 캐시(cache)에 저장하는 동작, 즉 캐싱(caching)이란 용어를 쓰곤 했다. 데이터를 미리 계산해서 임시 장소인 메모리에 저장해놓는 동작이라 캐싱이란 용어도 틀린 말은 아니다. 하지만, 딱 가리키는 용어인 메모이제이션이 있으니 이걸 쓰는 게 맞겠지.
메모이제이션을 사용하는 피보나치 수열을 계산하는 코드이다. 역시 예를 들때는 피보나치 수가 최고지.. 암~
// 안전 코드를 제외한 간단한 코드 조각
// 메모리 초기화.
const static int NOT_VALID = -1;
const static int MEMO_MAX = 10000;
std::vector<int> memo;
memo.resize( MEMO_MAX );
std::fill( memo.begin(), memo.end(), NOT_VALID );
// 피보나치 초기화
memo[0] = 0;
memo[1] = 1;
int fib( int n )
{
if( memo[n] != NOT_VALID ) return memo[n];
memo[n] = fib(n-1) + fib(n-2); // memoization
return memo[n];
}

한때 망할 ActiveX를 설치하려고 하면 뜨는 노란색의 바(bar) 이름이 뭔지 몰라서 검색할 때 한참 헤맸었다. "인터넷 익스플로러에서 ActiveX 설치하려고 할 때 나오는 노란색 바(bar)가 뭐죠?" 나중에야 이 녀석을 information bar 라고 부른다는 걸 알았다.
참 용어를 모르면 고생이다. 검색할 때도 검색 키워드를 제대로 모르니 제대로 된 답을 찾기가 어렵고 또한 사람과 이야기 할 때 한방에 바로 갈 수 있는 것을 돌아서 가야 한다. 이거 분명히 모아서 정리해놓은 게 있지 싶어서 검색해보니 바로 Controls - MSDN가 걸린다. XP 기준으로 정리한 자료를 찾다가 포기하고 이참에 비스타에서 추가된 컴포넌트 이름을 정리하는 게 좋겠다 싶어서 한번 살펴봤다.

암호 칠때 종종 보는 녀석으로 Balloons 라고 부른다. 치명적인 오류가 났을 때 이런 무시해도 좋게 생긴 컨트롤로 알려주면 안 된다. 좀 친절하게 알려주자 할 때 사용하면 좋을 컨트롤.
predicate 발음듣기 [미] [prédikət]
1. 【문법】 술부, 술어 (cf. SUBJECT)
4. 【컴퓨터】 술어
- 구글 사전
술어[述語]
[논리]논리의 판단·명제에서, 주사(主辭)에 대하여 긍정 또는 부정의 입언(立言)을 하는 개념.
[언어] 같은 말 : 서술어.
- 다음 사전
확실한 기억은 아니지만 아마 이 STL을 공부하면서 이 단어를 처음 접했던 것 같다. 술어라는 단어 또한 익숙하지 않아서 predicate를 찾고 다시 술어라는 단어를 찾아봤던 기억이 난다. 술어의 뜻풀이 또한 어렵게 되어 있어 어떤 뜻인지 바로 알기 어려웠다.
프로그래밍 언어에서 사용하는 predicate는 서술어라기 보다는 논리에서 사용하는 긍정 또는 부정의 입언을 하는 개념으로 사용한다. true / false를 판단할 수 있는 식이나 boolean 값을 리턴하는 함수를 술어(predicate)라고 한다.