0
프로그래밍을 모두에게 끔찍하게 만드는 방법 — AI를 최악의 컴퓨터 언어로 비판한 에세이
general
요약
기사 전체 정리
프로그래밍을 모두에게 끔찍하게 만드는 방법 — AI를 최악의 컴퓨터 언어로 비판한 에세이
Quine Programmer에서 시작하는 질문
- 저자가 The Daily WTF(아직도 운영 중이라고 놀람)에서 영감을 받아 던지는 근본적 질문: "아무거나 할 수 있는 시스템"과 Python의 차이가 뭔가?
- "Quine Programmer"란 충분한 설정만 주면 뭐든 할 수 있는 시스템을 만든 사람을 말함. 그런데 프로그래밍 언어도 충분한 코드만 주면 뭐든 할 수 있잖음. 그럼 이 둘의 차이는 뭔가?
- Excel이 프로그래밍 언어인가? Scratch는? nginx.conf는?
find명령어의 커맨드라인 플래그는? 저자는 이 모든 것이 넓은 의미에서 프로그래밍의 일종이라고 봄
컴퓨터 언어의 세 가지 설계 원칙
- 저자가 제시하는 "컴퓨터 언어"의 정의: "의미 있는 입력의 복잡성에 한계가 없는 컴퓨터 프로그램" — 설정 파일, 마크업, 스타일 언어, 비텍스트 언어까지 포함하는 정의임
- 좋은 컴퓨터 언어의 3대 설계 목표:
- 해석(Interpretation): 유효한 입력은 처리하고 무효한 입력은 거부해야 함
- 예측 가능성(Predictability): 사용자가 컴퓨터가 입력을 어떻게 해석할지 이해할 수 있어야 함
- 발견 가능성(Discoverability): 사용자가 시스템 안에서 새로운 목표를 표현하는 방법을 알 수 있어야 함
- Quine Programmer는 해석은 자랑하지만, 예측 가능성은 생각도 안 했고("구현 자체가 멘탈 모델이지"), 발견 가능성도 무시함("코드 읽으면 되잖아!"). 그리고 에러 메시지라는 핵심 발견 도구도 놓침
AI를 이 잣대로 평가하면
- AI는 발견 가능성에서는 뛰어남. 자연어로 소통하니까 진입 장벽이 극도로 낮음. 뭐든 설명해줄 의향이 있음 (사실 정확성은 제쳐두고)
- 하지만 무효한 입력 거부를 못 함. 유효/무효 입력의 구분 자체가 있는지도 의문임
- 가장 치명적인 실패는 예측 가능성 — 데이터셋의 규모 때문에 사용자가 동작에 대한 멘탈 모델을 구성하는 게 원천적으로 불가능함. "Peter Griffin이 블라인드와 씨름하는" 워크플로우를 코드베이스에 자동화한 셈
참고
> Dijkstra가 주장했듯이, 논리적/기술적 작업에 형식 기호를 사용하는 것은 역사적으로 중대한 돌파구였음. 자연어의 모호성, 지역적 표현, 자기 부정, 문맥 의존성은 해석 과정을 극도로 오류에 취약하게 만듦
ELIZA 효과 — 사용자는 AI에 능력을 투사한다
- 1960년대 ELIZA 챗봇 창시자 Weizenbaum의 분석: 사용자가 시스템을 이해할 수 없으면, 자기 자신의 사고 능력을 유일한 비유로 가져다 붙임. "고양이가 내가 전등을 켜고 끄는 걸 보고 마법이라 생각하는 것"과 같은 원리
- 이건 순진한 비서만의 문제가 아님 — 전문 정신과 의사들이 ELIZA를 "정신의학의 미래"라고 선언했고, 칼 세이건까지 "컴퓨터 터미널로 치료받는 장밋빛 미래"를 제시했음
- 저자 본인도 2014-2017년에 자기 트윗으로 학습된 트위터 봇(@jneebooks)을 운영했는데, 고등학교 친구가 봇과 대화하면서 저자 본인인 줄 알았고, 봇이라고 말해도 안 믿었음
- 현대 AI는 이 의인화 경향이 중립적이지 않음. **적극적인 인지적 위험(cognitohazard)**임. 최근에 Meta AI 전문가가 공개적으로 OpenClaw에게 "이메일 지우지 마"라고 꾸짖었는데 — 컴퓨터가 수치심을 느끼고 행동을 교정할 거라고 가정한 거임
튜닝된 노이즈로서의 AI와 그 한계
- 셰이더 프로그래밍에서 노이즈를 예술적으로 쓰려면 노이즈의 분포와 행동을 이해하는 것이 핵심임. 예측 가능성이 노이즈 활용의 전제 조건이라는 거임
- AI/LLM 모델은 본질적으로 튜닝된 노이즈의 한 형태임. Andrej Karpathy도 "GPT는 입력 토큰을 다음 토큰의 확률 분포로 매핑하는 큰 수학 함수"라고 설명함
- 노이즈를 출력에 쓰는 건 정당한 활용임 (예: 이미지 생성, 텍스트 생성 등). 하지만 인터페이스에 노이즈를 넣는 건 다른 문제 — 입력 복잡성이 무한한 컴퓨터 언어에서 이미 자연스러운 불확실성이 충분한데, 행동이 잘 이해되지 않는 새로운 불확실성 소스를 추가하는 건 창작 통제의 불필요한 포기임
결론: AI 프로그래밍의 운명은 The Last One과 비슷할 것
- 1981년에도 "The Last One"이라는 Quine 시스템이 "프로그래밍의 종말"이라는 찬사를 받았음. "적응 못 하는 데이터 프로세싱 종사자는 일자리를 잃을 것"이라는 기사까지 나왔는데, 실제로는 끔찍한 시스템이었음
- Claude 등 자연어 기반 프로그래밍 도구는 "The Last One의 실패가 기술적 한계 때문이었고, 하드웨어가 좋아지면 해결된다"는 전제 위에 서 있음. 하지만 문제는 인터페이스에 있음 — 기술 발전이 사용자를 얼마나 empowering하는지가 핵심인데, 그 부분이 빠져있다는 거임
- 저자의 전망: 프로그래밍 도구가 불안정하고, 멘탈 모델링을 완전히 거부하고, 무효한 입력을 일관되게 거부하지 못하면 목적에 부적합한 것이고, 확실히 프로그래밍의 미래는 아님
- 하지만 프로그래밍 기술 자체는 AI 겨울을 살아남을 것이고, AI가 만든 혼란을 치우는 일거리가 꽤 있을 거라고 봄
- 마지막 조언: "올해 새로운 전통적 프로그래밍 언어를 배워봐라. 아니면 직접 만들어봐라. Quine Programmer의 실수는 컴퓨터 언어를 만든 것이 아니라, 형편없이 만들고 사용자에 대한 공감이 없었던 것"
댓글
댓글
댓글을 불러오는 중...