요약
게임 개발자 제임스 헤이그가 고전 교재 대신 자기 생각을 바꾼 덜 알려진 프로그래밍 책 다섯 권을 꼽았습니다.
1980년대부터 비디오 게임을 만들어 온 제임스 헤이그가 2008년 자신의 블로그에 쓴 글입니다. SICP(MIT의 고전 프로그래밍 교재) 같은 유명한 책은 이미 읽었다며, 덜 알려졌지만 오래 기억에 남은 책들을 소개했습니다.
왜 중요한가
- 유명세가 아니라 한 현업 프로그래머의 생각을 실제로 바꿨는지를 기준으로 고른 목록입니다.
- 언어 문법보다 문제를 나누고 실제로 푸는 방식을 보여 주는 책을 높이 평가했습니다.
핵심 내용
- Thinking Forth(레오 브로디, 1984)는 Forth 자체보다 문제를 쪼개고 코드를 구조화하는 법 때문에 꼽았습니다.
- 객체 지향이나 디자인 패턴 용어 없이 중복을 없애고 단순하게 짜라는 내용이 지금 설계 책처럼 읽힌다고 했습니다.
- Zen of Assembly Language(마이클 에이브래시, 1990)는 혼자 터득한 8비트 최적화 요령을 설명하고 넓혀 준 책입니다.
- Scientific Forth와 Fractals, Visualization, and J는 분야 전문가가 장난감 예제 대신 실제 문제를 푸는 책으로 함께 묶었습니다.
- 인터뷰집 Programmers At Work(수전 래머스, 1986)는 저자가 쓴 인터뷰집 Halcyon Days의 본보기가 됐습니다.
HN 반응
- 이용자들은 Higher-Order Perl, 찰스 펫졸드의 Code, The Elements of Computing Systems, K&R 같은 책을 더하며 목록을 넓혔습니다.
- 에이브래시 책이 386까지 다룬다는 보충이 나왔고, 지금은 추억용이라 주니어 개발자에게는 권하지 않는다는 반론도 있었습니다.
마크 제이슨 도미니스의 Higher-Order Perl은 어떻습니까?
https://hop.perl.plover.com/
그 밖에 눈에 잘 안 띄지만 훌륭한 책들입니다.
게리 윌리엄 플레이크의 The Computational Beauty of Nature
https://mitpress.mit.edu/9780262561273/the-computational-beauty-of-nature/
크리스토퍼 무어와 슈테판 메르텐스의 The Nature of Computation
https://nature-of-computation.org/
S. 다스굽타, C.H. 파파디미트리우, U.V. 바지라니의 Algorithms
https://cseweb.ucsd.edu/~dasgupta/book/index.html
그리고 당연히 On Lisp도 있죠.
https://www.paulgraham.com/onlisp.html
저도 Higher Order Perl을 추천합니다. 지인의 추천으로 올여름에 읽었습니다. 저는 Perl을 모르는데도, 이 책은 실용적인 함수형 프로그래밍 기법에 초점을 맞추고 있었고 각 주제를 창의적이고 흥미로운 근거로 풀어 줘서 다른 언어로도 얼마든지 다시 쓸 수 있겠다고 느꼈습니다. 훌륭한 책입니다.
The Nature of Computation은 저도 추천합니다. 글이 아주 잘 쓰였고 문제도 흥미롭습니다.
저에게는 아델 골드버그의 파란색 Smalltalk 책이 깊은 영향을 준 책이었습니다. 컴퓨팅을 제대로, 그것도 first principles에서부터 해낸 책이었습니다.
그 밖에 저를 만든 경험 두 가지는 3278 단말기에서 쓴 Cincom의 Mantis와 Dataflex 2였습니다. 둘 다 적절한 수준의 추상화만 있으면 화면에서 영속 데이터, CRUD, 애플리케이션 로직, 리포팅까지 얼마나 빨리 갈 수 있는지를 분명히 보여 줬습니다. 한참 뒤에 저는 Dataflex를 "VT100용 Rails"라고 설명하곤 했습니다. 안타깝게도 Cincom은 에뮬레이트한 4381에서 돌려 보겠다는 취미용 라이선스도 내주지 않고, 무료 매뉴얼조차 풀지 않습니다. Dataflex를 만든 회사(이름이 지금 기억나지 않네요)는 그 시절 버전을 아예 갖고 있지도 않은 것 같습니다. 폴 그레이엄의 Beating the Averages를 읽었을 때는 모든 것이 딱 맞아떨어졌습니다.
Programmers at Work는 이 글이 처음 올라왔을 때 읽고 나서 중고로 한 권 샀습니다. 구할 수만 있다면 정말 좋은 책입니다.
찰스 페졸드의 Code는 프로그래머라면 누구나 목록에 넣어야 하고, 현대 세계가 어떻게 돌아가는지 궁금한 사람의 목록에도 들어가야 합니다. 초보자도 읽을 수 있으면서 동시에 전문가에게도 통찰을 건네는 놀라운 재주를 어떻게든 해내는 책입니다. 정말 잘 쓴 책입니다.
지금은 사라진 스크래핑 사이트에 따르면 Code와 Elements of Computing Systems는 HN에서 가장 많이 추천된 책(상위 20위) 가운데 둘입니다.
The Elements of Computing Systems: Building a Modern Computer from First Principles
노암 니산, 시몬 쇼켄 저
https://openlibrary.org/works/OL21015000W/Elements_of_Computing_Systems
다른 건 몰라도 Programmers At Work에는 빌 게이츠가 프로그램 리스팅을 찾으려고 쓰레기통을 뒤졌다고 말하는 대목이 있습니다.
책 자체도 훌륭합니다. 게리(맞을 겁니다)가 데이터 구조의 중심성을, 그리고 코드가 거기서 자연스럽게 나온다는 것을 설명하는 방식이 참 좋았습니다.
그는 젊은 시절을 다룬 최근 자서전 "Source Code"(2025)에서 그 이야기와 비슷한 일화를 많이 썼습니다.
고전이죠!
뒷부분 얘기를 들으니 제 개인 서재에 있는 다른 책이 떠오릅니다.
Algorithms + Data Structures = Programs
니클라우스 비르트 저
https://openlibrary.org/books/OL5191055M/Algorithms_data_structures_programs
https://en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures_%3D_Programs
비르트의 책이 어떤 점에서 도움이 되셨나요?
비르트는 빠르게 쓰면서도 잘 씁니다.
아마 제가 처음으로 갖게 된 자료구조와 알고리즘 책이었을 겁니다(십대 때 도서관 중고책 판매에서 구했을 거예요). 그래서 많이 배웠다고 생각하지만 구체적인 내용은 기억나지 않습니다. 저는 Pascal을 쓰지 않았는데도 명료하고 요점이 분명했고, 도해가 좋고 인쇄도 깔끔했던 기억이 납니다. 저는 그걸 의사코드로 읽었습니다.
아주 아담한 양장본이라 배낭에 넣고 다니기 편했습니다.
게다가 제목도 기억에 남았고요.
아, 제가 어디든 들고 다녔던 책은 이 책이었던 것 같습니다.
Data Structures and Algorithms
아호, 홉크로프트, 울먼 저
https://openlibrary.org/books/OL3491774M/Data_structures_and_algorithms
어쨌든 두 권 다 갖고 있습니다.
감사합니다.
아호 외 저자들의 책도 Modula-3으로 되어 있었는데, 그게 딱 좋았습니다. Pascal 계열 언어는 알고리즘의 이유와 속살이 뚜렷하게 드러나게 해 주니까요. C는 그걸 가려 버립니다(너무 실용주의에 치우쳤죠).
비르트의 DS + A = P 책도 더 낫고 실무적인 언어인 Modula-2로 쓰였고 문장도 다듬어졌습니다. 어디를 찾아야 하는지 알면 지금도 구할 수 있습니다. (저는 독일어판을 갖고 있는데, 그분이 모국어로 하는 말을 듣고 싶었거든요. 참고로 저는 독일인이 아닙니다.)
Programmers at Work는 새 판이 나왔으니 이제는 구하기 더 쉬울 수도 있습니다! https://www.programmersatwork.net/the-book
Code가 훌륭하다는 데 동의합니다! 서점 책장에서 보게 되면 언젠가 2판도 사려고요.
책을 표지로 판단하는 얘기인 건 알지만, 저는 2판에 정말 실망했습니다. 1판에 비해 인쇄가 굉장히 싸구려예요.
그 멋진 감촉의 무광 흰색 표지 대신 검고 얇고 휘어지고 번들거리는 표지 재질에, 종이도 훨씬 얇고 질이 떨어집니다(분량은 더 긴데도 책은 훨씬 얇습니다).
저는 예전에 컴퓨터 과학이나 공학을 배우는 데 관심 있어 보이는 사람들에게 "이 책 정말 좋아요!" 하면서 'Code'를 선물하곤 했는데, 지금 돌아보니 부끄럽게도 그만두었습니다. 이제는 이 책이 잘 만든 대중 과학서라기보다 싸게 만든 교과서처럼 느껴지기 때문입니다.
그 책은 386까지 다룹니다. 다만 토대가 8086에 뿌리를 두고 있고, 그게 책에서 큰 비중을 차지할 뿐입니다.
제가 가장 좋아하는 책(또는 가장 오래 붙들고 지낸 책)이자 저에게 가장 큰 영향을 준 책은 다음과 같습니다.
Tom Swan의 Mastering Turbo Assembler
마이클 아브라시의 Zen of Graphics Programming
마이클 아브라시의 The Zen Of Assembly Language
Richard F. Ferraro의 Programmer's Guide to the EGA, VGA, and Super VGA Cards
Hans-Peter Messmer의 The Indispensable PC Hardware Book
좋네요. 마침 아브라시의 그래픽스 책 제목을 찾고 있었습니다.
같은 출판사에서 나온 다른 책으로는 이런 게 있습니다.
Assembly Language Magic: Programming for the 8088-80386 (윌리엄 H. 머리 저)
https://openlibrary.org/books/OL2192212M/Assembly_language_magic
저는 RISC 어셈블리 입문서도 아주 재미있게 읽었습니다.
SPARC Architecture, Assembly Language Programming, and C (리처드 P. 폴 저)
https://openlibrary.org/books/OL9285324M/SPARC_Architecture_Assembly_Language_Programming_and_C_(2nd_Edition)
VAX나 68k, 6502 어셈블리(아니면 ARM)에 추천할 만한 책이 있나요?
이건 재미있어 보이는 책입니다(제가 다니는 도서관에서는 아직 주문해 주지 않네요..).
Classic Game Programming on the NES: Make your own retro video game
토니 크루즈 저, 2024년 출간.
https://www.manning.com/books/classic-game-programming-on-the-nes
현실로 옮기고 싶어 몸이 근질거리는 멋진 NES 게임 아이디어가 있습니까? Classic Game Programming on the NES가 방법을 알려 드립니다. 철저히 실전 중심인 이 입문서는 그래픽과 음악부터 적 AI, NES의 성능을 최대한 끌어내는 데 필요한 6502 어셈블러 언어까지 단계별로 안내합니다.
https://www.amazon.com/dp/1633438015
오, 좋은 선택이네요. 관심 가질 만한 다른 책도 추천드립니다.
Dominic Sweetman의 See MIPS Run: Second Edition
스티브 퍼버의 ARM System-on-Chip Architecture
저는 두 권 다 아주 좋아합니다.
저도 See MIPS Run을 생각하고 있었습니다. 늘 한 권 갖고 싶었고, 오래전에 한두 번 빌려 본 적이 있습니다.
그런데 패터슨과 헤네시로 바로 가면 안 되나요?
Computer Architecture: A Quantitative Approach
https://openlibrary.org/works/OL2664271W/Computer_architecture
Computer Organization and Design: The Hardware/Software Interface
https://openlibrary.org/works/OL2956523W/Computer_organization_and_design
최신 ARM을 다룬 책이 하나 더 있습니다.
Blue Fox: Arm Assembly Internals and Reverse Engineering
마리아 마르크슈테더 저
https://www.wiley.com/en-au/shop/general-introductory-computer-science/blue-fox-arm-assembly-internals-and-reverse-engineering-p-9781119745303
MIPS를 다룬 Sweetman의 책은 OS 내부 구조와 그것이 하드웨어와 정확히 어떻게 맞물리는지를 배우기에 가장 좋은 책 중 하나입니다.
여기에 보완이 되는 훌륭한 책으로 Curt Schimmel의 Unix Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers가 있습니다.
Furber의 책을 보완해 주는 훌륭한 책으로는 마이클 플린과 웨인 룩의 Computer System Design: System-on-Chip이 있습니다.
그리고 물론 고전인 앤드루 슬로스 외의 ARM System Developer's Guide: Designing and Optimizing System Software도 꼭 읽어야 합니다.
이 책은 정말 좋습니다.
요즘 아브라시의 책들은 향수를 달래는 용도일 뿐이라, 실력을 끌어올리려는 주니어 개발자에게 추천하지는 않겠습니다(타이머 사용을 다룬 장은 예외입니다). 대신 이런 책들을 추천합니다.
Pekka Enberg의 Latency
마라 보스의 Rust Atomics and Locks
크리스 카스퍼스키의 Code Optimisation
관련 글입니다. 더 있나요?
Five Memorable Books About Programming - https://news.ycombinator.com/item?id=3917165 - 2012년 5월 (댓글 1개)
Five Memorable Books About Programming - https://news.ycombinator.com/item?id=128054 - 2008년 3월 (댓글 14개)
피터 반 데르 린덴의 Expert C Programming은 이런 토론에서 자주 거론됩니다. 제가 가장 좋아하는 책 중 하나입니다.
이것도 해당될까요?
린다 램의 Learning the Vi Editor
https://openlibrary.org/books/OL36777015M/Learning_the_Vi_Editor
그나저나 vi가 지난주에 50주년을 맞았습니다.
https://news.ycombinator.com/item?id=50403300
훌륭한 책들입니다. 저는 지난달 올라온 아래 목록에 Zen of Assembly Language와 리오 브로디의 책들을 추천하려던 참이었습니다.
Show HN: 아마 한 번도 읽어 본 적 없을 가장 희귀한 기술 서적과 문서( https://readrare.com/ )
191 포인트|miletus|29일 전|댓글 67개
https://news.ycombinator.com/item?id=50024055
저에게 프로그래밍을 다르게 보게 해 주고 가장 많이 가르쳐 준 책은 데니스 리치의 The C Programming Language였습니다.
브라이언 커니핸과 dmr의 머리글자를 딴 K&R 말씀이시죠.
어느 USENIX ATC에서 제 책에 사인을 받지 못한 게 아직도 아쉽습니다.
..사실 그때 와 있던 사람은 브라이언이 아니라 켄, 롭과 함께 온 데니스였지만요.