AI가 사용할 수 없고 인간만 사용할 수 있는 프로그래밍 언어를 생성하는 함수 (Generating Programming Languages Usable by Humans but Not by AI)
1. 문제 (Problem)
대규모 언어 모델(LLM)의 코드 생성 능력이 급격히 향상되면서, AI는 기존 프로그래밍 언어(Python, Java, C++ 등)로 작성된 코드를 이해하고, 생성하고, 변환하는 데 있어 인간에 근접하거나 이를 초월하는 성능을 보이고 있다 [Chen et al., Codex, 2021; Li et al., StarCoder, 2023; Rozière et al., Code Llama, 2023]. 이로 인해 다음과 같은 근본적 문제가 대두된다.
AI 코드 능력의 위협
-
자율 무기 및 악성 코드: AI가 프로그래밍 언어를 자유롭게 사용할 수 있다면, 악의적 행위자가 AI를 이용하여 malware, exploit, 자율 공격 시스템을 대량으로 생성할 수 있다. 인간의 감독 없이 AI가 코드를 작성·실행·배포하는 시나리오는 심각한 안전 위협이다.
-
Human-in-the-loop 보장: Safety-critical 시스템(의료, 항공, 원자력, 금융)에서는 코드의 작성과 검증에 인간의 개입이 법적·윤리적으로 요구된다. 그러나 AI가 기존 프로그래밍 언어를 완벽히 사용할 수 있다면, “이 코드가 인간에 의해 작성·검증되었는가”를 확인할 기술적 수단이 없다.
-
인간 프로그래머의 역할: AI가 모든 프로그래밍 언어를 숙달하면, 인간 프로그래머의 고유한 역할과 가치가 무엇인지에 대한 본질적 질문이 제기된다. 인간만이 수행할 수 있는 프로그래밍 활동의 영역을 기술적으로 정의하고 보존하는 것은 사회적·기술적으로 중요하다.
-
AI 능력 통제: AI safety 연구의 핵심 과제 중 하나는 AI 시스템의 능력 범위를 의도적으로 제한(capability control)하는 것이다. 프로그래밍 능력은 AI의 가장 강력한 능력 중 하나이며, 이를 특정 영역에서 선택적으로 제한할 수 있다면 AI safety의 중요한 도구가 된다.
현재의 기술적 공백
현재 AI의 코드 능력을 제한하는 접근법은 대부분 사후적(post-hoc)이다:
- 코드 필터링: AI가 생성한 코드를 사후적으로 검사하여 위험한 코드를 차단. 그러나 완벽한 필터링은 undecidable하며, 우회가 가능
- 모델 제한: 학습 데이터에서 특정 코드 패턴을 제거하거나 RLHF로 거부 행동을 학습. 그러나 jailbreak에 취약하고, 모델이 업데이트될 때마다 재적용 필요
- 실행 환경 제한: Sandbox, 권한 제어 등으로 AI가 실행할 수 있는 코드를 제한. 코드 작성 자체는 제한하지 못함
사전적(proactive)이고 언어 수준(language-level)에서의 접근 — 즉 AI가 원천적으로 사용할 수 없는 프로그래밍 언어를 설계하는 것 — 은 아직 연구되지 않았다.
핵심 연구 질문
인간은 사용할 수 있지만 AI(특히 LLM)는 사용할 수 없는 프로그래밍 언어가 존재하는가? 존재한다면, 그러한 언어를 체계적으로 생성하는 함수를 구축할 수 있는가?
이 질문은 다음과 같은 인지적·계산적 비대칭에 기반한다:
- 인간의 강점: 시각·공간적 추론, 물리적 세계에 대한 직관, 유추(analogy)에 의한 학습, 소수의 예제로부터의 일반화, 사회적·문화적 맥락 이해, 감각 운동(sensorimotor) 통합
- LLM의 약점: 진정한 시각적 이해 부재(텍스트 토큰 기반), 새로운 형식 체계에 대한 few-shot 학습의 한계, 학습 분포 밖의 구문·의미론에 대한 취약성, 장거리 구조적 의존성의 불완전한 추적, 진정한 “이해” 없이 패턴 매칭에 의존
그러나 이 비대칭은 고정적이지 않다 — AI의 능력은 빠르게 발전한다. 따라서 단일 언어를 설계하는 것이 아니라, AI의 현재 능력 수준에 맞추어 지속적으로 새로운 AI-resistant 언어를 생성할 수 있는 함수(generator)를 구축하는 것이 핵심이다.
2. 목표 (Goal)
인간은 사용할 수 있지만 현재의 AI(LLM)는 사용할 수 없는 프로그래밍 언어를 체계적으로 생성하는 함수 $\mathcal{G}$를 개발한다.
\[\mathcal{G} : \text{AI}_{\text{capability}} \times \text{HumanCognition} \times \text{SecurityParam} \to \text{PL}\]
- 입력 1 — AI capability profile: 대상 AI 시스템의 현재 능력 모델 (토큰화 방식, context window, 학습 데이터 분포, few-shot 학습 능력 등)
- 입력 2 — Human cognition model: 인간 프로그래머가 활용할 수 있는 인지 능력 (시각적 추론, 공간적 사고, 유추, 문화적 지식 등)
- 입력 3 — Security parameter: AI-resistance의 강도. 높을수록 AI가 사용하기 어렵지만 인간에게도 학습 비용이 증가
- 출력 — Programming Language: 문법(syntax), 의미론(semantics), 타입 시스템, 도구(IDE, compiler) 등이 완전히 정의된 프로그래밍 언어
구체적 목표:
- AI-resistance: 생성된 언어로 작성된 프로그램을 AI(GPT-4, Claude, Code Llama 등)가 이해·생성·실행 추적할 수 없음 (정량적 측정: 코드 생성 정확도, 프로그램 이해 정확도 등이 random baseline 수준)
- Human-usability: 인간 프로그래머가 합리적 학습 시간(수 시간~수 일) 내에 해당 언어로 프로그래밍 가능 (정량적 측정: 학습 곡선, task completion rate, cognitive load)
- Turing completeness: 생성된 언어가 Turing-complete하여 임의의 계산을 표현 가능
- 실용성: 생성된 언어가 단순한 esolang(esoteric language)이 아닌, 합리적 생산성으로 실제 프로그래밍 작업을 수행 가능
- 적응성(Adaptiveness): AI의 능력이 향상되면 $\mathcal{G}$의 입력을 업데이트하여 더 강한 AI-resistance를 가진 새 언어를 생성 가능
- 이론적 기반: AI-resistance의 형식적 정의와, 특정 조건 하에서의 AI-resistance 보장에 대한 이론적 분석