AI 요약
스프레드시트는 지난 반세기 동안 데이터 관리의 표준으로 자리 잡았으며, 그 시작은 1979년 댄 브릭클린(Dan Bricklin)과 밥 프랑크스톤(Bob Frankston)이 개발한 '비지칼크(VisiCalc)'였습니다. 비지칼크는 수천 줄의 6502 어셈블리 코드로 작성되어 단 16K RAM을 가진 Apple II 컴퓨터에서 구동되었으며, 개인용 컴퓨터를 단순한 장난감에서 진지한 비즈니스 도구로 탈바꿈시키며 100만 장 이상 판매되었습니다. 본 기사는 이러한 비지칼크의 핵심 구조인 데이터 모델, 수식 평가기, UI를 최소 기능 제품(MVP) 형태로 재구현하는 과정을 상세히 다룹니다. 특히 현대의 엑셀과 달리 수식 접두사로 +를 사용하고 함수에 @를 사용하는 비지칼크만의 특징을 살려 재귀 하강 파서를 활용한 연산 로직을 설명합니다. 이를 통해 현대 스프레드시트의 근간이 된 기술적 원리를 되짚어보며 소프트웨어 디자인의 정수를 조명합니다.
핵심 인사이트
- 역사적 의의: 1979년 출시된 비지칼크는 Apple II의 '킬러 앱'으로서 100만 장 이상의 판매고를 기록하며 PC 산업을 견인했습니다.
- 하드웨어 제약: 초기 비지칼크는 단 수천 줄의 6502 어셈블리 코드로 작성되었으며, 16K RAM이라는 극도로 적은 메모리 환경에서 작동했습니다.
- 그리드 규모: 현대 엑셀이 100만 개 이상의 행을 지원하는 것과 달리, 원조 비지칼크는 64개 열과 256개 행의 제한된 그리드 구조를 가졌습니다.
- 특유의 문법: 현대의
=접두사 대신+를 수식 시작점으로 사용하며, 함수 호출 시에는@SUM,@ABS등@기호를 사용합니다.
주요 디테일
- 데이터 모델: 스프레드시트는 각 셀이 값(숫자 또는 텍스트), 수식, 또는 빈 상태를 가질 수 있도록 정의하며 그리드 배열로 관리합니다.
- 수식 파서 구조:
expr(표현식),term(항),factor(인자) 단계로 이어지는 고전적인 '재귀 하강 파서'를 사용하여 수식을 실시간으로 계산합니다. - 오류 처리: 계산 중 발생하는 오류는
NAN(Not a Number)을 통해 처리하며, 이는 부동 소수점 연산 특성을 이용해 결과값까지 자연스럽게 전파되도록 설계되었습니다. - 함수 및 범위 지원: 단일 인자 함수(
@ABS,@INT,@SQRT)뿐만 아니라@SUM(A1...C3)와 같은 범위 연산 로직을 포함하여 구현되었습니다. - 참조 로직: 열 문자와 행 숫자를 조합한 셀 주소(예: AB123)를 파싱하여 그리드 내부 인덱스로 변환하는 기능을 갖추고 있습니다.
향후 전망
- 교육적 가치: 고전 소프트웨어의 아키텍처를 현대적 언어로 재구현하는 시도는 주니어 개발자들에게 효율적인 리소스 관리와 파서 설계 원리를 가르치는 좋은 사례가 될 것입니다.
- UX의 지속성: 반세기 전 정립된 스프레드시트의 UI/UX 모델은 현대의 클라우드 및 AI 기반 데이터 도구에서도 여전히 핵심적인 인터페이스로 생존할 전망입니다.
출처:hackernews
