1P by GN⁺ 14시간전 | ★ favorite | 댓글 1개
  • 마이크로소프트의 50년 혁신은 Altair BASIC 코드에서 시작되었음
  • Office, Windows 95, Xbox, AI 이전에 존재한 최초의 제품
  • 이 코드를 통해 개인용 컴퓨터 시대가 열렸으며, 마이크로소프트의 성장 기반이 되었음

내가 작성한 가장 멋진 코드

  • 1975년, Bill Gates와 Paul Allen은 “모든 책상과 가정에 컴퓨터를”이라는 비전으로 Microsoft를 창립함
  • 마이크로소프트가 50년을 맞이하게 된 것은 Steve Ballmer, Satya Nadella 같은 훌륭한 리더들과 수많은 직원들의 공이 컸음
  • Gates는 이 기념비적인 순간을 맞이하며 기쁨과 동시에 아쉬움도 느꼈음
    • 하버드의 PDP-10 앞에서 코딩하던 그 시절이 엊그제처럼 느껴짐
  • 마이크로소프트의 시작은 1975년 Popular Electronics 잡지의 표지에서 본 Altair 8800 컴퓨터였음
    • Altair는 MITS라는 소규모 전자회사에서 만든 키트형 PC로, 당시로서는 혁신적인 제품이었음
    • 잡지를 본 순간, Gates와 Allen은 PC 혁명이 다가오고 있음을 직감하고 그 흐름에 동참하고자 결심함

BASIC 코드 작성을 결심한 계기

  • 두 사람은 학생 시절, Lakeside 학교에서 컴퓨터에 매료됨
  • Altair가 일반인에게도 프로그래밍 기회를 줄 수 있다는 사실에 감명을 받음
  • Gates와 Allen은 Altair용 BASIC 언어를 개발했다고 MITS에 먼저 제안함
  • 하지만 실제로는 아직 존재하지도 않는 소프트웨어였음, 그래서 직접 만들어야 했음

BASIC 언어의 기본 개념

  • BASIC은 1964년, 다트머스 대학의 두 교수가 만든 초보자용 프로그래밍 언어임
  • 컴퓨터 경험이 전혀 없는 사람도 짧은 학습만으로 직접 프로그램을 만들 수 있도록 설계되었음
    • 예: 수표장 잔액 계산기, 틱택토 게임 등
  • Gates와 Allen이 처음 배운 프로그래밍 언어였으며, 현재까지도 사용되고 있음
  • BASIC은 영어처럼 컴퓨터에게 작업을 지시하는 언어로, 명령 실행, 수학 문제 해결, 기능 수행 등을 가능하게 함

BASIC을 컴퓨터가 이해하게 만드는 방법

  • 문제는 컴퓨터가 BASIC을 이해하지 못한다는 점이었음
  • Gates와 Allen은 BASIC 코드를 컴퓨터 명령으로 한 줄씩 번역해 실행하는 인터프리터(Interpreter) 를 만들기로 결정함
    • 실시간 피드백을 제공해 초보자가 오류를 빠르게 수정할 수 있는 장점이 있었음
  • 전체 프로그램을 한 번에 번역하는 컴파일러(Compiler) 방식도 고려했지만, 초보자 친화적인 인터프리터 방식이 더 적합하다고 판단함

개발 시작

  • 당시 Altair에 쓰인 Intel 8080 칩이 없었기 때문에, Paul은 하버드의 PDP-10에서 해당 칩을 에뮬레이션하는 프로그램을 개발함
  • Gates는 인터프리터의 메인 코드를 작성했고, 친구 Monte Davidoff는 수학 연산 모듈을 담당함
  • 이 세 명은 두 달간 밤낮없이 작업하여, 실제로 존재하지 않던 소프트웨어를 완성해냄

메모리 제약 극복

  • 당시 컴퓨터 메모리는 매우 비쌌고, Altair에 메모리를 추가하면 비용이 PC 가격보다 높을 수도 있었음
  • BASIC 인터프리터를 4KB 이내로 구현하는 것이 목표였음
    • 이렇게 하면 사용자들이 자신만의 프로그램을 실행할 수 있는 메모리를 확보할 수 있었음
  • Gates는 다양한 메모리 최적화 기법을 사용해 이 목표를 달성함
    • 예: 압축된 데이터 구조, 효율적인 알고리즘

마이크로소프트의 탄생

  • 수많은 밤샘 작업 끝에 완성한 BASIC 인터프리터를 MITS의 대표 Ed Roberts에게 시연함
  • 시연은 성공적이었고, MITS는 이 소프트웨어의 라이선스를 구매
  • 이 성공으로 Altair BASIC은 마이크로소프트의 첫 제품이 되었으며, Micro-Soft라는 회사명이 탄생함 (나중에 하이픈은 삭제됨)
  • 이 코드 하나가 이후 50년간 이어질 마이크로소프트의 모든 혁신의 출발점이 되었음
  • 보다 자세한 이야기는 회고록 Source Code 에서 확인 가능함

소스 코드 다운로드

  • 마이크로소프트의 시작이 된 Altair BASIC의 원본 소스 코드를 직접 확인해볼 수 있음
  • 지난 50년간 프로그래밍이 얼마나 발전했는지를 보여주는 역사적 자료로, Gates는 이 코드에 여전히 큰 자부심을 느낌

소스 코드 다운로드 (PDF)

Hacker News 의견
  • 소스 코드는 재미있는 읽을거리임. GW-BASIC의 소스 코드를 발견했는데, 몇 가지 재미있는 주석이 있음
    • 숫자를 버퍼에 맞출 수 없어서 모든 문자를 스택에서 다시 꺼내고, 시작 버퍼 위치를 꺼내서 "%" 기호를 입력해야 한다는 주석이 있음
    • 랜덤 숫자 생성기의 상수는 Knuth Vol 2, Chapter 3을 참고하지 않고 변경하지 말라는 주석이 있음
  • 수정: GW-BASIC, QBASIC 아님
  • Steve Jobs는 Microsoft의 문제는 취향이 없다는 것이라고 말하곤 했음
    • 스크롤 시 폰트가 깜빡이는 효과가 그 말을 떠올리게 함. 매우 산만하고, 리더 모드를 사용해도 비활성화할 수 없음
    • 참고로, Bill Gates와 그가 세상을 위해 한 일들을 좋아함
  • Intel 8080 에뮬레이터를 Dec10/VAX/IBM VM CMS 간에 이식 가능하게 작성했음. 8080은 256 값 스위치로 간단히 구현 가능했음. FORTRAN77로 작성했음
    • BASIC 인터프리터를 부동소수점과 함께 작성하는 것은 훨씬 어려움. Gates, Allen 및 다른 협력자들의 BASIC은 꽤 훌륭했음
  • 약간의 운과 위험을 감수하는 의지가 예상치 못한 방식으로 성과를 냈음. 내 생애에 PC 시대와 같은 것을 다시 볼 수 있을지 확신할 수 없음. 아마도 모바일 폰이나 인터넷일 것임
  • 소스 코드는 끝에 링크되어 있음 (경고: 100 MB PDF임)
  • 왜 이 웹사이트를 보기 위해 JS를 활성화해야 하는지 궁금함
  • Malcom Harris의 Palo Alto를 읽고 나서 이 글을 읽는 것이 흥미로움
  • 이건 정말 멋짐. 텍스트는 디자인에 있어 충분히 활용되지 않은 매체라고 생각함
  • "이 코드를 ASCII로 담은 GitHub 저장소가 기대됨"이라고 말하고 싶지만, Microsoft가 아마도 허용하지 않을 것임을 깨달음
  • Microsoft (아마도 Bill Gates 개인적으로도)는 해커 커뮤니티에 강한 "반감"을 불러일으켰음. 하지만 그와 Paul Allen은 순수한 해커였고 기술 발전에 많은 도움을 줬음을 부정할 수 없음. 물론, 우리는 모두 OSS를 선호하고 Linus (또는 다른 OSS 개발자 이름)를 "악덕 자본가"보다 100번 더 선택하겠지만, 그들이 인정받아야 함