Skip to main content

언어

아보카도 있었어

아내가 남편에게 말했다. "가서 장 좀 봐 줄래? 우유 하나 사오고 아보카도 있으면 여섯 개 사 와."
얼마 후 남편이 우유 여섯 개를 들고 돌아왔다.
아내가 말했다. "왜 우유를 여섯 개나 사 왔어?"
남편이 답했다. "아보카도 있었어."
- r/dadjokes에 올라온 버전

사람들은 이 유머를 보고 "남편이 프로그래머" 같은 식으로 이야기를 하지만, 엄밀히 말해 프로그래머는 이렇게 행동하지 않을 것이다: 아내와 같은 의도를 지녔을 때, 컴퓨터가 남편처럼 행동하지 않게 만드는 것이 프로그래머가 하는 일(중 하나)이기 때문이다.

이 유머를 이해하지 못했다는 사람을 위해서 남편의 행동 양식을 코드로 작성해서 보여주는 것을 트위터에서 보기도 했는데, 기억을 더듬어 보자면 다음과 같은 코드이다.

milk_amount = 1;
if (they_have_avocados) {
  milk_amount = 6;
}
buy_milk(milk_amount);

이런 코드를 작성하는 것은 유머를 즐기는 방법 중 하나이긴 하지만, 설명으로서는 부적절하다고 생각한다: 사실 "(아내는 아보카도가 있으면 아보카도를 여섯 개 사오라는 거였는데) 남편은 아보카도가 있으면 우유를 여섯 개 사 오라는 말로 이해했다"라고 말로 설명하는 것과 무엇이 다른가? 남편이 왜 그렇게 이해했는지를 설명해 주는가? 그 지점에서 저 코드는 말로 설명하는 것과 차이가 없다.

사실, 아내의 말에서 "아보카도 있으면"과 "가기전에 냉장고 한번 보고 우유 하나도 없으면"은 어느 것을 넣어도 문장을 형식적으로 성립시키고, 의미적으로도 성립시킨다. 달라지는 것은 '여섯 개'가 무엇을 가리켰을 것이냐고 (합리적으로 생각했을 때) 이끌어낼 수 있는 부분이다. 이것은 주어진 글의 형식만으로는 결정할 수 없다. 이 유머를 이해하지 못하는 것은 다음을 이해하지 못하는 것이다. 이 유머가 시사하는 저 문장의 중의성, 아니 저 문장이 중의적으로 해석될 여지가 있다고 기어이 생각하는 사람들을 말이다. 그리고 우리 주변에서 볼 수 있는 그런 사람들은 보통 프로그래머다.

아니 아무리 그래도, 엄밀히 말해 프로그래머는 이렇게 행동하지 않을 것이다…….