Show HN: Jacquard, a programming language for AI-written, human-reviewed code
개요
Jacquard는 AI가 작성하고 사람이 검토하는 코드를 실행, 검토, 시뮬레이션 및 신뢰할 수 있도록 설계된 FriendMachine의 연구 프로젝트이자 프로그래밍 언어입니다.
주요 내용
* 언어 특징:
* 간결한 .jac 표면 구문, OCaml 기반 검증기 및 CPS 인터프리터, C 생성 네이티브 AOT 백엔드, 커맨드라인 도구, Jacquard 자체로 작성된 표준 라이브러리, Warp 테스트 프레임워크를 포함합니다.
* 프로그램의 계산 내용뿐만 아니라 잠재적 효과(예: 네트워크 접근), 유한한 불확실성, 고유 프로그램 식별자를 명시적으로 노출합니다.
* 함수의 시그니처에 수행 가능한 효과를 명시하며, 런타임은 명시적으로 허용되지 않은 외부 효과를 거부합니다.
* 동일한 코드를 실제 네트워크, 모의 네트워크, 녹화된 트래픽, 서버 동작 확률 모델 등 다양한 "월드" 환경에서 실행할 수 있으며, 핸들러만 교체하면 됩니다.
* 유한 이산 모델의 정확한 확률을 열거할 수 있어, 가능한 모든 결과와 그 확률을 계산할 수 있습니다.
* 소스 바이트가 아닌 정규화된 구조의 해시를 사용하여 코드의 "정체성"을 결정하므로, 주석, 서식, 지역 변수 이름 변경 등은 식별성에 영향을 미치지 않습니다.
* AI 코드 작성을 위한 설계:
* AI가 작성한 코드에서 사람이 검토할 때 "무엇을 건드릴 수 있고 얼마나 확실한가"를 언어 자체에서 파악할 수 있도록 돕는 것을 목표로 합니다.
* 행동은 증거(테스트, 입력 파일 등)에 의해 고정되며, 테스트 실패는 변경에 대한 정보로 간주해야 합니다.
* 핵심 기술 요소:
* 27개의 형태로 구성된 균일한 표현 방식을 사용하며, 따옴표로 묶인 코드는 일반 데이터로 취급됩니다.
* 다중 샷 핸들러를 지원하는 대수적 효과(Algebraic effects)를 통해 계산을 여러 번 재개할 수 있습니다.
* 명시적인 권한 부여(capability grants)를 통해 외부 세계와의 상호작용을 제어합니다.
* 함수의 타입과 함께 수행 가능한 효과의 집합을 명시하는 타입-효과 행(Type-and-effect rows)을 사용합니다.
* 콘텐츠 주소 지정 가능한 정의(Content-addressed definitions)를 사용하여 코드의 정체성을 관리합니다.
* C 언어 코드를 생성하는 네이티브 AOT(Ahead-Of-Time) 컴파일러를 지원합니다.
* 출시 및 개발:
* 현재 0.1 버전은 연구 프로토타입이며, 프로덕션 언어가 아닙니다.
* OCaml 또는 opam 없이 설치 가능한 릴리스 바이너리가 제공됩니다.
* 개발 환경 설정 가이드 및 다양한 데모 예제, 릴리스 증거 자료가 포함되어 있습니다.
* Apache License 2.0에 따라 라이선스가 부여되었으며, 프로그램 자체의 저작권은 사용자에게 있습니다.
* 현재 한계점:
* 연구 프로토타입이며 프로덕션 플랫폼이 아닙니다.
* .jac 표면 구문은 진화 중인 v0 투영이며, 네이티브 AOT 컴파일, C 툴체인 최적화는 지원되지만 VM/JIT, 동시성, 연속 분포, 기울기, 형식적 건전성 증명 등은 지원되지 않습니다.
* 월드 권한 부여는 여전히 다소 거칠게(coarse) 적용됩니다.
시사점
Jacquard는 AI가 생성한 코드를 보다 안전하고 신뢰할 수 있게 관리하기 위한 새로운 접근 방식을 제시하며, 코드의 행동과 잠재적 영향을 언어 수준에서 명확하게 제어하고 검증하는 데 초점을 맞춥니다. 이는 향후 AI 기반 소프트웨어 개발 과정에서 사람이 수행하는 검토 및 디버깅 작업을 효율화하고 신뢰도를 높이는 데 기여할 수 있습니다.
댓글
GitHub Discussions