요약
1982년 논문은 더 나은 도구와 개발 환경이 프로그래밍의 성격을 빠르게 바꿀 것이라고 내다봤습니다.
1982년 Communications of the ACM에 실린 논문입니다. 원문 설명에 따르면 논문은 프로그래밍의 성격이 이미 바뀌고 있다고 봤습니다. 개발 방식이 나아지고 도구와 개발 환경이 정교해질수록 그 변화는 더 빨라질 것이라고 했습니다. 논문은 프로그래밍 작업에서 일어날 가능성이 큰 변화를 두루 살펴봅니다. ACM 디지털 도서관 페이지가 봇 확인 화면에 막혀 열리지 않았습니다. 원문을 읽지 못했습니다.
HN 반응
- 일부 이용자는 논문이 말한 자동 프로그래밍(명세만 주면 실행 프로그램이 나오는 방식)이 지금의 AI 코딩 도구와 닮았다고 짚었습니다.
- 1982년에도 AI가 프로그래밍을 대신한다며 전공을 말렸다는 경험담에, 그 뒤로 40년 경력을 쌓을 수 있었다는 반론이 붙었습니다.
제가 지금 1982년에 살고 있는 건가요?
오늘날 명세 주도 개발(spec-driven development)도 똑같은 처지에 있습니다.
"단기적으로는 개선된 도구와 통합 개발 환경을 통해 프로그래머 생산성을 높이는 데 초점이 맞춰진다."
1982년에 이미 어느 정도는 맞혔네요. AI를 직접 언급하지는 않았지만, 예를 들어 Claude는 코드 작성의 일부 영역에서는 일종의 "개선된 도구"라고 요약할 수 있겠습니다.
45년 전에 Claude 같은 것을 상상할 수 있었을 것 같지는 않습니다.
HAL 이후의 SF 속 AI들을 보면 대체로 실질적인 행위 능력은 제한적입니다. 따분한 자동화를 처리하고, 가끔 질문에 답하고, 권력을 찬탈하는 데는 좋지만, 독창적인 엔지니어링 문제를 푸는 일은 전혀 못 합니다.
국방과 얽힌 거대 컴퓨터 시스템인 스카이넷 같은 것은 상상하기 훨씬 쉽습니다. 모호한 명세만 던져도 동작하는 소프트웨어를 즉석에서 만들어 내는 Claude나 ChatGPT 같은 것에 비하면요.
"그냥 원하는 걸 만들라고 말하면 되면 좋을 텐데" 하는 순간은 과거에 많은 개발자가 겪었을 겁니다. 하지만 그게 실제로 가능해지리라고 예상한 사람은, 5년 전만 해도 없었을 거라고 생각합니다.
저는 1982년에 대학에서 무엇을 전공할지 고르는 중이었는데, AI가 프로그래밍을 장악할 테니 컴퓨터는 고르지 말라는 조언을 들었습니다. 사람이 할 수 있는 일자리가 별로 남지 않을 거라는 이유였습니다.
특히 https://en.wikipedia.org/wiki/Fifth_Generation_Computer_Systems 가 근거로 거론됐습니다.
그런 판단은 너무 일렀다고 생각하지 않으세요? 그때부터 지금까지 커리어를 한 번 온전히 쌓을 수도 있었을 텐데요.
저도 비슷한 시기에 대학에 들어갔는데, 이런 분위기는 전혀 기억나지 않습니다. 프로그래밍 자동화 이야기가 나오면 대개 불가능하다고 일축했고, 실제로 당시에는 불가능했습니다. 절대 일어나지 않을 거라고 말하는 사람이 꼭 있었던 것은 아니고, 아주 먼 미래의 일이라는 분위기였습니다. 사실상 2024년에 가능해졌고(그 뒤로 훨씬 좋아졌죠), 제가 예상했던 것보다 훨씬 빨랐습니다. 그래도 그 사이인 1984년부터 2024년까지 저는 꽤 괜찮은 커리어를 쌓을 수 있었습니다. (이제 은퇴해서 다행입니다. 40대나 50대에 이 상황을 마주하고 싶지는 않거든요.)
그 밖에도 훌륭한 SF는 많아요.
우선 Culture 시리즈(80년대에 시작됐죠)의 AI들은 사회 전체를 운영했고, 초인적이었고, 어떤 일이든 인간보다 본질적으로 더 잘했어요.
그래도 Claude 같은 "초고속 정보 처리 루프" 방식이 아니라 "독립적이고 지각이 있는" 부류의 AI이긴 했죠. 하지만 완전한 범용에다 독창적으로 사고하는 AI였고, 지금 우리가 가진 것보다 훨씬 앞서 있었어요.
어, 상상했었죠. :-) 클라크의 『2001 스페이스 오디세이』(1968년) 같은 "SF" 설정만 해도 HAL은 말을 걸어서 프로그래밍했잖아요. 그리고 일본의 컴퓨터 산업 지배를 굳힐 거라던 앞서 말한 "5세대" 컴퓨터 시스템도 있었고요.
그런데 중요한 건, 클라크 같은 사람들은 컴퓨터가 '추론'할 수 있게 되는 순간 인간이 자기들의 발목을 잡고 있다는 걸 알아챌 거라고 가정했다는 점이에요. 그래서 80년대와 90년대에도 엔지니어와 과학자들은 "스스로 프로그래밍하는" 컴퓨터, 또는 다른 컴퓨터를 프로그래밍하는 컴퓨터를 상상했고, 그게 프로그래머의 생산성을 높여 주는 만큼 불만 세력의 생산성도 높여 줄 거라는 것까지 이해하고 있었어요.
다만 컴퓨터가 여전히 기둥처럼 멍청한데도 초당 수조 개의 가능한 해법을 탐색할 수 있게 되는 상황은 그다지 깊이 생각하지 못했다고 해도 무방할 거예요. 암호 키를 의미 그대로 무차별 대입으로 찾는 건 키가 충분히 길면(엔트로피가 충분하면) '불가능'해요. 하지만 '키'가 "이 입력이 이 출력을 만든다"일 때는 엔트로피가 훨씬 작고, 입력에서 출력에 이르는 연산 집합을 찾는 일은 계산상 더 쉬운 문제가 되죠.
지금 우리가 맞이하고 있는 건 4GL과 일본의 5세대 컴퓨터 구상의 복수입니다. 둘 다 기존 언어의 진화로 여겨졌지만, 당시에는 기대만큼 널리 퍼지지 못했습니다.
두 문장만 더 읽으면 AI에 더 가까워지고, "perhaps"(아마도) 앞에서 읽기를 멈추면 더더욱 그렇습니다.
"장기적으로는 프로그래머가 원하는 기능을, 아마도 규칙 집합이나 형식 명세 언어를 통해, 비절차적인 방식으로 기술할 수 있게 되면서 프로그래밍의 성격이 훨씬 더 크게 바뀔 것이다."
시간이 지나면 또 튀어나오는 변종이 노코드 비주얼 프로그래밍이에요.
물론 계속 다시 등장하는 이유는 별로 자리를 못 잡기 때문이죠. 여기저기서 채용되는 직원이 있는데, 알고 보면 일주일 남짓마다 잘리니까 계속 새로 채용되는 것과 비슷해요.
C = NC