📚 우리 프로그래머들

[!INFO] 책 정보
- 저자: 저자/로버트_C_마틴
- 번역: 번역/최희철
- 출판사: 출판사/길벗
- 발행일: 2026-01-20
- origin_title: -
- 나의 평점: 7
- 완독일: 2026-02-06 12:02:08
1. 🖐️ Before Reading (읽기 전)
1.1 동기와 기대
2. 📜 Synopsis (LLM)
Summery
이 책은 소프트웨어 개발 업계의 선도적 인물인 로버트 C. 마틴이 약 60년간 겪은 경험과 프로그래밍 역사를 통해 프로그래머의 본질과 정신을 탐구합니다. 컴퓨터의 탄생부터 AI 시대에 이르기까지 기술은 끊임없이 변화했지만, 문제를 정의하고 책임지며 세상을 더 나은 방향으로 이끌고자 하는 프로그래머의 정신은 변치 않았음을 강조합니다. AI 시대에 프로그래머의 미래에 대한 불안감을 느끼는 이들에게 도구는 달라져도 방향을 결정하는 존재는 여전히 사람, 즉 프로그래머라는 명확한 메시지를 전달합니다.
Keyword
#힐베르트, #프로그래밍 언어, #주디스, #튜링, #소프트웨어 엔지니어, #밀레니엄
Author
저자(글): 로버트 C. 마틴 Robert C. Martin(엉클 밥)은 1970년부터 프로그래머로 일해 왔으며, 엉클 밥 컨설팅(Uncle Bob Consulting, LLC)의 설립자이자 클린 코더스(Clean Coders, LLC)의 공동 설립자입니다. 그는 수십 편의 글을 기고하고 국제 콘퍼런스에서 강연하며, 『Clean Code』, 『The Clean Coder』 등 다수의 저서를 집필했습니다. ‘The C++ Report’ 편집장을 지냈고, 애자일 얼라이언스의 초대 의장을 역임했습니다. 로버트 C. 마틴(Robert C. Martin)은 소프트웨어 업계에서 ‘엉클 밥(Uncle Bob)’ 이라는 애칭으로 더 잘 알려진 인물로, 현대 프로그래밍의 표준을 정립한 살아있는 전설 중 한 명
- 현대 소프트웨어 설계 원칙의 설계자
그는 객체 지향 설계의 핵심인 SOLID 원칙을 정립한 인물입니다. 유지보수가 쉽고 유연한 코드를 작성하기 위한 다섯 가지 원칙($S, O, L, I, D$)은 오늘날 전 세계 개발자들에게 ‘성경’과 같은 지침이 되었습니다. 또한, 2001년 ‘애자일 선언문(Agile Manifesto)‘을 작성한 17명의 창립 멤버 중 한 명으로서 소프트웨어 개발 프로세스의 혁신을 주도했습니다.
- 깨끗한 코드와 장인 정신의 전파자
그는 단순한 ‘코딩 기술’을 넘어 프로그래머의 ‘장인 정신(Craftsmanship)’ 을 강조합니다. 베스트셀러인 Clean Code, The Clean Coder, Clean Architecture 시리즈를 통해, 전문가라면 자신이 작성한 코드의 품질과 비즈니스 가치에 대해 끝까지 책임을 져야 한다는 직업윤리를 전파해 왔습니다.
- 실천하는 교육자이자 사상가
1970년대부터 프로그래밍을 시작한 그는 수십 년간 현장에서 쌓은 경험을 바탕으로 기술적 통찰을 제공합니다. 특히 이번 신작 <우리, 프로그래머들> 에서 알 수 있듯, 그는 단순히 기술 전달에 그치지 않고 프로그래밍의 역사와 미래, 그리고 AI 시대에 인간 프로그래머가 가져야 할 본질적인 가치에 대해 끊임없이 화두를 던지는 사상가적 면모를 보이고 있습니다.
로버트 C. 마틴은 기술적 원칙(SOLID)과 방법론(Agile)을 정립했을 뿐만 아니라, 프로그래머를 단순한 노동자가 아닌 책임감 있는 전문직으로 격상시킨 업계의 거장입니다.
요약하자면, 로버트 C. 마틴은 SOLID 원칙과 애자일 선언을 통해 현대 소프트웨어 공학의 기틀을 마련하고, 프로그래머의 장인 정신과 윤리적 책임을 강조해 온 업계의 선구자입니다
번역: 최희철 곰씨네IT를 비롯한 다양한 블로그를 운영하는 개발자입니다. 2010년부터 LG CNS에서 소프트웨어 엔지니어로 근무하며 여러 프로젝트에 참여했습니다. 2017년 미국으로 이주해 매사추세츠 주립대에서 컴퓨터 공학 석사 학위를 취득했으며, 현재 휴스턴의 Applied Optoelectronics Inc.에서 풀스택 소프트웨어 엔지니어로 재직 중입니다. 저서로는 『개발자가 영어도 잘해야 하나요?』, 번역서로는 『이펙티브 소프트웨어 아키텍처』가 있습니다.
3. 🔆 Insight & Deep Dive
3.1 깨달은 점 (Aha Moment)
3.2 비판적 사고 (Critical Thinking)
3.3 내 삶에 적용하기 (Action Item)
4. 🏆 Top Highlights
📌 첫 번째 문장
(내용 입력)
📌 두 번째 문장
(내용 입력)
📌 세 번째 문장
(내용 입력)
📌 네 번째 문장
(내용 입력)
📌 다섯 번째 문장
(내용 입력)
5. 📌 Key Concepts
5.1 핵심 키워드 정리
키워드 1: 컴퓨터
- 
)
키워드 2: 그레이스 호퍼가 개발한 .. A형, B형, 언어 -> 컴파일러
- A형과 B형은 각각 산술과 비즈니스를 위해 호퍼가 만든 초기 컴파일러 시스템이며, C-10은 이 시스템들이 최종적으로 생성해낸 UNIVAC I 컴퓨터 전용 기계어 코드
- C-10 코드: UNIVAC I의 ‘진짜 언어’ 가 어렵기 때문에 A-0 A형 언어로 작성하면 -> 컴파일러가 C-10 명령어 코드로 변환해준다.
- 호퍼가 1952년 개발한 A-0(Arithmetic Language version 0) 는 세계 최초의 컴파일러로 불립니다. 여기서 ‘A’는 산술(Arithmetic)을 의미합니다.
- 등장 배경: 당시에는 컴퓨터(UNIVAC I)에게 일을 시키려면 모든 명령을 복잡한 숫자로 입력해야 했습니다.
- 혁신: 호퍼는 자주 쓰는 수학적 계산 루틴들을 메모리에 미리 저장해두고, 사용자가 간단한 ‘기호(Call)‘만 입력하면 시스템이 이를 찾아 연결해 주도록 만들었습니다. 이것이 바로 A형 시스템이며, 나중에 더 발전된 버전인 A-2가 널리 쓰이게 되었습니다.
- C-10은 특정 프로그래밍 언어의 이름이라기보다, 당시 호퍼가 사용했던 컴퓨터인 UNIVAC I(유니박 1)이 직접 알아듣는 기계어(Instruction Set)
- 작동 원리: 사용자가 A형 시스템(A-0 등)을 이용해 수학 기호로 명령을 내리면, 컴파일러가 이 명령들을 컴퓨터가 실제로 실행할 수 있는 숫자의 나열인 C-10 코드로 변환(Compile)해 주는 것입니다.
- **A형(사람이 쓰는 기호) → 컴파일러 → C-10(기계가 읽는 숫자 코드)**의 과정을 거치게 됩니다.
- B형 시스템 (B-0): 코볼(COBOL)의 직계 조상
- 비즈니스 업무(급여 계산, 재고 관리 등)를 위해 **B-0(Business Language version 0)**를 개발
- 이것이 나중에 FLOW-MATIC이라는 이름으로 불리게 되는데, 가장 큰 특징은 “ADD”, “MOVE”, “READ” 같은 실제 영어 단어를 사용했다는 점
- B-0(FLOW-MATIC)의 설계 철학이 그대로 이어져, 훗날 전 세계적으로 쓰인 코볼(COBOL) 이 탄생하게 됩니다.
| 단계 | 명칭 | 성격 | 역할 |
|---|---|---|---|
| 입력 (Source) | A-0 / B-0 | 고수준 언어 (기호/단어) | 사람이 명령을 내리는 방식 |
| 도구 (Compiler) | A형/B형 컴파일러 | 번역기 | 사람의 언어를 기계어로 변환 |
| 결과 (Object) | C-10 코드 | 기계어 (Instruction) | UNIVAC I 컴퓨터가 직접 실행하는 코드 |

6. 🖍️ Book Marks
- 1950년대~1960년대: 언어의 탄생과 구조화의 시작
- 1970년대~1990년대: 객체 지향과 개인용 컴퓨터의 확산
- 2000년대~현재: 애자일, 클라우드, 그리고 AI와의 공존
| 시대 | 주요 특징 | 대표 언어/기술 |
|---|---|---|
| 1950-60s | 하드웨어 종속 탈피, 고급 언어 탄생 | FORTRAN, COBOL, LISP |
| 1970-80s | 효율적 시스템 구축, 구조적 프로그래밍 | C, Pascal, Smalltalk |
| 1990-00s | 복잡성 관리, 객체 지향 및 웹의 확산 | Java, C++, Python, PHP |
| 2010s-현재 | 유연한 개발(Agile), 클라우드, AI 협업 | Go, Rust, TypeScript, LLM |
1부. 서막을 열며
1장. 우리는 누구인가?
우리(프로그래머)가 필요한 이유는 무엇일까요? 왜 사람들은 우리가 하는 일을 하라고 돈을 지불할까요? 왜 그들이 스스로 하지 않을까요?
…우리는 디테일을 사랑합니다. 사람들은 아이디어는 있지만, 그것을 어떻게 피씨나 스마트폰에 표시하고 구현해야 하는지 모른다. …이렇게 대부분의 사람이 디테일을 피하려고 하는 한 그 디테일 속으로 뛰어드는 우리 같은 사람도 반드시 필요합니다. 그것이 바로 우리 정체성입니다. 우리는 이 세상 디테일을 책임지는 사람입니다.
2부. 거장
2장. 배비지, 최초의 컴퓨터 엔지니어
찰스 배비지 1791년 영국
단순 계산을 담당하던 사람들은 당시 ‘컴퓨터computers’ 라고 불렀습니다. 그들은 반복적으로 덧셈을 수행하며 각 구간의 항목을 차근차근 채워 나갔습니다. …급여는 형편없었고 일은 지독할 만큼 힘들었습니다. 그리고 이 모든 작업은 오직 연필과 종이로 이루어졌습니다. 보통 이 ‘컴퓨터’들은 두 팀으로 나누어 동일한 작업을 맡았습니다. 양쪽이 모두 완벽하게 계산을 수행헀다면 결과는 정확히 일치해야 합니다. 그것을 1821년 여름 어느 운명적인 날에 배비지와 허셜이 확인하고 있었습니다.
내가 감히 예언하건데, 수학 공식을 수치화하기 위해 들어가는 이 막대한 노동은 지속적으로 과학 발전을 저해하는 요소로 작용할 것이다. 이런 수치 계산의 압도적인 부담에서 해방시켜 줄 내 아이디어 또는 이와 동등한 어떤 방식이 마련되지 않는다면, 결코 과학은 크게 진보하지 못할 것이다.
오직 덧셈만 하는 기계를 만들었고, 보수 를 이용해 그기계로 음수도 표현했ㄷ.
65 배비지는 분명 프로그래머입니다. 그는 기호화 숫자 사이의 연관성을 이해했고, 숫자를 조작할 수 잇는 기계라면 그 연관성을 통해 기호도 조작할 수 있다는 사실을 알았습니다.
에이다:러브레이스 백작 부인
조지 고든 바이런
..[메리와 메리](메리와 메리) 에 나오던 그 바이런이 맞다. (호수에서 유령이야기를 써보자고,,,메리가 프랑켄슈타인을 쓰게 되는..)
바이런의 시들..그리고 바람기… 그는 빚을 처리하기 위해
부유한 삼촌의 상속인이 될 가능이 큰 애너벨라 밀뱅크에게 청혼, 결혼한다.
둘이 결혼하여 어거스타 에이다 바이런(딸)이 태어난다.
에이다 .. 아버지와 떨어져 살고, 외할머니가거의 키운다. 수학을 공부했다. 에이지는 찰스 배비지 의 기계에 빠져들어 프로그래머가 됩니다.
…에이다 는 종종 ‘최초의 프로그래머’라고 평가 받기도 한다.
최초의 프로그래머
배비지와 에이다는 분명히 최초의 공동 프로그래머 였다.
차분 기관2가 작동하는 모습 Youtube The Babbage Difference Engine #2
[찰스 배비지-에이다 차분 기관No2-현대 컴퓨터 조상,19세기 기계 공학 위대한 발명품](찰스 배비지-에이다 차분 기관No2-현대 컴퓨터 조상,19세기 기계 공학 위대한 발명품)
3장. 힐베르트, 튜링, 그리고 폰 노이만: 최초의 컴퓨터 아키텍트
힐베르트 프로그램 그는 현대 컴퓨터 과학의 근간이 되는 ‘논리적 한계’라는 거대한 화두를 던짐으로써, 앨런 튜링과 폰 노이만이 활동할 수 있는 무대를 마련해 준 인물 “우리는 알아야만 한다, 우리는 알게 될 것이다(Wir müssen wissen, wir werden wissen)“라는 유명한 말을 남기며, 세상의 모든 수학적 문제가 명확한 규칙에 따라 해결될 수 있다고 믿었습니다. 힐베르트가 “모든 것이 계산 가능한가?“라고 물었기에, 튜링은 “계산 불가능한 것이 존재한다"는 것을 증명하기 위해 컴퓨터의 원형을 설계할 수 있었던 것입니다. 다비트 힐베르트는 수학적 ‘결정 문제’를 제기함으로써 앨런 튜링이 컴퓨터의 논리적 모델인 ‘튜링 기계’를 창안하게 만든, 현대 컴퓨터 과학의 이론적 시발점을 제공한 인물.
(컴퓨터 역사에서 핵심) 🎯 힐베르트의 목표 수학을 ① 완전하고(Complete) ② 모순 없고(Consistent) ③ 기계적으로 증명 가능한 체계로 만들자 즉, • 모든 수학 명제는 • 정해진 규칙(알고리즘) 으로 • 기계처럼 판정할 수 있어야 한다 👉 이 발상이 컴퓨터 사고의 출발점
힐베르트가 괴팅겐 대학교 교수로 재직 펠릭스 클라인, 헤르만 바일, 에마뉘엘 가스커, 앨론조 처치, 에미 뇌터, 헤르만 민코프스키, 존 폰 노이만 수학자 제자.
4장. 그레이스 호퍼: 최초의 소프트웨어 엔지니어
그레이스 호퍼 , 추상적 언어로 프로그래밍하면 숫자로된 기계어로 변환 -> 컴파일러 라고 불렀다. 프로그래밍이라는 분야를 체계적으로 정립한 사람 최초의 소프트웨어 엔지니어
1. 인간의 언어로 코딩하는 ‘컴파일러’의 발명
초창기 프로그래밍은 0과 1로 된 기계어나 복잡한 어셈블리어를 직접 입력해야 했습니다. 호퍼는 “사람이 기계의 언어를 배울 것이 아니라, 기계가 사람의 언어를 이해해야 한다"는 혁신적인 생각을 가졌습니다. 1952년, 그녀는 영어로 된 명령어를 기계어로 번역해 주는 세계 최초의 컴파일러인 A-0를 개발했습니다. 이는 현대 모든 프로그래밍 언어의 근간이 되는 기술적 혁명이었습니다.
2. 비즈니스 언어의 표준, 코볼(COBOL)의 어머니
호퍼는 컴파일러 기술을 바탕으로 프로그래밍의 대중화를 이끌었습니다. 그녀는 수학자뿐만 아니라 일반 비즈니스 종사자들도 컴퓨터를 사용할 수 있도록 영어 문장 구조를 닮은 코볼(COBOL) 언어를 설계하는 데 중추적인 역할을 했습니다. 코볼은 전 세계 금융 및 행정 시스템에서 수십 년간 표준으로 사용되었으며, 소프트웨어의 ‘범용성’과 ‘이식성’이라는 개념을 확립했습니다.
3. ‘디버깅(Debugging)’ 용어의 유래와 실천적 리더십
오늘날 개발자들이 매일 쓰는 ‘버그(Bug)’ 와 ‘디버깅’ 이라는 용어를 대중화시킨 주인공이기도 합니다. 1947년 하버드 마크 II 컴퓨터가 고장 났을 때, 회로 사이에 끼어 있던 실제 ‘나방(Moth)‘을 발견하여 제거한 뒤 “버그를 잡았다"라고 기록한 일화는 유명합니다. 그녀는 단순한 이론가를 넘어 현장에서 문제를 해결하고 시스템을 최적화하는 ‘엔지니어링’의 정수를 보여주었습니다.
그레이스 호퍼의 주요 업적 요약
| 업적 | 내용 | 현대적 의의 |
|---|---|---|
| 최초의 컴파일러 개발 | A-0, B-0(Flow-Matic) 제작 | 고수준 언어(C, Python 등) 탄생의 토대 |
| 코볼(COBOL) 설계 | 비즈니스용 공통 언어 제정 주도 | 소프트웨어의 표준화 및 대중화 기여 |
| 용어 대중화 | ‘버그’와 ‘디버깅’ 사례 기록 | 소프트웨어 유지보수 및 품질 관리 개념 정립 |
| 해군 제독(Admiral) | 미 해군 소프트웨어 표준화 지휘 | 대규모 시스템 설계 및 프로젝트 관리의 선구 |
그레이스 호퍼는 기술적 한계를 넘어 ‘인간 중심의 컴퓨팅’을 꿈꿨던 선구자였으며, 그녀의 노력 덕분에 프로그래밍은 소수 전문가의 영역에서 인류 보편의 도구로 확장될 수 있었습니다.
요약하자면, 그레이스 호퍼는 세계 최초의 컴파일러를 발명하고 코볼 언어를 설계함으로써, 기계 중심의 프로그래밍을 인간 중심의 언어로 혁신한 진정한 의미의 최초 소프트웨어 엔지니어입니다.
호퍼 제독이 생전에 “허락을 구하는 것보다 용서를 구하는 것이 쉽다"는 유명한 말을 남겼는데, 이런 그녀의 도전적인 태도가 정말 멋지지 않나요?
124 프로그램에 반복문이 있으면 기계는 각 반목문이 끝날 때마다 멈추었고, 운영자들은 지침에 따라 종료 조건을 직접 확인했습니다. 종료 조건이 충족되지 않으면 사람이 직접 테이브를 반복문의 시작 지점까지 되감았습니다. 반복문의 시작 위치는 일반적으로 테이프에 표시되어 있었으며, 종료 조건은 운영자가 메모리 레지스터를 직접 확인하고 판단했습니다.
127 마크 1 , 너무 느려서, 곱셈 연산 하나를 수행하는데 10초가 걸렸고, 이 시간 이면 다른 명령어 10개를 수행할 수 있는 시간이라. 파이프라이닝, 멀티프로세싱 개념을 고안, 여러 프로세스가 동시에 수행 되도록 ,,,,…
147 호퍼는 프로그래밍이 인간의 언어처럼 될 수 있다는 가능성을 보기 시작했습니다.
코볼 : 1955~ 1960년
COmmon Business Oriented Langeuge. COBOL 코볼은 여러 언어와 아이디어가 혼합된 하이브리드 언어 FLOW-MATIC이 중요한 역할을 했지만, FLOW-MATIC에서 파생된 IBM의 COMTRAN과 공군의 AIMACO에서도 많은 부분을 가져왔다. #1960년 8월 17일 코볼의 첫 번째 성공적인 컴파일 실행됨
코볼 배우기 - https://youtu.be/7d7-etf-wNI?si=lnKKagaOeSrPurnK
154 당시 국방부는 여러 제조사의 컴퓨터 200대 이상을 운용 중이었고, 그에 맞먹는 수량의 컴퓨터를 추가로 주문한상태였다.
5장. 존 배커스: 첫 번째 고수준 언어
FORTRAN 언어개발
베커스 팀의 고민거리 중 하나는 “컴파일러가 소스 코드를 어떻게 입력받을 것인가?” 오늘날 소스 코드는 텍스트 파일 형태를 가지고 있으며, 파일 이름이 있고 파일 시스템의 디렉터리에 저장됩니다. 하지만, 당시에는 텍스트 파일도, 디렉터리도, 파일 시스템도 없었습닏.ㅏ 당시에 프로그램이란 구멍이 뚫린 종이테이프나 카드를 의미했습니다.
NASA에서 여전히 포트란을 사용하는 사람들이 있다.. 기존에 구축된 라이브러리나 운용중인 우주 탐사선 때문에..
6장. 에츠허르 다익스트라: 첫 번째 컴퓨터 과학자
다익스트라의 전정한 유산은 하드웨어에 대한 과도한 집착을 넘어서 추상화의 중요성을 강조하고, 이를 프로그램밍 업계에 정착시킨 데 있습니다.
7장. 니가드와 달: 첫 번째 OOPL
8장. 존 케메니: 모두를 위한 첫 번째 언어, BASIC
존 폰 노이만이 제시한 컴퓨터
- 완전히 전자식 컴퓨터일 것
- 수를 이진법으로 표현할 것
- 대용량 내부 메모리를 갖출 것
- 프로그램을 데이터와 함께 메모리에 저장하여 실행할 것
- 범용적 성격을 지닐 것
‘프로그래밍 언어는 사람을 중심으로 설계되어야 한다’ 는 케메니의 신념은 훗날 ‘모든 사람이 컴퓨터를 사용할 수 있도록 해야 한다’는 잀생 과제로 이어집니다
9장. 주디스 앨런
10장. 톰프슨, 리치, 커니핸
[UNIX os와 c 언어의 탄생과 확산 내용](UNIX os와 c 언어의 탄생과 확산 내용)
3부. 급격한 전환점
11장. 1960년대
12장. 1970년대
13장. 1980년대
14장. 1990년대
15장. 밀레니엄
4부. 미래
16장. 프로그래밍 언어
너무 많은 개발언어들
만약 한개만 남개 된다면 리스프 lisp 언어가 남게될것이다.
17장. AI
LLM만든 코드는 짜집기 수준이다. 인간이라면 작성하지 않았을…
LCM(Large Code Model)은 도구일 뿐입니다. C도 도구고, 클로저도 도구이며, IDE도 도구인것 처럼 말이죠. 도구는 결국 사람이 이용해야 합니다.
컴퓨터를 활용할 수 있는 분야는 아직도 무궁무진하기 때문에…실제로 현재 이미 있은 응용프로그램보다 앞으로 만들어질 잠재적 응용 프로그램의 수가 훨씬 더 많습니다. …AI와 LCM이 아무리 똑똑해진다 해도 그들이 처리하지 못하는 디테일은 항상 있으며, 바로 그 부분이 우리의 역할이기 때문입니다. …우리는 여전히 프로그래머일 것입니다. 디테일을 다루어야 하는 사람이 바로 우리이기 때문입니다. 그런 디테일은 앞으로도, 언제나, 항상 있을 수밖에 없습니다.
18장. 하드웨어
CPU클럭 속도는 한계에 도달… 이제 연산 능력을 더 높이려면 컴퓨터 대수를 늘리고, 그것들을 효율적으로 연결할 방법을 찾아야 합니다. 이것이 프로세서 칩에 다중 코어가 등장한 이유이며, 클라우드 컴퓨팅이 중요해진 주요 원인 중 하나입니다.
이제 폰 노이먼 구조의 컴퓨터는 한계에 도달..
이제는 양자 컴퓨팅… 아직은 갈길이 멀기는 하다.
19장. 월드 와이드 웹
웹도 점점 사라지게 될것… 구지 브라우저로 특정 웹에 접근할 필요가 없어질것. 서로 소통하는 프로그램만 있으면 될것.. 그 모든것이 전부 리스프로 만들어지기를…
결국 리스프…
20장. 프로그래밍
원칙
지난 50년간 소프트웨어 역사에서 소프트웨어 원칙에 대한 눈에 띄는 발전은 거의 없었다. 구조적, 함수형, 객체지향이라는 세가지주요패러다임은 1970년대 이미 모두 등장 …저는 앞으로 50년간 현재의 소프트웨어 원칙에서 극적인 변화가 일어나리라고기대…
집필 후기
용어집
등장 인물 소개
7. 🤔 Rambling
-
찰스 배버지 가 고안한 2가지
- 차분 기관 -> 계산기
- 해석 기관 -> PC 개념ㅇ,로, 메모리와 연산기, 입력 출력의 구조를 만듬
-
앨런 튜링
-
존 폰 노이만
- [찰스 배버지 > 앨런 튜링 > 노이만으로 완성되는 컴퓨터](찰스 배버지 > 앨런 튜링 > 노이만으로 완성되는 컴퓨터)
-
힐베르트 -> [존 폰 노이만](존 폰 노이만) 그의 제자, -> 괴델의 “증명 불가능한 명제들이 존재한다-불완전성 정리"라는 발표 에 충격 -> 힐베르트의 “수학적 증명” 불가능 깨달음 “수학이 불완전” -> 노이만 양자역학으로 관심사 전환
-
그레이스 호퍼,,, 고급 프로그래밍 언어 개발의 창조자 ->코볼의 탄생
-
전쟁에서 승리하기 위한, 국방부가 IT기술을 발전시킨다
8. 🔗 References
LISP 언어..
좋은 질문이야 👍 Lisp를 소중하게 말하는 데에는 이유가 분명히 있어. 다만 현실적인 한계도 같이 봐야 제대로 이해돼.
형이 맥락부터 차근히 정리해줄게 😊
⸻
1️⃣ Lisp 한 줄 요약
Lisp는 “코드를 데이터처럼 다루는” 가장 오래되고, 가장 급진적인 언어다.
그래서 지금도 언어 설계자·AI 연구자·해커들이 존경해.
⸻
2️⃣ Lisp는 왜 특별한가 (핵심 특징)
🔑 1) 코드 = 데이터 (Homoiconicity)
(+ 1 2)
• 이 코드는:
• 실행 가능한 코드이면서
• 동시에 리스트 데이터
👉 프로그램이 자기 자신을 조작 가능
⸻
🔑 2) 매크로 시스템 (Lisp의 영혼) • C 매크로 ❌ (문자 치환) • Lisp 매크로 ⭕ (문법 확장)
👉 언어 위에 언어를 만든다
예: • DSL (도메인 전용 언어) • 새로운 문법 • 새로운 제어 구조
⸻
🔑 3) 함수형 프로그래밍의 시조 • 고계 함수 • 재귀 • 불변 데이터 • 클로저
👉 Java, Python, JS가 나중에 따라온 개념들
⸻
🔑 4) REPL 중심 개발 • 컴파일 → 실행 ❌ • 실시간 코드 수정 ⭕
👉 시스템 안 멈추고 고침 (이건 지금도 다른 언어가 잘 못함)
⸻
3️⃣ Lisp의 장점 (왜 아직도 존중받나)
✅ 장점 요약
장점 설명 표현력 같은 일을 가장 짧게 표현 추상화 문제를 문제처럼 표현 메타프로그래밍 언어 확장 가능 생산성 연구·실험 속도 매우 빠름 장수 60년 넘게 살아남음
💡 그래서 이런 말이 있음:
“Lisp를 아는 사람은 다른 언어를 다르게 본다”
⸻
4️⃣ Lisp의 단점 (현실적인 이유)
❌ 단점 요약
단점 이유 괄호 지옥 가독성 장벽 😵 진입 장벽 사고 방식이 다름 생태계 상용 라이브러리 부족 인력 실무 개발자 적음 성능 예측 JVM/C++보다 튜닝 어려움
👉 회사·대규모 서비스에는 불리
⸻
5️⃣ Lisp 계열 언어들 • Common Lisp • Scheme • Clojure (JVM 위 Lisp) • Racket • Emacs Lisp
👉 “Lisp”는 하나의 언어가 아니라 사상
⸻
6️⃣ 현재 세계에서 Lisp의 점유율은?
📊 아주 솔직하게 말하면 • 전체 개발 언어 사용량 기준 • 👉 1% 미만 • GitHub / StackOverflow 기준 • 👉 0.x% 수준
📌 하지만 이 수치는 의미를 반만 말해줌
⸻
7️⃣ Lisp가 주로 쓰이는 분야
🧠 1) 인공지능 (전통적 AI) • 전문가 시스템 • 심볼릭 AI • 자동 추론 • 지식 표현
👉 딥러닝 이전 AI의 주력
⸻
🧪 2) 연구·학계 • 프로그래밍 언어 연구 • 컴파일러 • 타입 시스템 • 계산 이론 실험
⸻
🛠️ 3) 도구·에디터 • Emacs (Emacs Lisp) • 자동화 툴 • 커스터마이징 가능한 시스템
⸻
🧬 4) 금융·특수 산업 (소수 정예) • 퀀트 시스템 • 복잡한 규칙 엔진 • 장기간 유지되는 내부 시스템
⸻
☕ 5) JVM 생태계 – Clojure • 금융 • 데이터 처리 • 함수형 백엔드
👉 Java의 단점을 보완하는 틈새
⸻
8️⃣ 왜 “소중한 언어”로 불릴까?
Lisp는: • 시장을 지배 ❌ • 생산성을 강요 ❌ • 대신에…
👉 프로그래밍의 본질을 가장 적나라하게 드러냄
그래서: • Alan Kay • Paul Graham • Guy Steele 같은 사람들이 극찬함
⸻
9️⃣ 개발자 관점에서 현실 조언 • 실무 언어로: • ❌ 주력 추천은 아님 • 사고 확장용으로: • ⭕ 한 번은 꼭 배워야 할 언어
👉 Lisp를 이해하면: • 왜 함수형이 나왔는지 • 왜 DSL이 강력한지 • 왜 매크로가 위험하면서도 매력적인지 전부 감이 와.
⸻
🔟 한 문장 정리
Lisp는 세상을 지배한 언어는 아니지만, 언어를 만드는 사람들의 언어다.
⸻
• Lisp 매크로가 왜 “사기급”인지
• Clojure vs Common Lisp 차이
• Lisp 사고방식이 Java/DB 설계에 주는 힌트