Y2k Problem

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS

FrontPageOneLiner Y2kProblem

컴퓨터의 날짜가 2000년이 되면서 오작동을 하는 문제.

기억장소의 비용 절약이나 혹은 프로그래머의 게으름, 매너리즘 등으로 년도를 두자리 수로 저장/처리하는 데에서 이 문제가 생겼다고 말한다. "79"는 1979년도가 되지만, "00"년은 언제인가? 1900년인가 2000년인가? 또, 대부분의 시스템은 "00"이나 "99" 등의 특이점을 특수한 의미(예컨대 프로그램 종료 등)로 사용한다 -- 역시 유사한 이유로.

1997년경부터 문제가 사회화되기 시작했고, 엄청난 재앙을 예견하는 사람도 많았다. 이 시기를 타고 직장을 잃었던 과거 Cobol 프로그래머들의 주가가 치솟기도 했고, 이와 관련한 조악한 책, 기관들이 많은 인기를 탔다.

대부분의 사람들이 이해하는 것처럼 Y2KProblem의 본질적 문제는 년도를 두자리수로 처리했다는 것이 아니다. 프로그래밍을 하면서, 시스템 디자인을 하면서 이런 의사결정은 늘 발생하는 것이다. 또한, 당시에 두자리수의 결정은 "그 시점"에 있어서는 최선의 선택이었을 수가 있다. 즉, 해당 프로그램의 가용수명을 예측할 때 2000년까지 지속될 확률이 몇 퍼센트 이하이므로, 수익-비용을 고려했을 때 두자리수에서 얻는 것이 더 컸을 수가 있는 것이다. 이것은 아주 합리적이고 올바른 판단이었을 수 있다.

진정한 문제는 InformationHiding이 제대로 되지 않았던 것이다. "어떻게" -- 년도를 두자리수로 처리한다는 -- 가 감춰지지 않았고, 시스템의 전체가 그 구체적 "어떻게"의 지식을 이용했기 때문에, "어떻게"를 바꾸기 위해서는 무지막지한 비용이 들었던 것이다. (see also BertrandMeyer's The Opportunity of a Millennium, IEEE Computer, Nov. 1997, pp. 137-138) --김창준


"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>