핵심 개념
매우 적은 리소스 프로그래밍 언어(VLPL)에서 텍스트-코드 변환을 위한 합성 프로그래밍 유도 및 컴파일(SPEAC)이라는 새로운 접근 방식을 제안합니다. SPEAC는 LLM이 자연스럽게 사용하는 중간 언어를 설계하고 이를 대상 VLPL로 자동 컴파일합니다.
초록
SPEAC: VLPL을 위한 새로운 텍스트-코드 생성 접근 방식
본 연구 논문에서는 매우 적은 리소스 프로그래밍 언어(VLPL)에서 텍스트-코드 변환을 위한 합성 프로그래밍 유도 및 컴파일(SPEAC)이라는 새로운 접근 방식을 제안합니다. VLPL은 내부 도구용 도메인 특정 언어, 레거시 언어용 도구 체인, 형식 검증 프레임워크 등 중요한 환경에서 나타납니다. 그러나 기존의 대규모 언어 모델(LLM)은 사전 훈련에서 표현되지 않은 프로그래밍 언어, 즉 VLPL에서 구문적으로 올바른 프로그램을 작성하는 데 어려움을 겪습니다.
SPEAC는 두 가지 핵심 아이디어를 기반으로 합니다.
1. LLM에 "자연스러운" 중간 언어 설계
첫 번째 아이디어는 자연 프로그래밍 유도에서 비롯됩니다. 이는 프로그래밍 언어 설계자가 프로그래머가 주어진 프로그래밍 도메인에서 "자연스럽게" 문제에 접근하는 방식을 이해하도록 돕는 연구입니다. SPEAC는 이 아이디어를 빌려와 LLM이 "사용자"인 환경에 적용합니다. 인간 사용자에게 특정 도메인에 대해 무엇이 "자연스러운지"를 밝히는 것과 유사하게 SPEAC는 LLM이 무엇을 "자연스럽게" 생각하는지 밝혀냅니다. 즉, LLM의 경향을 수용하고 이러한 LLM 기대에 부합하는 중간 언어를 설계합니다.
2. LLM "사용자"를 위한 공격적인 프로그램 분석 및 복구
SPEAC의 두 번째 핵심 아이디어는 인간 사용자에게 지나치게 공격적인 프로그램 분석 및 복구가 LLM "사용자"에게는 적합할 수 있다는 것입니다. 예를 들어 UCLID5에서 모든 변수는 선언되고 정적으로 유형이 지정되어야 합니다. 하지만 LLM이 선언 없이 할당이 있는 코드를 생성하는 경우 중단하는 대신 프로그램을 자동으로 "복구"하고 결과를 출력할 수 있습니다.
SPEAC는 대상 VLPL T에 대해 중간 언어 P("부모" 언어)를 선택하고 언어 C("자식" 언어)의 하위 집합을 정의하기 위해 합성 프로그래밍 유도를 사용합니다. 언어 P는 LLM이 생성을 잘하는 언어여야 하고(예: Python), 언어 C는 대상 VLPL T로 쉽게 컴파일할 수 있어야 합니다. SPEAC는 P, C 및 C에서 T로의 컴파일러를 사용하여 VLPL T에 대한 텍스트-코드 파이프라인을 생성합니다. 이 파이프라인은 연역적 기법을 사용하여 P에 있지만 C에는 없는 LLM에서 생성된 프로그램을 자동으로 복구합니다. 이러한 연역적 기법으로 프로그램을 완전히 복구할 수 없는 경우 "구멍"을 삽입하고 LLM에 복구를 완료하도록 요청하여 필요에 따라 반복합니다.