자세히 보기

Matthew Tyson
Contributing Writer

천재들의 족적··· SW 역사에 획을 그은 논문 9가지

소프트웨어 개발에 있어 가능성이 크게 확장되는 순간이 있다. 개발자 작업이 뿌리부터 변화하는 순간이다. 몇몇 역사적인 문서에는 컴퓨팅 기술의 중요한 패러다임 전환이 포착되어 있다. 이 기사에서는 모든 개발자가 반드시 읽어야 할 논문에 담긴 소프트웨어 개발의 (거의) 지난 한 세기를 되돌아본다.

소프트웨어 개발의 역사적 논문 9가지
1. 결정문제에 적용하는 계산가능한 수에 관하여(On Computable Numbers, with an Application to the Entscheidungsproblem)
2. EDVAC 보고서 첫 번째 초안(First Draft of a Report on the EDVAC)
3. IBM 수학 수식 번역 시스템, 포트란(FORTRAN)의 사양(Specifications for the IBM Mathematical FORmula TRANSlating System, FORTRAN)
4. 유해한 것으로 여겨지는 고 투 문(Go To Statement Considered Harmful)
5. 암호화의 새로운 방향성(New Directions in Cryptography)
6. GNU 선언(The Gnu Manifesto)
7. 아키텍처 스타일과 네트워크 기반 소프트웨어 아키텍처 설계(Architectural Styles and the Design of Network-based Software Architectures)
8. 비트코인: P2P 전자 현금 시스템(Bitcoin: A Peer-to-Peer Electronic Cash System)
9. 텐서플로우: 대규모 머신러닝을 위한 시스템(TensorFlow: A System for Large-Scale Machine Learning)

1. 앨런 튜링(Alan Turing): 결정문제에 적용하는 계산가능한 수에 관하여(On Computable Numbers, with an Application to the Entscheidungsproblem) (1936)
이 글은 패러다임을 바꾸는 논문의 전형이다. 튜링의 글은 불확실한 지형을 종이 위에서 탐색하고 랜드마크를 찾아 지도를 만든다는 관점의 성격을 띠고 있다. 그리고 이 지도는 거의 100년 동안 우리에게 유용하게 사용됐다.

튜링의 논문은 가독성이 뛰어나며, 기술적인 논문 치고는 서사가 뛰어나다. 이 논문은 숫자를 계산할 수 있게 만드는 요소에 대해 어려운 질문을 던지고 까다로운 수학을 탐구한다. 그러면서도 ‘머리’(포인터)를 움직일 수 있는 테이프(튜링 테이프) 상의 무한한 연속적 사각형이라는 일반적 모델은 오늘날에도 놀랍다. 튜링은 이후 등장한 모든 정보 기계의 본질을 설명한다.

튜링 머신 아이디어의 우아함은 수학을 컴퓨팅으로, 컴퓨팅을 수학으로 변환하는 능력에 있다. 이는 시스템의 복잡성을 설명하는 데 여전히 유용한 모델로 남아 있다.

계산 가능한 수에 관하여’는 괴델의 불완전성에 대한 연구를 이어가는 것을 포함해 여러 측면에서 필독 문서다. 테이프-기계의 아이디어를 제시하는 것만으로도 이 논문은 가치가 있다.

결정문제(Entscheidungsproblem)?
튜링의 결정문제는 수학, 논리, 컴퓨터 과학이 만나는 흥미로운 영역의 창이다. 이 문제는 주어진 입력에 대해 주어진 공리 집합 내에서 예/아니오 진리를 도출하는 보편적인 방법을 요구한다.

2. 존 폰 노이만(John von Neumann): EDVAC 보고서 첫 번째 초안(First Draft of a Report on the EDVAC) (1945)
폰 노이만의 EDVAC(전자식 이산 가변 자동 컴퓨터) 아키텍처에 대한 제안은 언뜻 보기에 ‘이미 명백하지 않았나?’라는 생각이 들 정도로 획기적인 것이었다.

명백하지 않았던 점은 컴퓨터의 메모리가 데이터와 명령을 함께 저장할 수 있다는 것이었다. 다시 말해, 메모리는 실행 가능한 정보도 저장할 수 있다는 점이다. 하지만 이 핵심 아이디어 외에도 당시 기계가 할 수 있는 일을 정의한 저자의 감각이 돋보인다. 이는 튜링의 철학적 수학적 논의에서 폰 노이만의 ‘강철 테이프나 와이어에 자기적으로 각인된’ 정보에 대한 실용적인 논의로 연결되는 엄청난 도약이었다.

이 연구에는 계산의 오류 처리에 대한 아이디어를 비롯해 온갖 종류의 흥미로운 생각이 담겨 있다. 그중 하나는 ‘장치는 가장 빈번한 오작동을 자동으로 인식하고, 외부에 보이는 신호로 오작동의 존재와 위치를 표시한 다음 멈출 수 있다’는 것이다. 폰 노이만의 논문은 현대적 컴퓨터를 향한 관문의 바로 앞에 위치해 있다. 오늘날 우리가 사용하는 기기의 특성을 반은 사실적이고 반은 추측적인 방식으로 설명하면서다. 현대 컴퓨터의 일반적인 아키텍처를 폰 노이만 아키텍처라고 부르는 이유다.

폰 노이만의 논문은 ‘물리적 장치뿐만 아니라 그 기능을 지배하는 산술적이고 논리적 배열에도 적용되는’ 일반 컴퓨터의 특성이 무엇인지 묻고 있다. 폰 노이만의 대답은 현대 디지털 컴퓨터를 대략적으로 보여주는 것이다.

진공관에 대한 언급
존 폰 노이만은 맨해튼 프로젝트에 참여했고, 게임 이론을 개척했으며, 양자역학에 기여하기도 했다. 그는 사고의 폭이 매우 넓었다. 하지만 ‘초고속 컴퓨팅 장치에는 진공관 소자가 이상적이라는 것은 분명하다’라는 그의 표현에 대해 곧바로 웃음을 터뜨리지는 말자.


3. 존 배커스 외(John Backuss et al.): IBM 수학 수식 번역 시스템, 포트란의 사양(Specifications for the IBM Mathematical FORmula TRANSlating System, FORTRAN) (1954)
포트란 사양은 공개적으로 발표되지는 않았지만, 언어 설계와 소프트웨어 전반에 강력한 영향력을 발휘했다.

지금은 프로그래밍 언어의 조상격에 해당하지만, 당시의 포트란은 고급 언어의 획기적인 발전이었다. 그것은 최초의 진정한 범용 언어였다.

1936년 튜링이 컴퓨터를 구상한 지 불과 28년밖에 지나지 않았다는 사실을 기억하면 포트란의 의의가 더욱 분명해진다.

포트란 사양은 당시의 감각을 잘 나타내고 있으며, 이후 언어 디자이너들이 채택한 모델을 만드는 데 도움을 주었다. 이 사양은 당시 하드웨어와 소프트웨어로 가능해진 존재에 대한 감각을 포착하고 있다.
 


4. 에드스헤르 다익스트라(Edsger Dijkstra): 유해한 것으로 여겨지는 고투문(Go To Statement Considered Harmful) (1968)
‘유해한 것으로 간주되는’이라 밈을 제시한 것 외에도, 에드스헤르 다익스트라의 1968년 논문은 따라 하기 어려운 고투문보다 루프와 조건부 제어 흐름이 가지는 우월성을 밝혔다. 뿐만 아니라 코드 품질에 대한 새로운 사고방식과 담론을 불러일으키기도 했다.

한 쪽 반 분량의 다익스트라 연구는 전체 환경, 프로그래밍에 대한 태도, 해당 분야를 바라보는 방식을 알려준다.

다음을 살펴본다:

그렇기 때문에 우리는 (우리의 한계를 알고 있는 현명한 프로그래머로서) 정적 프로그램과 동적 프로세스 사이의 개념적 간격을 줄이고, (텍스트 공간에 펼쳐진) 프로그램과 (시간에 펼쳐진) 프로세스 사이의 대응을 가능한 한 사소하게 만들기 위해 최선을 다해야 한다.

여기서 우리는 소프트웨어의 작성 및 런타임 구조뿐만 아니라 작업의 성격과 작업 내 인간의 역할에 대해 생각하게 된다. 이를 통해 열정적인 노력이라는 소프트웨어 엔지니어링 문화, 즉 오늘날 우리가 소프트웨어에서 하는 모든 일의 근간이 되는 문화를 엿볼 수 있다.

다익스트라의 짧은 논문은 고차 언어의 탄생을 이끌었고, 오늘날 우리가 사용하는 프로그래밍 언어에 한 걸음 더 다가갈 수 있게 했다.

5. 디피-헬먼(Diffie-Hellman): 암호화의 새로운 방향성(New Directions in Cryptography) (1976)
휘트필드 디피와 마틴 E. 헬먼이 작성한 디피-헬먼 논문은 3가지 점에서 주목할 만하다:

● 제안은 처음에 불가능해 보인다.
● 이 솔루션은 우아하고 이해하기 쉽다.
● 그것은 역사의 경로를 바꿨다. 

디피-헬만 키 교환이 어떻게 작동하는지 이미 알고 있다면, 이 논문이 왜 목록에 있는지 이미 알고 있는 셈이다. 공개 키/비대칭 암호화의 발견과 발명은 (HTTPS와 같은) 인터넷상의 모든 보안 통신의 토대를 마련했으며, 32년 후 비트코인 백서의 토대가 되었다.

등장 이후 ‘암호화의 새로운 방향’은 공개 통신과 NSA와 같은 정부 첩보 기관 간의 장대한 전투를 촉발시켰다. 소프트웨어와 역사 전반에 걸친 특별한 순간이었으며, 인류는 이를 기록으로 남겼다. 저자들은 자신들의 제안이 얼마나 급진적인지 잘 알고 있는 듯 보였는데, 결국 논문의 첫 문장은 다음과 같았다:

“우리는 오늘날 암호화 혁명의 문턱에 서 있다.”

6. 리차드 스톨만(Richard Stallman): GNU 선언(The Gnu Manifesto) (1985)
GNU 선언문은 어떤 의미에서 오픈소스 소프트웨어의 선언문이라고 할 수 있다. 또한 오늘날 많은 개발자가 수용하고 있는 프로그래밍 정신을 위한 대담한 주장이기도 한다:

GNU는 ‘Gnu’s Not Unix’의 약자로, 완전한 유닉스 호환 소프트웨어 시스템의 이름이며, 이를 사용할 수 있는 모든 사람에게 무료로 배포하기 위해 내가 글을 작성하고 있는 시스템이다. 다른 여러 자원봉사자들이 나를 돕고 있다. 시간, 돈, 프로그램 및 장비의 기부가 절실히 필요하다.

다음은 오픈소스의 기본 전제이다. (영리하고 자기 참조적인 이름에 주목할 것. OSS의 또 다른 비유다.) 이 논문은 대담한 프로젝트, 즉 누구나 사용할 수 있는 양질의 운영 체제를 설명하며 철학적 논의로 이를 뒷받침한다.

가독성이 뛰어나고 재미있게 작성된 이 선언문은 당시 업계를 지배하고 있던 비공개 소스이자 라이선스 유료화 모델에 반대하는 주장을 담고 있다. 역사를 통해 알고 있겠지만 믿기지 않게도 이 사건은 용감한 반란군이 승리한 사례 중 하나였다. 오늘날 오픈소스 소프트웨어는 어디에나 존재하며, 오픈소스 소프트웨어에 대한 애정과 이를 통해 생계를 유지하는 프로그래밍은 하나의 삶의 방식으로 자리잡았다.

GNU 선언문은 2023년에 깃허브 프로젝트를 위해 작성된 것처럼 읽힐 만큼 오늘날에도 여전히 신선하다. 이 목록에 있는 논문 중 가장 재미있는 논문이라고 할 수 있다.

7. 로이 필딩(Roy Fielding): 아키텍처 스타일과 네트워크 기반 소프트웨어 아키텍처 설계(Architectural Styles and the Design of Network-based Software Architectures) (2000)
필자가 시기를 후딱 넘겼다는 것을 알아차렸는가? 필딩이 REST 아키텍처 스타일을 소개한 논문은 2000년에 발표된 것이다. 그러나 이는 90년대 분산 프로그래밍 환경에서 얻은 교훈을 요약한 후 앞으로 나아갈 방향을 제시했다. 이런 점에서 이 논문은 20년간의 소프트웨어 개발 역사에서 중요한 위치를 차지하고 있다고 할 수 있다.

이 논문에서는 개발자들이 초기 인터넷에서 배운 모든 것을 정리하고 시급한 문제에 대한 해결책을 제시한다. REST가 중요한 이유는 현대 소프트웨어 복잡성의 핵심을 잘 찌르기 때문이다. 그렇기 때문에 20년 동안 아키텍처 의사 결정의 시금석으로 남아 있다.

웹 아키텍처에 적용되는 복잡성과 디자인에 대한 필딩의 논의는 오늘날의 개발자들에게 유용한 읽을거리다.

8. 사토시 나카모토(Satoshi Nakamoto): 비트코인: P2P 전자 현금 시스템(Bitcoin: A Peer-to-Peer Electronic Cash System) (2008)
지금은 유명한 나카모토 논문은 신원을 알 수 없는 사람(또는 집단이) 작성했다. 이 논문은 디지털 화폐의 모든 선행 기술을 한데 모아 주요 문제에 대한 해결책을 요약했다. 특히 비트코인 논문은 이중 지출 문제를 다루고 있다.

이 논문은 짧고 접근하기 쉬운 문서이다. 이 글은 이중 지출 문제를 평이한 언어로 개괄적으로 훌륭하게 설명한 다음 개념적인 대응책을 제시하고 솔루션의 구현 세부 사항 중 일부로 파고 든다.

이 논문이 미친 영향이나 그 후의 격렬한 반응에 대해서는 굳이 설명할 필요가 없을 것이다. 이 논문은 비트코인과 같은 단순한 화폐의 개념을 넘어 이더리움과 같은 분산형 가상 머신을 생성하는 데 암호화를 활용할 수 있는 엔진을 제안했다.

비트코인 논문은 복잡해 보이는 문제에 대해 간단하고 깔끔한 해결책을 제시하는 방법에 관한 훌륭한 예시이다.

9. 마틴 아바디 외(Martin Abadi et al.): 텐서플로우: 대규모 머신러닝을 위한 시스템(TensorFlow: A System for Large-Scale Machine Learning) (2015)
최신 대규모 언어 모델(LLM) AI 시스템으로 가는 여정 측면에서 중요한 이정표를 찾고 있다면 텐서플로우 백서가 제격이다. 이 백서는 일반화된 머신러닝 프레임워크에 대한 논의로서 의미가 있으며, 대표적인 AI 플랫폼인 텐서플로우를 소개한다.

이 논문은 머신러닝의 복잡한 측면을 다루고 있지만, “일련의 단어가 주어지면 언어 모델이 가장 가능성이 높은 다음 단어를 예측한다”와 같이 간결하게 정리되어 있기도 하다. 최신 채팅 AI에서 실제로 일어나는 일에 대한 간결한 요약인 셈이다.

마틴 아바디와 열거하기 어려울 정도로 많은 저자들이 작성한 이 논문은 특히 보다 일반화된 AI 플랫폼을 만드는 데 있어 텐서플로우의 세부사항에 초점을 맞추고 있다. 그 과정에서 머신러닝의 최신 기술에 대한 높은 수준의 훌륭한 여정을 제공한다. 머신러닝에 대해 궁금한 점이 있거나 이 분야를 더 깊이 이해하기 위해 평이한 언어로 된 입문서를 찾고 있는 분들에게 좋은 글이다. 여기를 클릭해 읽어볼 수 있다.

결론
이 기발한 여행에서 얻을 수 있는 소중한 교훈이 있다면, 아마도 새로운 아이디어와 접근 방식이 항상 존재한다는 것일 터다. 지금 이 순간에도 누군가는 어딘가에서 소프트웨어 개발의 세계를 뒤흔들 방법을 연구하고 있을 것이다. 그 사람이 바로 이 목록에서 10위에 오를 수 있는 논문을 쓰고 있을 당신일 수도 있다. 스스로의 아이디어를 포함해 엉뚱한 아이디어를 성급하게 무시하지 말아야 할 것이다.

* Matthew Tyson은 다크 호스 그룹의 설립자다. 자바월드와 인포월드에 2007년부터 기고해왔다. dl-ciokorea@foundryco.com

Matthew Tyson
Contributing Writer

Matthew Tyson is a contributing writer at InfoWorld. A seasoned technology journalist and expert in enterprise software development, Matthew has written about programming, programming languages, language frameworks, application platforms, development tools, databases, cryptography, information security, cloud computing, and emerging technologies such as blockchain and machine learning for more than 15 years. His work has appeared in leading publications including InfoWorld, CIO, CSO Online, and IBM developerWorks. Matthew also has had the privilege of interviewing many tech luminaries including Brendan Eich, Grady Booch, Guillermo Rauch, and Martin Hellman.

Matthew’s diverse background encompasses full-stack development (Java, JVM languages such as Kotlin, JavaScript, Python, .NET), front-end development (Angular, React, Vue, Svelte) and back-end development (Spring Boot, Node.js, Django), software architecture, and IT infrastructure at companies ranging from startups to Fortune 500 enterprises. He is a trusted authority in critical technology areas such as database design (SQL and NoSQL), AI-assisted coding, agentic AI, open-source initiatives, enterprise integration, and cloud platforms, providing insightful analysis and practical guidance rooted in real-world experience.

이 저자의 추가 콘텐츠