본문으로 건너뛰기
피드

Excel은 아직도 1900년을 윤년으로 처리한다 — 그리고 고칠 생각이 없다

general 약 3분
vote
0
댓글
북마크

Excel이 1900년을 윤년으로 처리하는 것은 Lotus 1-2-3에서 시작된 의도적 버그. Microsoft는 호환성 때문에 이를 채택했고, 고쳤을 때의 피해가 더 크다고 판단해 40년 넘게 유지 중.

  • 1

    1900년은 윤년이 아니지만 Excel은 2월 29일이 존재한다고 가정

  • 2

    Lotus 1-2-3 호환성을 위해 Microsoft가 동일한 직렬 날짜 체계 채택

  • 3

    수정 시 기존 모든 날짜가 1일 밀리고 함수 반환값 변경 → 비용이 더 큼

  • 4

    영향 범위는 1900년 3월 1일 이전 날짜의 WEEKDAY 함수뿐

  • 1900년은 윤년이 아님 (세기 연도는 400으로 나눠떨어져야 윤년). 그런데 Excel은 1900년 2월 29일이 존재한다고 가정하고 날짜를 계산함. 이 버그는 Lotus 1-2-3에서 시작된 유산
  • Lotus 1-2-3가 처음 출시됐을 때 1900년을 윤년으로 처리했는데, 이렇게 하면 윤년 처리 로직이 단순해지고 대부분의 날짜 계산에 실질적 영향이 없었기 때문. Microsoft Multiplan과 Excel이 출시될 때 Lotus 1-2-3와의 호환성을 위해 동일한 직렬 날짜 체계를 채택하면서 이 버그도 그대로 가져옴
  • Microsoft의 공식 입장: 기술적으로는 고칠 수 있지만, 고쳤을 때의 단점이 안 고쳤을 때의 단점보다 크다
  • 고치면 생기는 문제들:
    • 기존 모든 Excel 워크시트와 문서의 날짜가 하루 밀림. 이걸 수정하는 데 엄청난 시간과 노력이 필요
    • WEEKDAY 같은 함수의 반환값이 바뀌어서 수식이 깨질 수 있음
    • 다른 프로그램과의 직렬 날짜 호환성이 깨짐
  • 안 고치면 생기는 문제: WEEKDAY 함수가 1900년 3월 1일 이전 날짜에 대해서만 잘못된 값을 반환함. 대부분의 사용자가 이 범위의 날짜를 쓸 일이 없으니 사실상 영향 없음

ℹ️참고

> 2100년 같은 다른 세기 연도는 정확하게 처리함 (윤년 아님으로 올바르게 판단). 오직 1900년만 잘못 처리하는 것. Lotus 1-2-3 호환성이라는 이유로 40년 넘게 유지되고 있는 의도적 버그

하위 호환성을 위해 의도적으로 유지하는 버그의 교과서적 사례. 개발자라면 공감할 '고치는 것보다 안 고치는 게 나은' 레거시 이야기.

댓글

댓글

댓글을 불러오는 중...

general

존 카맥이 돌아본 초기 id 소프트웨어의 실수들

존 카맥이 퀘이크 개발 당시의 기술적 과욕, 팀 운영, 지분 구조 문제를 직접 돌아봤다. 퀘이크 자체는 엄청난 성취였지만, 그 과정에서 회사와 사람들에게 너무 큰 부담을 줬다는 반성에 가깝다.

general

정부, 공공부문을 ‘AI 민주정부’로 바꾸겠다는 전략 공개

행정안전부가 전자정부의 날 행사에서 공공 인공지능 전환 전략인 ‘세계 최고의 AI 민주정부 실현 전략’을 발표했다. 핵심은 행정 효율화에 그치지 않고 국민 의견 수렴, 정책 참여, 행정 역량 강화를 AI로 밀어보겠다는 구상이다.

general

워드 빨간 밑줄을 만든 토니 크루거를 기억하며

마이크로소프트 워드의 빨간 맞춤법 밑줄과 초록 문법 밑줄을 처음 만든 개발자 토니 크루거를 기리는 글이다. 예전에는 사용자가 직접 맞춤법 검사를 실행하고 기다려야 했지만, 토니는 이 기능을 백그라운드에서 덜 거슬리게 만들고 오류를 즉시 화면에 표시하는 방식으로 바꿨다. 지금은 거의 모든 문서 편집기와 개발 도구에 비슷한 표시가 들어갔다는 점에서, 조용하지만 엄청나게 널리 퍼진 사용자 경험 개선 사례다.

general

삼성전자, AI 모듈러 홈 3년 안에 1만 채 팔겠다고 선언

삼성전자가 공장에서 80% 이상 제작되는 AI 모듈러 홈을 3년간 누적 1만 채 판매하겠다는 목표를 밝혔다. 스마트싱스 기반 보안, 화재·누수 알림, 에너지 절감, 방문자 맞이 자동화까지 주거 솔루션을 패키지로 묶는 전략이다.

general

중기부, 딥테크 7개 팀에 예비연구 티켓 줬다

중기부가 생태계혁신형 딥테크 챌린지 프로젝트 예비연구팀 7곳을 출범시켰다. 206개 컨소시엄 중 7개가 뽑혀 41대 1 경쟁률을 통과했고, 최종 5개 과제에는 4년간 최대 200억 원의 연구개발 지원이 붙는다.